红联Linux门户
Linux帮助

sudo su - 的疑问

发布时间:2011-04-23 22:54:52来源:红联作者:yanyongkg
可以执行sudo的用户岂不是能轻松的passwd改掉root密码?
文章评论

共有 22 条评论

  1. ICEEN 于 2011-05-05 12:21:21发表:

    sudoers限制

  2. sukizpf 于 2011-05-04 23:54:19发表:

    受教了

  3. My_own_Destiny 于 2011-04-28 13:52:29发表:

    ...

  4. greedfarmer 于 2011-04-27 09:08:45发表:

    隐约懂了

  5. 心蓝波波 于 2011-04-24 22:18:29发表:

    sudo -s进入不是首先需要输入root密码么?

  6. 心蓝波波 于 2011-04-24 22:16:25发表:

    sudo -s 可以改root密码? 不是需要首先输入root密码么

  7. gogo11 于 2011-04-24 20:50:49发表:

    进来学习~~~~~~~~

  8. age 于 2011-04-24 19:50:22发表:

    引用:
    讨论问题可以互相加深理解和记忆,多谢所有人的回贴。
    age还记得上次我们的“不打不相识”吗,呵呵
    yanyongkg 发表于 2011-4-24 19:46

    了解, 有空可以上论坛的irc频道
    我天天挂线的, 交流起来也更快更方便些:0)1

  9. yanyongkg 于 2011-04-24 19:46:51发表:

    讨论问题可以互相加深理解和记忆,多谢所有人的回贴。
    age还记得上次我们的“不打不相识”吗,呵呵

  10. age 于 2011-04-24 19:42:38发表:

    引用:
    age你忽略了一个问题,以用户user为例:
    user ALL=(ALL) ALL,!/usr/bin/passwd root
    user用户登录系统执行sudo passwd意思是以root用户身份执行passwd,所以sudo passwd是更改root密码,passwd后面不指定用户确实是 ...
    yanyongkg 发表于 2011-4-24 19:40

    果然如此, 我的错, 前面的说法全错了,
    !/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*必须保留
    多谢指点

  11. yanyongkg 于 2011-04-24 19:40:27发表:

    age你忽略了一个问题,以用户user为例:
    user ALL=(ALL) ALL,!/usr/bin/passwd root
    user用户登录系统执行sudo passwd意思是以root用户身份执行passwd,所以sudo passwd是更改root密码,passwd后面不指定用户确实是默认用户为当前用户,sudo passwd是以root身份去执行passwd,默认用户当然是root。我验证过。

  12. age 于 2011-04-24 19:25:14发表:

    [i=s] 本帖最后由 age 于 2011-4-24 19:43 编辑 [/i]

    此2点错误, 为免误导他人, 自行删除(e:e2s
    3. NOPASSWD有点不安全, 也有可能误操作. 还是输个密码, 有点缓冲时间, 更好些. 个人意见:0)1

  13. yanyongkg 于 2011-04-24 19:16:33发表:

    方法自己找到了,现分享一下:
    age好快,我正在编辑点错了,退出了,就看到你回贴了。
    你的写法还有问题,请看下面:
    allblue ALL=(ALL) ALL,!/usr/bin/passwd root
    这样的话,allblue除了不能sudo passwd root以外,其它任何命令都可以。你试试sudo passwd是可以执行的。
    1。下面这句让user用户只是不能用passwd这个命令,这样的话sudo passwd,sudo passwd root,sudo passwd test等都不能执行:
    user ALL=(ALL) ALL,!/usr/bin/passwd
    注:后面的ALL,!/usr/bin/passwd一定不能写成!/usr/bin/passwd,ALL 原因在9楼!
    2。让user直接不能用passwd有点一刀切的味道,万一我想让user这个用户可以帮助管理密码,让user用户可以改除root以外的其它用户的密码,就用下面一句,这句执行sudo passwd和sudo passwd root都会提示不允许的:
    user ALL=(ALL) ALL,!/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwd root 同例一样,后面的顺序不能变,原因也在9楼。
    3。罗嗦一下,如果不想每次sudo时都要输入自己的密码,可以加个NOPASSWD: 比如:
    user ALL=(ALL) NOPASSWD:ALL,!/usr/bin/passwd

  14. age 于 2011-04-24 18:57:36发表:

    失误了, allblue ALL=(ALL) !/usr/bin/passwd root这句再加个ALL
    allblue ALL=(ALL) ALL,!/usr/bin/passwd root
    这样就可以执行除/usr/bin/passwd root外所有其它命令了(o):tx
    的确是顺序匹配, 以最后一个为准. 这点以前还真没注意, 好好学习了:0)1

  15. yanyongkg 于 2011-04-24 18:44:01发表:

    引用:
    运行visduo, 以allblue用户为例
    格式为
    =
    可以执行sudo的帐号, 如果以%开头, 则表于用户组
    即用户来源, 可以用hostname, ip地址
    即sudo后可以切换的身份
    即sudo后可以执行的命令列表,多个命令以","分隔 ...
    age 发表于 2011-4-24 06:04


    1。幸会幸会,age,多谢你的回复!
    allblue ALL=(ALL) !/usr/bin/passwd root
    上面的试了下,情况是这样的,最后面指定的是可执行的命令,这里只用感叹号!指定了不可用/usr/bin/passwd没有指定其它可用命令,此情况下任何命令都不可用。
    2。翻看了一下鸟哥的书sudo那一章节,书中一个例子:
    user ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
    这句user可以给其它非root用户改密码,执行sudo passwd和sudo passwd root都会提示不允许
    3。我在实验把后面的/usr/bin/passwd[a-zA-Z]*和!/usr/bin/passwd root颠倒了前后位置,发现一个问题:
    user ALL=(ALL) !/usr/bin/passwd,!/usr/bin/passwd root,/usr/bin/passwd [a-zA-Z]*
    这句user执行sudo passwd提示不允许,执行sudo passwd root尽然可以,咦?后的语句有点按顺序去匹配的味道?先!/usr/bin/passwd root禁止这了句,后面的/usr/bin/passwd [a-zA-Z]*利用通配符又把root包含进去了

  16. yhzm1314 于 2011-04-24 17:42:08发表:

    7# pallana


    这不叫漏洞,Ubuntu 本来就给了第一个普通用户使用sudo 时,可以使用所有的权限

  17. pallana 于 2011-04-24 17:10:32发表:

    我用Ubuntu的时候使用过sudo su -切换到root用户,但是没想过还有这个漏洞。
    试了一下,果然可以修改root密码。
    我现在root密码和普通用户密码一样了。。。

  18. gogo11 于 2011-04-24 11:59:15发表:

    可以该,不过redhat有selinux,ubuntu有AppArmour可以限制这个~~~~~~~~

  19. lvcebo 于 2011-04-24 08:50:15发表:

    都有破解root的办法

  20. age 于 2011-04-24 06:04:00发表:

    运行visduo, 以allblue用户为例
    格式为
    <用户> <用户登录主机> = <可变换身份> <可执行命令>
    <用户> 可以执行sudo的帐号, 如果以%开头, 则表于用户组
    <用户登录主机> 即用户来源, 可以用hostname, ip地址
    <可变换身份> 即sudo后可以切换的身份
    <可执行命令> 即sudo后可以执行的命令列表,多个命令以","分隔. 若以!开头, 以表示sudo后禁止执行的命令.
    把上面弄清楚, 再想禁用passwd root就很简单了
    allblue ALL=(ALL) !/usr/bin/passwd root

  21. yhzm1314 于 2011-04-24 00:52:32发表:

    其实能限制用户在使用 sudo 时,只能执行某些命令,而且不可以改 root 密码。

    至于怎么设置,我也不太清楚 (6)m:b

  22. lykginy 于 2011-04-23 22:57:24发表:

    确实