sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & sudo chmod 440 /etc/sudoers.d/$(logname)
我使用上面的单线来允许当前用户在远程连接的主机上执行 sudo 而无需密码。
但究竟是$(logname)
什么?
在本地机器上,echo $(logname)
什么都不返回,而返回echo $LOGNAME
,所以它不是环境变量,尽管我从未见过远程机器上的值有任何不同。
另外,是否还有其他类似的$(foo)
变量(或任何它们被称为的变量)?
logname(1)是一个返回当前用户登录名的命令。
$( ... )
是命令替换的语法,即“在此处替换命令的输出”因此,如果您的用户是
foo
您正在执行: