Re: Using the bash shell: determine if the root user used 'sudo -i'
On Sat, Aug 26, 2023 at 12:09:57PM -0400, Tom Browder wrote:
> Excellent mind-reading, Greg! So to use your line I will put in that dir:
> "cd /required-dir || exit"
>
> Thanks so much. And thanks to all others who responded.
If you're running bash, the safest way to find your current working
directory is capturing the output from /bin/pwd. Symlinked directories
can surprise you:
me$ cd
me$ ls -ldF today
lrwxr-xr-x 1 me mis 18 Aug 26 00:03 today@ -> notebook/2023/0826
me$ cd today
me$ pwd
/home/me/today
me$ /bin/pwd
/home/me/notebook/2023/0826
me$ echo $PWD
/home/me/today
If you want to know why you had an early exit:
me$ cat try
#!/usr/bin/env bash
# try: test logging.
export PATH=/usr/local/bin:/bin:/usr/bin
set -o nounset # check for unbound variables.
tag=${0##*/}
umask 022
# Test file descriptor 2 for interactive or cron use.
test -t 2
case "$?" in
0) logmsg () { echo "$(date '+%F %T') $tag: $@"; } ;;
*) logmsg () { logger -t $tag "$@"; } ;;
esac
warn () { logmsg "WARN: $@" ; }
die () { logmsg "FATAL: $@"; exit 1 ; }
# Real work starts here.
case "$#" in
0) die "need a directory" ;;
*) dir="$1" ;;
esac
test -d "$dir" || die "$dir: not a directory"
cd "$dir" || die "$dir: cannot cd"
cwd=$(/bin/pwd)
logmsg "start working in $cwd"
exit 0
On FreeBSD, you can use "daemon" to run something detached from the
controlling terminal, which simulates running a cron job:
me$ ls -ldF /etc /var/authpf
drwxr-xr-x 27 root wheel 120 26-Aug-2023 07:55:02 /etc/
drwxrwx--- 2 root authpf 2 05-Jul-2019 00:45:45 /var/authpf/
me$ ./try /etc
2023-08-26 18:31:54 try: start working in /etc
me$ daemon -f $PWD/try /etc
me$ daemon -f $PWD/try /var/authpf
me$ tail -2 /var/log/syslog
Aug 26 18:19:17 myhost try: start working in /etc
Aug 26 18:19:19 myhost try: FATAL: /var/authpf: cannot cd
Hope this helps.
--
Karl Vogel I don't speak for anyone but myself.
Oh, my darlin' had bronchitis and she barfed up half a lung,
what came up looked quite amazing when she rolled it on her tongue.
--sung to the tune of "My Darling Clementine"
Reply to: