sudo
英文全称为super user do
,意思为以超级用户(root用户)的方式来执行命令。普通用户如果想要获取sudo
命令的执行权限,则需要在/etc/sudoers
中进行配置。
[root@localhost ~]# ll /etc/sudoers
-r--r----- 1 root root 4328 Sep 30 2020 /etc/sudoers
/etc/sudoers
是一个只读文件,不能直接用vi
或者vim
命令来进行编辑,我们可以使用visudo
命令进入/etc/sudoers
的编辑页面来修改。(注:只有root用户才有该命令的执行权限)
[root@localhost ~]# visudo
进入编辑页面后,找到如下位置的信息:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
以上每一列的含义如下:
- 第一列:用户名,如
root
、users
; - 第二列:等号左边的
ALL
表示允许从任何主机登录当前的用户账户;等号右边的ALL
表示第一列的用户可以切换成系统中任何一个其它用户(如:su users
); - 第三列:第一列的用户能下达的命令,
ALL
表示可以下达任何命令。
当我们以普通用户身份(以test
为例)登录,在使用sudo
命令时报出如下信息:
test is not in the sudoers file. This incident will be reported.
则说明该用户没有在/etc/sudoers
文件中进行配置,因此无法使用sudo
命令。
我们可以参考root
用户的配置,在/etc/sudoers
文件中添加test
用户的权限:
test ALL=(ALL) ALL
上面的配置在执行sudo
命令时会提示输入root
密码,而设置成免输入密码的方式如下:
test ALL=(ALL) NOPASSWD:ALL
添加完成,保存并退出。
此时再切换到test
用户,执行需要root
权限的命令,前面添加sudo
即可。
[test@localhost ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 1 months ago 13.3kB
可以看出,用户test
可以正常使用sudo
命令了。