Vad*_*der 92 command-line sudo su
我知道我可以通过su
命令成为 root(超级用户),但我必须在输入命令后对其进行授权。有没有一种方法可以成为 root 并在一行中授权(使用密码)
ter*_*don 93
嗯,我唯一能想到的就是
echo 'password' | sudo -S command
Run Code Online (Sandbox Code Playgroud)
该-S
标志使sudo
从标准输入读取密码。如中所述man sudo
:
-S, --stdin
将提示写入标准错误并从标准输入读取密码,而不是使用终端设备。密码后必须跟一个换行符。
所以,要ls
以sudo
特权运行,你会这样做
echo 'password' | sudo -S ls
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的sudo
访问令牌处于活动状态,如果您不需要输入密码,因为您最近已经这样做了,这将产生错误。为了解决这个问题,您可以使用-k
重置访问令牌:
echo 'password' | sudo -kS ls
Run Code Online (Sandbox Code Playgroud)
我不知道有什么方法可以让您进入实际的 root shell(如su
或sudo -i
)。不过,这可能足以满足您的需要。
Din*_*Din 92
在终端中运行visudo
命令来编辑sudoers文件:
sudo visudo
Run Code Online (Sandbox Code Playgroud)
并将以下行添加到sudoers 列表中
username ALL = NOPASSWD : ALL
Run Code Online (Sandbox Code Playgroud)
注:更换用户名与你的真实用户名上面一行。
小智 30
该echo 'password' | sudo -kS ls
解决方案有效,但它有一些安全缺陷,其中大部分已在对 terdon 的回答的评论中提到。因此,我想建议一种不同的方法:
如果只需要一个命令,你经常需要执行,例如apt-get upgrade
,你可以配置你的系统,使得sudo someCommand
它不要求输入密码。
为此,请运行visudo
并输入类似于以下内容的内容:
myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
请注意,如果您输入一个没有参数的命令(例如,upgrade
在本例中没有),用户将被允许使用任何参数运行它,因此请谨慎使用。
小智 17
你也可以这样做:
sudo -S <<< "password" command
Run Code Online (Sandbox Code Playgroud)
Shi*_*hah 10
您可以增加超时时间,而不是完全删除密码,这样您每天只需输入几次;在终端中,运行:
sudo visudo
Run Code Online (Sandbox Code Playgroud)
在文件末尾,添加以下行以将超时设置为 30 分钟(替换jsmith
为您的用户名)。
Defaults:jsmith timestamp_timeout=30
Run Code Online (Sandbox Code Playgroud)
您可以使用任何您想要的号码;-1
表示无超时(仅第一次提示),0
表示即时超时(每次提示sudo
)。默认超时为 5 分钟。
归档时间: |
|
查看次数: |
291413 次 |
最近记录: |