linux 为什么sudo无法限制普通用户修改root密码

已经更改过/etc/sudoers中的testALL=NOPASSWD:ALL,!/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/u... 已经更改过/etc/sudoers 中的test ALL= NOPASSWD: ALL,!/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwd root 但是用普通用户登切换到root下还有有权限修改root密码,请专业人士、各位大神帮忙解决,感激不尽。 展开
 我来答
分享快乐喔
推荐于2017-09-28 · 超过28用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:65.1万
展开全部

  这个同学,你首先要区分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的密码
xubo0310
2012-11-30
知道答主
回答量:25
采纳率:0%
帮助的人:11万
展开全部
sudo 是特权密码 使用之后相当于附加上了超级管理员权限
更多追问追答
追问
我看网上不是可以用 !/usr/bin/passwd来限制普通用户修改root的密码吗,这个可以不???
追答
你可以设置sudo用户
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangtao9999
2012-11-30 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:44%
帮助的人:8200万
展开全部
这个好像仅限于 sudo passwd 这种直接调用命令的方法吧?
sudo -i 和 su - 切换好像是不受这么控制的。
追问
那是怎么控制的,诚心求教,我用sudo su -切换到root下,直接修改密码了,我要限制就是切换到root下也不让test普通用户修改root的密码
追答
呵呵,这我就不知道了。
su 我建议删掉或者不让一般人用(权限用 rwxr-xr-- ,一般用户不加入 su 命令所在的组),至于 sudo 干脆就直接禁止切换到 root 状态为好。没这个怎么设置不知道。

不然似乎你就只有上 SELinux 了吧……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jstxsyaziou
2018-08-28
知道答主
回答量:1
采纳率:0%
帮助的人:835
展开全部
su 到root下面是肯定可以改的,因为su过去就是root本身了。
你应该把心思放在不让普通用户通过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又没有权限,因此报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式