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: