HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/sbin/remove-shell
#!/bin/sh -e

if test $# -eq 0
then
        echo "usage: $0 shellname [shellname ...]" 1>&2
        exit 1
fi

file=/etc/shells
# I want this to be GUARANTEED to be on the same filesystem as $file
tmpfile="${file}.tmp"
otmpfile="${file}.tmp2"

set -o noclobber

cleanup() {
	rm -f "$tmpfile" "$otmpfile"
}
trap cleanup EXIT

if ! cat "$file" > "$tmpfile"
then
        cat 1>&2 <<EOF
Either another instance of $0 is running, or it was previously interrupted.
Please examine ${tmpfile} to see if it should be moved onto ${file}.
EOF
        exit 1
fi

# this is supposed to be reliable, not pretty
for i
do
        REALDIR="$(dirname "$(realpath -m "$i")")/$(basename "$i")"
        for j in "$i" "$REALDIR"
        do
                grep -v "^${j}$" "$tmpfile" > "$otmpfile" || true
                mv "$otmpfile" "$tmpfile"
        done
done

chmod --reference="$file" "$tmpfile"
chown --reference="$file" "$tmpfile"

mv "$tmpfile" "$file"

trap "" EXIT
exit 0