当前位置 主页 > 服务器问题 > Linux/apache问题 >

    linux sudo命令详解

    栏目:Linux/apache问题 时间:2019-10-13 17:53

    简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。

    严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。(注意,本文介绍的 sudo 命令运行在 ubuntu 14.04中。)

    sudo 命令语法

    sudo [-bhHpV][-s ][-u <用户>][指令]


    sudo [-klv]
    

    参数

      -b  在后台执行指令。

      -h  显示帮助。

      -H  将HOME环境变量设为新身份的HOME环境变量。

      -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

      -l  列出目前用户可执行与无法执行的指令。

      -p  改变询问密码的提示符号。

      -s  执行指定的shell。

      -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

      -v  延长密码有效期限5分钟。

      -V  显示版本信息。

      -S  从标准输入流替代终端来获取密码

    sudo 程序相关文件

    /etc/sudoers
    /etc/init.d/sudo
    /etc/pam.d/sudo
    /var/lib/sudo
    /usr/share/doc/sudo
    /usr/share/lintian/overrides/sudo
    /usr/share/bash-completion/completions/sudo
    /usr/bin/sudo
    /usr/lib/sudo

    基本配置

    系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。
    至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事:

    $ sudo vim /etc/group

    在 sudo 组中加入新的用户,要使用逗号分隔多个用户。

    或者您可以使用 usermod 命令把用户添加到一个组中:

    $ sudo usermod -a -G sudo jack

    上面的设置中我们把用户 jack 添加到了 sudo 组中,所以当用户 jack 登录后就可以通过 sudo 命令以 root 权限执行命令了!

    详细配置

    在前面的配置中我们只是把用户 jack 加入了 sudo 组,他就具有了通过 root 权限执行命令的能力。

    现在我们想问一下,这是怎么发生的?是时候介绍如何配置 sudo 命令了!

    sudo 命令的配置文件为 /etc/sudoers。(注意,/etc/sudoers 的配置内容十分丰富,我们仅做简单的介绍。要了解更多信息,请参考 man sudoers。)

    编辑这个文件是有单独的命令的 visudo(这个文件我们最好不要使用 vim 命令来打开),是因为一旦你的语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:

    who where whom command

    说白了就是哪个用户在哪个主机以谁的身份执行那些命令,那么这个 where, 是指允许在那台主机 ssh 连接进来才能执行后面的命令,文件里面默认给 root 用户定义了一条规则: