Linux中的Sudo命令
sudo命令允许您以其他用户(默认情况下为root用户)运行程序。 如果您在命令行上花费大量时间,那么sudo是您将经常使用的命令之一。
使用sudo代替以root用户身份登录更安全,因为您可以向单个用户授予有限的管理权限,而无需他们知道root用户密码。
在本教程中,我们将说明如何使用 sudo
命令。
安装Sudo(未找到sudo命令)#
sudo软件包已预先安装在大多数Linux发行版中。
要检查系统上是否安装了sudo软件包,请打开控制台,键入 sudo
,然后按 Enter
。 如果您已安装sudo,系统将显示一条简短的帮助消息,否则您将看到类似 sudo command not found
。
如果未安装sudo,则可以使用发行版的软件包管理器轻松安装它。
在Ubuntu和Debian上安装Sudo#
apt install sudo
在CentOS和Fedora上安装Sudo
yum install sudo
将用户添加到Sudoers#
默认情况下,在大多数Linux发行版中,授予sudo访问权限就像将用户添加到sudo组中定义的一样简单。 sudoers
文件。 该组的成员将能够以root用户身份运行任何命令。 组的名称可能因分发而异。
在基于RedHat的发行版(例如CentOS和Fedora)上,sudo组的名称为 wheel
。 要将用户添加到组,请运行:
usermod -aG wheel username
在Debian,Ubuntu及其衍生产品上,该小组的成员 sudo
被授予sudo访问权限:
usermod -aG sudo username
出于安全原因,Ubuntu中的root用户帐户默认是禁用的,并且鼓励用户使用sudo执行系统管理任务。 由Ubuntu安装程序创建的初始用户已经是sudo组的成员,因此,如果您正在运行Ubuntu,则很有可能已经以sudo权限授予了您登录的用户身份。
如果要允许特定用户以sudo身份仅运行某些程序,则无需将用户添加到sudo组中,而是将用户添加到sudo组中。 sudoers
文件。
例如允许用户 linuxize
只运行 mkdir
命令为sudo,键入:
sudo visudo
并添加以下行:
linuxize ALL=/bin/mkdir
在大多数系统上, visudo
命令打开 /etc/sudoers
vim文本编辑器打开文件。 如果您没有使用vim的经验,请查看我们有关如何保存文件并退出vim编辑器的文章。
您还可以允许用户在不输入密码的情况下运行sudo命令:
linuxize ALL=(ALL) NOPASSWD: ALL
如何使用Sudo#
的语法 sudo
命令如下:
sudo OPTION.. COMMAND
的 sudo
该命令具有许多控制其行为的选项,但通常 sudo
以其最基本的形式使用,没有任何选择。
要使用sudo,只需在命令前添加前缀 sudo
:
sudo command
哪里 command
是您要使用sudo的命令。
须藤会读 /etc/sudoers
文件,并检查是否向调用用户授予sudo评估。 第一次在会话中使用sudo时,系统将提示您输入用户密码,并且该命令将以root用户身份执行。
例如,要列出 /root
您将使用的目录:
sudo ls /root
[sudo] password for linuxize:
. .. .bashrc .cache .config .local .profile
密码超时编号
默认情况下,sudo闲置五分钟后会要求您再次输入密码。 您可以通过编辑 sudoers
文件。 使用打开文件 visudo
:
sudo visudo
通过添加以下行来设置默认超时,其中 10
是以分钟为单位指定的超时:
Defaults timestamp_timeout=10
如果只想更改特定用户的时间戳,请添加以下行,其中user_name是有问题的用户。
Defaults:user_name timestamp_timeout=10
以root用户以外的用户身份运行命令
有错误的认识 sudo
仅用于向普通用户提供root权限。 其实你可以用 sudo
以任何用户身份运行命令。
的 -u
选项允许您以指定用户身份运行命令。
在以下示例中,我们使用 sudo
运行 whoami
以用户“ richard”的身份执行命令:
sudo -u richard whoami
的 whoami
命令将打印运行命令的用户的名称:
richard
如何使用Sudo重定向
如果您尝试将命令的输出重定向到用户没有写权限的文件,则会出现“权限被拒绝”错误。
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
发生这种情况是因为重定向“>
输出”将在您登录的用户(而不是sudo指定的用户)下执行。 重定向发生在 sudo
命令被调用。
一种解决方案是使用以下命令作为根调用新的shell: sudo sh -c
:
sudo sh -c 'echo "test" > /root/file.txt'
另一个选择是将输出作为常规用户传递到 tee
命令如下图:
echo "test" | sudo tee /root/file.txt
结论#
您已经了解了如何使用 sudo
命令以及如何使用sudo权限创建新用户。
如有任何疑问,请随时发表评论。
终端须藤