sudo命令允许您以另一个用户身份运行程序,默认情况下是root用户。如果你在命令行的权限上花了很多时间,sudo就是你经常使用的命令之一
使用sudo而不是以root身份登录会更安全,因为您可以在不知道root密码的情况下为单个用户授予有限的权限,在本教程中,我们将解释如何使用sudo命令。
安装Sudo
sudo包预装在大多数Linux发行版上。
要检查系统上是否安装了sudo软件包,请打开控制台,键入sudo并按Enter。如果您安装了sudo,系统将显示一条简短的帮助消息,否则您将看到类似的内容sudo command not found。
如果未安装sudo,您可以使用发行版的软件包管理器轻松安装它。
在Ubuntu和Debian上安装Sudoapt install sudo
在CentOS和Fedora上安装Sudoyum install sudo
将用户添加到Sudoers
默认情况下,大多数Linux发行版授予sudo访问权限就像将用户添加到文件中定义的sudo组一样简单。该组的成员将能够以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组,请将用户添加到该sudoers文件中。
例如,要允许用户myfreax仅以sudo 身份运行mkdir命令,请键入:sudo visudo
并附加以下行:myfreax ALL=/bin/mkdir
在大多数系统上,该visudo命令/etc/sudoers使用vim文本编辑器打开文件。如果您没有使用vim的经验
您还可以允许用户在不验证自身的情况下运行sudo命令:myfreax ALL=(ALL) NOPASSWD: ALL
如何使用Sudo
该sudo命令的语法如下:sudo OPTION.. COMMAND
该sudo命令有许多控制其行为的选项,但通常sudo以最基本的形式使用,没有任何选项。
要使用sudo,只需在命令前加上sudo:sudo command
Sudo将读取/etc/sudoers文件并检查调用用户是否被授予sudo。在第一次在会话中使用sudo时,系统将提示您输入用户密码,命令将以root身份执行。
例如,要列出/root您将使用的目录中的所有文件:sudo ls /root[sudo] password for myfreax:
. .. .bashrc.cache.config .local .profile
密码超时
默认情况下,sudo会在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“myfreax”用户身份运行命令:sudo -u myfreax whoami
whoami命令将打印运行该命令的用户的名称:myfreax
如何使用Sudo重定向
如果您尝试将命令的输出重定向到您的用户没有写权限的文件,您将收到“权限被拒绝”错误。sudo echo “myfreax” > /root/file.txtbash: /root/file.txt: Permission denied
发生这种情况是因为>输出的重定向“myfreax”是在您登录的用户下执行的,而不是由sudo指定的用户。重定向在sudo调用命令之前发生。
一种解决方案是使用sudo sh -c以下方法以root身份调用新shell :sudo sh -c ‘echo “test” > /root/file.txt’
另一种选择是将输出作为普通用户传递给tee命令,如下所示:echo “test” | sudo tee /root/file.txt
如果您有任何疑问,请随时发表评论。
今天的文章sudu在linux的命令,Linux的sudo命令分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28878.html