我正在使用ubuntu 10.04。
我注意到在终端中运行“ sudo -s ”后,提示从
“ XXX @ XXX ”
至
“ root @ XXX ”,
似乎已更改为root特权。
但是,当我在这里查看“ sudo”命令的文档时,它解释了“ sudo -s”的另一个故事,有人可以向我解释“ sudo -s ”到底在做什么吗?
sudo
几乎不是特定于Ubuntu的...
我正在使用ubuntu 10.04。
我注意到在终端中运行“ sudo -s ”后,提示从
“ XXX @ XXX ”
至
“ root @ XXX ”,
似乎已更改为root特权。
但是,当我在这里查看“ sudo”命令的文档时,它解释了“ sudo -s”的另一个故事,有人可以向我解释“ sudo -s ”到底在做什么吗?
sudo
几乎不是特定于Ubuntu的...
Answers:
sudo -s
将$SHELL
环境变量中指定的外壳程序作为超级用户/ root运行。您可以使用指定其他用户-u
。
该$SHELL
环境变量包含路径到用户的默认登录shell。默认Shell程序的实际设置通常为etc/passwd
。根据您在当前会话中所做的事情,$ SHELL变量可能不包含您当前正在使用的shell程序。例如,如果您使用zsh自动登录,然后调用bash,则$ SHELL不会从更改/bin/zsh
。
显示当前的用户和外壳程序:
echo $(whoami) is logged in and shell is $0
whoami
打印出用户正在使用的用户名。$0
包含当前正在运行的程序的名称/路径(在这种情况下为外壳程序)。从手册中:
sudo允许被允许的用户以超级用户或另一个用户的身份执行命令,如sudoers文件中所指定。
-s Shell,运行由SHELL环境变量指定的shell(如果已设置)或passwd(5)中指定的shell。
更严重的是,sudo -s运行一个shell环境变量。由于您没有添加任何变量,因此它将按照passwd中的指定运行,因此请以root用户身份连接。
-u
以了解该选项。但是对于一个不熟悉的人sudo
,他们不知道看-u
。
听起来好像是在当前shell之上创建shell的另一个实例,但是具有root特权。我敢打赌,输入后,sudo -s
如果您键入exit,您将回到原始shell。