sudo
昇格した権限でコマンドを実行することを承認する前に、呼び出しスクリプトを実行しているか、sudo
コマンドで変数/エスケープ/サブシェルを使用しているかにかかわらず、コマンドが理解されていることを確認したいと思います。
私のユーザーパスワードを尋ねるときにsudo
実行するコマンドの印刷を要求する方法はありますか?
このような:
$ sudo some command with parameters
sudo: about to run ``some command with parameters``
Password:
答え1
sudo -l <somecommand> <someparameters>
コマンドがセキュリティポリシーによって指定され、許可されている場合、コマンドへの完全なパスはコマンドライン引数とともに表示されます。
これはから抜粋したものです。man sudo
-l, --list If no command is specified, list the allowed (and forbidden) commands for the invoking user (or the user speci‐
fied by the -U option) on the current host. A longer list format is used if this option is specified multiple
times and the security policy supports a verbose output format.
If a command is specified and is permitted by the security policy, the fully-qualified path to the command is
displayed along with any command line arguments. If command is specified but not allowed, sudo will exit with
a status value of 1.
答え2
sudo呼び出しの前に「set -x」を追加してください。
[steve@centos8 ~]$ cat x1
#!/bin/bash
echo foo
set -x
sudo id
set +x
echo bar
[steve@centos8 ~]$ ./x1
foo
+ sudo id
[sudo] password for steve:
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
+ set +x
bar
[steve@centos8 ~]$
答え3
sudoはこの機能を提供しないので、関数を定義するだけです。
echo_run(){
echo "About to run [$@]"
"$@"
}
# Then you can do : echo_run sudo vim test.sh