Cer*_*rin 11 linux sudo ubuntu
您如何使用 sudo 在 Ubuntu 上以实际 root 用户身份运行命令?我原本以为这是 sudo 的默认行为,直到我运行:
myuser@localhost:~$ sudo echo `whoami`
myuser
myuser@localhost:~$ sudo -u root echo `whoami`
myuser
Run Code Online (Sandbox Code Playgroud)
但是,这是我想要的行为类型,但仅在一行中:
myuser@localhost:~$ sudo su -
root@localhost:~# echo `whoami`
root
Run Code Online (Sandbox Code Playgroud)
Fat*_*ror 26
事实上,它确实以 root 身份运行它们。但是,发生在您身上的是在 sudo运行之前正在评估反引号,因为它们需要评估命令。更直接,为什么不只是这个:
sudo whoami
Run Code Online (Sandbox Code Playgroud)
您的whoamiin back tick 实际上在子 shell 中作为当前用户进行评估,这就是为什么您会看到您所做的事情。
子shell ( whoami) 像你一样首先执行,结果( myuser) 被放入sudo命令中;什么sudo看到的是echo myuser。将其视为以下操作的快捷方式:
tmpvar=`whoami`
sudo echo "$tmpvar"
Run Code Online (Sandbox Code Playgroud)
小智 2
sudo echo `whoami`
Run Code Online (Sandbox Code Playgroud)
返回您的姓名,因为whoami在 sudo 运行之前更改了您的用户名。就像是:
sudo echo myname
Run Code Online (Sandbox Code Playgroud)
你可以看到这些代码:
myname@mypc:~$ whoami
myname
myname@mypc:~$ sudo whoami
root
myname@mypc:~$ echo `whoami`
myname
myname@mypc:~$ sudo echo `whoami`
myname
myname@mypc:~$ sudo `echo whoami`
root
myname@mypc:~$ sudo -i
[sudo] Password for myname: ******
root@mypc:~$ whoami
root
root@mypc:~$ echo `whoami`
root
Run Code Online (Sandbox Code Playgroud)
谢谢
| 归档时间: |
|
| 查看次数: |
10435 次 |
| 最近记录: |