有单行命令可以执行su吗?


15

我可以su使用su <username>并要求输入密码。是否有密码参数,su这样不会提示我输入密码?

例如 su <username> -p <password>


这个问题似乎恰好适合超级用户:superuser.com :-)
HongboZhu 2013年


1
我是从superuser这里得到的,superuser.com
questions / 67765 /…

Answers:


12

如果您想编写一个以其他用户身份运行的脚本,则类似的方法可以正常工作,尽管它会输出单词“ password”而不用换行符来表示标准输出

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

如果您有一个名为fred且密码为1234的用户,并且想要获得fred的主目录的ls作为fred,而未显示密码字符串,则看起来像

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!

2
嗯,“标准位必须是tty”
约翰·劳伦斯·阿斯普登

我收到相同的错误
MaxV

12
出现错误:su: must be run from a terminal
Abhishek Kashyap '18

5

我相信,没有,那将不是一个好主意。原因如下:
如果您在像这样的命令中输入密码,密码su <username> -p <password>将以纯文本形式存储在bash历史记录中。这无疑是一个巨大的安全问题。

如果您需要使用su(或sudo)自动运行命令,请编写一个包含脚本的shellscript,不带susudo并运行su <username> script.sh


1
su root script 仍然需要输入passwd。
戴开贤

@DaiKaixian是的,但是它没有保存在任何地方,没有人可以阅读
Wayne_Yux

2
您可以尝试类似:的方法echo <passwd> | sudo -S <command-line>。虽然它并不安全,但是可以。
戴开宪

1
我的回答的全部重点是,在命令中写密码不是省去的。因此,我建议要这样做
Wayne_Yux

-3

如果要以新用户身份执行某些特定命令,请使用以下命令:
sudo -u {username} {command to be executed as the new user}


这不能回答问题。问题是关于如何处理密码。
斯蒂芬·C
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.