跳到主要内容

10、Linux 实战:Sudo

Sudo

概念

在Linux中有一部分命令是普通用户无权限使用的,但又需要其工作

root就可以使用sudo(switch user do)定义那些用户可以使用那些命令

sudo命令:给用户配置命令权限

指令格式:sudo 选项 命令

选项 含义
-l 列出用户所有特殊权限
-b 在后台执行该命令
-k 清空密码有效时间 (下次执行sudo,需输入用户密码确认身份)

//使用sudo指令需要输入当前用户密码确认身份(5分钟一次)

如:查询mwl用户具有那些特殊权限
 

//并不是所有Linux分支都有sudo命令

sudo配置文件:/etc/sudoers

1)该文件并不能通过vim进行更改,系统定义为仅读

如:查看/etc/sudoers文件
 

内容构成:用户名/用户组 允许登录的主机=(执行身份) 可执行命令

1)root:表示root用户(若是用户组,可写成:%组名)

2)ALL:表示允许所有主机的登录(地址白名单)

3)(ALL):表示以管理员的身份执行

4)ALL:表示可执行全部命令

//若有多个命令,可使用“,”进行分割,且命令字段必须使用绝对路径

which命令:根据命令名称查询命令的完整路径

指令格式:which 选项 命令名称

1)没有选项,则默认显示找到的第一个完整路径

选项 含义
-a 将所有由PATH目录中可找到的命令列出
-v 显示命令的版本信息

//本质就是根据环境变量(PATH)所规范的路径,去查询文件名

如:查询ls命令的完整路径
 

Visudo

visudo命令:修改sudo命令的配置文件

指令格式:visudo

1)打开后其使用和操作方法同Vim一致(本质就是调用Vi打开/etc/sudoers)

配置用户权限:用户名 允许登录主机=(执行身份) 可执行命令

1)若无执行身份,则默认为管理员用户身份

2)可执行命令建议写命令的完整路径(而不是直接写命令)

如:给mwl用户添加用户的权限,且可以修改用户密码(但不能修改root用户)
 

//mwl用户做为普通用户是没有添加用户的权限

1)先允许mwl用户添加和更改所有用户的密码

2)再拒绝mwl用户更改root用户的密码

//若想拒绝用户的某一命令权限,在命令路径前加入“!”即可

若想具体拒绝那一部分,可在命令后跟具体数值

通过别名配置/etc/sudoers:通过设置别名集合,一次性设置众多用户权限

别名设置 含义
User_Alias 用户别名集合
Cmnd_Alias 命令别名集合
Host_Alias 主机别名集合

1)设置的别名必须都为大写

如:给test1、test2、test3、test4和test5都设置passwd和useradd权限
 

使用Sudo

添加命令权限后调用命令:sudo 执行命令

1)若使用sudo进行权限分配后,只需在原命令前添加sudo即可

2)实现调用sudo且不需输入密码:将设置后自动生成的注释行前的“#”去除

//visudo设置后,文件下方会自动生成一样的行且命令行为NOPASSWD

ulimit命令:限制用户使用系统资源

指令格式:ulimit 选项 选项值

选项 含义
-f shell可建立的最大文件容量(Kbytes)
-d 程序可使用的最大段内存容量
-l 可用于锁定的内存量
-t 可使用的最大CPU时间(秒)
-u 用户最多可创建进程数量
-x 进程最多持有文件锁数量
-T 进程最多可创建线程数量
-n 进程最多可持有文件句柄数量
-a 列出所有限制值
-H 严格设置 资源使用不能超过设置值
-S 警告设置 资源使用可超过设置值,但会接到系统警告