我想阻止用户使用该su
命令,因此我在/etc/sudoers
文件中阻止了该命令,如下所示:
%group ALL=(ALL:ALL) NOPASSWD:!/bin/su
Run Code Online (Sandbox Code Playgroud)
但是使用 中的这条规则sudoers
,他们无法执行sudo <command>
命令,从而导致错误:
Sorry, user xxxx is not allowed to execute 'command' as root on <host>
Run Code Online (Sandbox Code Playgroud)
有没有程序sudo
依赖的方法su
?
在我学习非交互式登录 shell 的过程中,我遇到了 2 种通过 SSH 远程执行命令的方法。对我来说,它们看起来都是一样的。但不幸的是,他们不是。
使用命令echo "shopt login_shell; echo \$-" | ssh -l poweruser 192.168.1.67
,我得到以下输出。
Pseudo-terminal will not be allocated because stdin is not a terminal.
poweruser@192.168.1.67's password:
login_shell on
hBs
Run Code Online (Sandbox Code Playgroud)
但是使用命令ssh -l poweruser 192.168.1.67 "shopt login_shell; echo \$-"
,我得到了不同的输出。
poweruser@192.168.1.67's password:
login_shell off
hBc
Run Code Online (Sandbox Code Playgroud)
你能告诉我为什么在第二种情况下 shell 不是登录 shell,即使它提示输入密码。