admin管理员组文章数量:1660119
最近公司的中间件服务器因为同事的误操作,导致系统硬盘分区表丢失,系统直接挂掉了,好在最后恢复了,恢复后,老大有一个需求,想对中间件服务器做一下权限限制,之前大家都是以 admin 用户登陆的,它可以使用 root 用户的所有权限,但是现在我们想要让 admin 用户只能上传、下载文件,但是不能删除文件、重启系统,那么改怎么做呢?
思路:
刚看到这个需求,第一时间想到的是文件权限控制,但是仔细一想这样并不能满足需求,应为用户有了上传下载权限,必然就有删除文件的权限,于是我想到可以配置 sudo ,禁止 admin 用户执行 rm 命令就可以了,有了思路就开始测试一下。
1. sudo 权限配置
首先我们看一下如何给普通用户配置 sudo 权限,在Linux 操作系统的 /etc 目录有一个 sudoers 文件,在这个文件中我们可以配置让某些用户可以拥有 sudo 权限,也可以配置该用户可以以 那个用户、用户组的身份来执行命令,我们来看一下怎么配置:
(1)首先我们要给 /etc/sudoers 文件加写权限,默认是400权限。
[root@random etc]# chmod u+w /etc/sudoers
(2)配置 sudo 权限
在 sudoers 文件中你可以这样配置(youuser表示你要配置的用户名):
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
我们可以看到配置项格式为:
授权用户/组 主机 =[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...
字段1 字段2 =[(字段3)] [字段4] 字段5
各字段含义如下:
-
字段 1
不以%号开头的表示"将要授权的用户" 如:root 以%号开头的表示"将要授权的组" 如:%wheel
-
字段 2
ALL表示所有; 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令 如:random mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown 表示: 普通用户random在主机(或主机组)mycomputer上, 可以通过sudo执行reboot和shutdown两个命令
-
字段 3
如果省略, 相当于(root:root),表示可以通过sudo提权到root; 如果为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组)。 注意:如果没省略,必须使用( )双括号包含起来
-
字段 4
可能取值是NOPASSWD:。请注意NOPASSWD后面带有冒号:。表示执行sudo时可以不需要输入密码 eg:lucy ALL=(ALL) NOPASSWD: /bin/useradd 表示: 普通用户lucy可以在任何主机上, 通过sudo执行/bin/useradd命令, 并且不需要输入密码
-
字段 5
逗号分开一系列命令或者ALL表示允许所有操作 注意:命令必须使用绝对路径 命令的绝对路径可通过which指令查看到 我们也可以通过在命令前面加 "!" 的方式进行用户执行该命令。
重点在第五个字段的最后一句话,我们可以禁止用户执行 rm 命令,因此配置如下(random是我的测试用户):
random ALL=(ALL) ALL,!/usr/bin/rm
保存文件后,将他的权限恢复400:
[root@random etc]# chmod u-w /etc/sudoers
2. 修改 rm 命令权限
将 rm 命令的权限改为 700:
[root@random etc]# chmod 700 /usr/bin/rm
可能大家会疑惑,为什么还要该 rm 命令的权限?
我们看一下 rm 命令默认的权限:
[root@random ~]# ll /usr/bin/rm
-rwxrwxrwx. 1 root root 62864 Nov 6 2016 /usr/bin/rm
我们可以看到所有用户都有这个命令的执行权限,因此用户根本不需要 sudo 就可以使用 rm 命令删 “根” 了,我们配置的 sudo 权限根本派不上用场,因此我们将 rm 命令的权限改为 700,这样用户要执行 rm 命令就必须加 sudo,但是 rm 命令被我们禁止执行了,所以服务器上面的所有文件他都不能删除了。
3. 测试一下
# 切换到 random 用户
[root@random etc]# su - random
Last login: Fri Sep 4 13:26:06 CST 2020 on pts/0
# 创建 file1 文件
[random@random ~]$ touch file1
# 删除文件,我们可以看到没有权限执行 rm 命令
[random@random ~]$ rm file1
-bash: /bin/rm: Permission denied
# 加 sudo 执行 rm 命令,我们可以看到不允许执行
[random@random ~]$ sudo rm file1
[sudo] password for random:
Sorry, user random is not allowed to execute '/bin/rm file1' as root on random.
版权声明:本文标题:在Linux服务器上如何配置用户的sudo权限,教你配置如何让用户只能读写文件、上传文件、下载文件,但是不能删除文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729845994a1215136.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论