Linux sudo 命令
Linux 为了安全的运行软件,都会在安装软件时创建个单独的分组给软件。软件只能操作自己有权限的文件资源,只有 root 账户有全部权限。在正式服务器中,一般不会给用户直接使用 root 账号进行操作。但安装软件需要用到 root 账号权限,这时就要用到 sudo 命令了,本文将会介绍它的配置和使用。
sudo 配置
1 | #... |
授权用户/%组 | 主机 | =[(切换到任意用户[:任意用户组])] | [是否需要输入密码验证] | 命令1,命令2,… |
---|---|---|---|---|
root | ALL | =(ALL) | ALL | |
%wheel | ALL | =(ALL:ALL) | ALL | |
vagrant | ALL | =(ALL) | NOPASSWD: | ALL |
Note:
表头中用
[]
包起来表示可选内容,其他的必须设置。 ALL 表示全部。
第 5 项中的命令要以使用 *
进行匹配,也可以用 !
去除匹配命令的指定命令,如下:
1 | timi ALL /usr/sbin/*,!/usr/sbin/reboot |
timi 用户可以用命令匹配的用户执行 /usr/sbin 目录下的全部命令,reboot 命令除外。
配置用户时通过放在 /etc/sudoers.d/ 文件夹中。如配置 gitea 用户和 dev 组:
1 | gitea ALL=(vagrant:wheel) NOPASSWD: /usr/sbin/reboot,/usr/sbin/shutdown |
上面表示 gitea 用户使用 sudo 执行 /usr/sbin/reboot,/usr/sbin/shutdown 命令时会用 wheel 组的 vagrant 用户权限执行,不需要输入密码。
1 | %dev ALL ALL |
上面表示 dev 组用户使用 sudo 执行所有命令时会用命令对应用户执行,但需要输入密码。
常用命令
非 root 用户显示出自己(执行 sudo 的使用者)的权限:
1 | [root@localhost git]$ sudo -l |
1 | [root@localhost git]$ sudo -l |