“ sudo -s”实际上是做什么的?


26

我正在使用ubuntu 10.04。

我注意到在终端中运行“ sudo -s ”后,提示从

XXX @ XXX

root @ XXX ”,

似乎已更改为root特权。

但是,当我在这里查看“ sudo”命令的文档时,它解释了“ sudo -s”的另一个故事,有人可以向我解释“ sudo -s ”到底在做什么吗?



7
为什么选择askubuntu.com? sudo几乎不是特定于Ubuntu的...
Dave Sherohman 2011年

Answers:


9

两者并不是真正不一致的-该sudo命令总是将用户更改为root或您使用-u开关指定的用户。所有这些-s都是为以该用户身份启动Shell提供快捷方式。它实际上等效于:

sudo $SHELL

除非它可能会回退到/bin/sh或未SHELL设置。


6

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 包含当前正在运行的程序的名称/路径(在这种情况下为外壳程序)。

3

从手册中:

sudo允许被允许的用户以超级用户或另一个用户的身份执行命令,如sudoers文件中所指定。

-s Shell,运行由SHELL环境变量指定的shell(如果已设置)或passwd(5)中指定的shell。

更严重的是,sudo -s运行一个shell环境变量。由于您没有添加任何变量,因此它将按照passwd中的指定运行,因此请以root用户身份连接。


1
从手册中看不出来,如果不提供用户,则默认为root。您必须阅读说明-u以了解该选项。但是对于一个不熟悉的人sudo,他们不知道看-u
Wisbucky


0

听起来好像是在当前shell之上创建shell的另一个实例,但是具有root特权。我敢打赌,输入后,sudo -s如果您键入exit,您将回到原始shell。


-1

sudo -s使您可以运行已被预先授权的命令(请参见/ etc / sudoers),方法是要求您确认当前ID。

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.