sudo命令允许您以其他用户身份运作命令与操作程序,默认是root用户。如果你是个命令行用户,那般sudo就是你将常用的一种命令之一。
运用sudo而不是以root用户身份登录会安全性能高,由于大家能够为独立用户授予有限资源管理权限,而无需让孩子明白root用户用户名和密码。
sudo命令已事前安装于绝大多数Linux发行版中。要检验设备是否组装sudo命令,挑选快捷键ctrl alt t
打开终端台,键入sudo
,再按照Enter
。
组装 sudo
假如你系统已下载sudo,会自动说明一条简洁明了帮助信息,要不然我们将看到相仿sudo command not found
的信息。
如果你没有安装sudo,则能用发行版的app包管理器组装它,例如apt命令或者yum命令组装sudo。
如果你计算机运行是指依据Debian的Linux发行版,例如Ubuntu,Linux mint,则可以运作命令sudo apt install sudo
组装sudo。
如果你计算机运行是指依据RedHat的Linux发行版,例如CentOS,Fedora,则可以运作命令yum install sudo
组装sudo。
apt install sudo #for ubuntu and debian
yum install sudo #for CentOS and RedHat
sudo命令句法与选项
sudo
命令的基本语法是sudo OPTION.. COMMAND
。sudo
命令有用于操纵行为人这个功能,但一般sudo
都是以其最基本的方法运用,并没有选项。
在这其中COMMAND
就是你要运行的命令。sudo将加载/etc/sudoers
文本文档,并检查用户是否授予sudo的访问权限。
在第一次使用sudo时,系统会提示您输入目前用户用户名和密码,并且该命令便以root用户推行。
例如,要例举/root
文件名称中所有文本文档,请运作命令sudo ls /root
。
sudo ls /root
[sudo] password for myfreax:
. .. .bashrc.cache.config .local .profile
用户名和密码请求超时
默认情况下,sudo闲置不用五分钟后,sudo会要求您再一次键入交易密码。您可以通过撰写/etc/sudoers文本文档来变动默认请求超时。运作命令visudo
撰写/etc/sudoers。
再加上行Defaults timestamp_timeout=10
来设置默认请求超时,在这其中是公司以min为依据特定请求超时,这里设成10min。
假如你要的是仅仅是特殊用户变动sudo的请求超时,请再加上行Defaults:user_name timestamp_timeout=10
,在这其中user_name是用户名。
sudo visudo
Defaults timestamp_timeout=10
Defaults:user_name timestamp_timeout=10 #specify user
以非root用户运作命令
一直以来,你们有什么一个错误的观念,感觉sudo
仅限向一般用户给与root管理员权限。
实际上,您可以使用sudo
用各种用户身份运作命令。-u
选项允许您以特定用户运作命令。
在以下案例中,我们使用sudo命令以myfreax用户运作命令whoami。whoami命令将打印出运作该命令的用户名称。
sudo -u myfreax whoami
sudo 自动跳转
假如你尝试将sudo命令的输出重定向到用户没有写管理权限文本文档,通常会收到管理员权限抵触的不当信息permission denied
。
例如命令sudo echo "test" > /root/file.txt
运用echo和重定向操作符>
,将标准输出重定向到/root/file.txt
文本文档。
我们将收到有误信息bash: /root/file.txt: Permission denied。怎么会那般,主要是因为标准输出的自动跳转>
应以您登录的用户并非sudo特定用户运作。
自动跳转在开启sudo
命令之前造成。一种解决方案采用的是sudo sh -c
以root用户创建子shell全过程运作命令。
另一种解决才是把一般用户的标准输出通过管道传递给到tee
命令。
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
sudo sh -c 'echo "test" > /root/file.txt'
echo "test" | sudo tee /root/file.txt
将用户导到sudo组
默认情况下,在大多数Linux发行版中,授予sudo访问权限,好似将用户导到用户组一样简单。
只需将用户导到sudoersword里定义的sudo组就能够。这样的事情中的一员将能够以root用户身份运作一切命令。团的名称可能会因为发行版有所不同。
在依据RedHat的发行版,例如CentOS和Fedora,sudo团的名称是wheel
。要将用户导到wheel组,请运作usermod命令usermod -aG wheel username
。
在Debian,Ubuntu及其衍生出的Linux发行版,sudo团的成员喜获sudo访问权限。
sudo usermod -aG wheel username #for CentOS and Fedora
sudo usermod -aG sudo username #for Debian and Ubuntu
出于安全原因,Ubuntu中的root用户账户默认情况下处于禁用状况,鼓励用户运用sudo推行管理方法信息系统软件每日每日任务。
在使用Ubuntu整个过程创建的初始用户已经是sudo团的成员,因此,假如你后台程序Ubuntu,您登录的用户很有可能已经是sudo团的成员。
如果需要掌握自己是不是存有sudo组,可以运作命令groups | grep sudo
。以下groups和grep,管道组成命令来验证目前用户是否存有sudo组。
groups | grep sudo #for ubuntu and debian
groups | grep wheel #for centos and fedora
仅允许运作特定命令
另一个广泛性案例是仅允许用户运用sudo运作特定命令。例如,要仅允许用户运用sudo运作mkdir
命令创建目录和rmdir
命令删除目录。
myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
规范将允许用户在没有任何键入交易密码,仅运作特殊rmdir和mkdir命令。
sudo visudo
myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
结论
您早就学会了如何使用sudo
命令以及选项。包括如何使用sudo以别的用户运作命令,设置sudo请求超时,sudo与自动跳转,如何修改/etc/sudoer文件等。假如你有任何疑问,请随时。
