Linux下的sudo权限可以通过/etc/sudoers
这个文件来配置,
不过这个文件是只读的, 普通用户无法修改。
有个visudo
的命令, 专门来改/etc/sudoers
的。
下面是一次配置实验, 记录下来。
实验环境:
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
需求如下: 为新用户配置sudo权限, 避免其功能太弱。
打开/etc/sudoers
这个文件, 在最后可以看到
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
意思是, 在/etc/sudoers.d
中放置的文件可以被读取到, 语法和/etc/sudoers
一致。
那么我创建一个文件: /etc/sudoers.d/mySudoers
,
写入如下内容(注意: 仅为示例, 不可作为真实服务器配置):
jz ALL=/usr/bin/*, /usr/sbin/*, /sbin/*, !/usr/sbin/fdisk, !/usr/bin/passwd, !/usr/sbin/userdel
上面的意思是说, 允许用户jz
在所有被管理的机器上(All
, 目前我的就一台),
可以执行的命令为:/usr/bin/*, /usr/sbin/*, /sbin/*
(*代表所有),
不可以执行的命令为:
!/usr/sbin/fdisk, !/usr/bin/passwd, !/usr/sbin/userdel
。
然后退出保存, 再将mySudoers的仅限改为440。
可能出现的问题:
sudo: /etc/sudoers.d/mySudoers is world writable
原因:mySudoers权限不是只读。Sorry, user user1 may not run sudo on gl.
原因: user1没有配置sudo权限- user1 is not in the sudoers file. This incident will be reported
原因: user1没有配置sudo权限
再次说明, 此为实验, 不可用于真实环境。
欢迎补充指正!