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