linux 为什么sudo无法限制普通用户修改root密码
这个同学,你首先要区分su 和sudo。首先我们来说su 命令,su 命令是用来切换用户身份和用户环境配置的。例如:你提到的“但是用普通用户登切换到root下还有有权限修改root密码”
注意你这句话:切换到root 下,意味着什么? 意味这目前的用户已经变了 是root 了。当然可以修改密码了。
而你前面提到的:“已经更改过/etc/sudoers 中的test 。“
”ALL= NOPASSWD: ALL,!/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwd root”
这个是用来指定普通用户都能对那些命令有所属用户的执行权限的。
su 和sudo 是有直接区别的,百科介绍很详细:
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
-------------------------------------------------------------------------------------------------------------------
另外从你的问题中可以看出,你想要实现的目的是,任何普通用户切换到root 命令下,也不能有修改root密码的权限? 你这个想法就有点奇葩,自己不能修改自己的密码。你逗谁完呢。
使用sudo命令设置 test用户合适执行命令对象。这样就不需要非切换到root才能执行一些普通用户不能执行的命令或操作了。
有点懂了,还是不太明白,我想要那个结果,让他拥有root的有权限,但是不能去修改root的密码
我看网上不是可以用 !/usr/bin/passwd来限制普通用户修改root的密码吗,这个可以不???
你可以设置sudo用户
sudo -i 和 su - 切换好像是不受这么控制的。
那是怎么控制的,诚心求教,我用sudo su -切换到root下,直接修改密码了,我要限制就是切换到root下也不让test普通用户修改root的密码
呵呵,这我就不知道了。
su 我建议删掉或者不让一般人用(权限用 rwxr-xr-- ,一般用户不加入 su 命令所在的组),至于 sudo 干脆就直接禁止切换到 root 状态为好。没这个怎么设置不知道。
不然似乎你就只有上 SELinux 了吧……
你应该把心思放在不让普通用户通过sudo su 来切到root下面
另外,你!/usr/bin/passwd root,却没有包括!/usr/bin/passwd root --stdin的情况,因此还是可以非交互式修改密码。
我是这么配置的,亲测可用:
[root@localhost ~]# visudo
在文末加上:
Cmnd_Alias USERADMINCMNDS = /usr/bin/passwd, !/usr/bin/passwd root, !/usr/bin/passwd root --stdin
test ALL=(root) USERADMINCMNDS
[root@localhost ~]# su - test
Last login: Sat Aug 25 10:28:09 EDT 2018 on pts/1
[test@localhost ~]$ echo "hello" | sudo passwd root --stdin
Sorry, user test is not allowed to execute '/bin/passwd root --stdin' as root on localhost.localdomain.
[test@localhost ~]$ sudo passwd root
[sudo] password for test:
Sorry, user test is not allowed to execute '/bin/passwd root' as root on localhost.localdomain.
[test@localhost ~]$
说明:因为sudo禁止了/usr/bin/passwd和/usr/bin/passwd --stdin,但是根据PATH继续找到了/bin/passwd,本身对/bin/passwd又没有权限,因此报错。