Linux命令Man解释:SUDO(8):以root身份执行指令

名称 
 
    sudo - 以超级使用者 (superuser; root) 的身分执行指令 
 
    visudo - 编辑 sudoers 档案 
 
语法 
 
    sudo command 
 
描述 
 
    Sudo 允许经过同意的使用者以超级使用者的身分执行指令。 Sudo 参考/etc/sudoers 这个档案来判定谁是被授权的使用者。Sudo 将会提示使用者输入密码来启始一段 N 分钟的允许时间(其中 N 是在安装的时候定义的且预设值为 5 分钟)。 
 
    Sudoers 这个档案是由一个选择性的主机别名 (host alias) 节区,一个选择性的指令别名 (command alias) 节区以及使用者说明 (user specification)节区所组成的。所有的指令别名或主机别名必须需以他们自己的关键字作为开始 (Host_Alias/Cmnd_Alias)。注意,只有第一次使用者(在使用者说明节区里有记录的使用者)使用时会有说明。 
 
    使用者说明节区格式: 
     使用者 接取群组 [: 接取群组 ] ... 
 
       接取群组 ::= 主机象徵 = [op]指令象徵 [,[op]指令象徵] ... 
       主机象徵 ::= 一个小写的主机名称或主机别名。 
       指令象徵 ::= 一个指令或指令别名。 
          op ::= 逻辑的 '!' 否定运算元。 
 
    主机别名节区格式: 
     Host_Alias 主机别名 = 主机列表 
 
       Host_Alias ::= 这是一个关键字。 
        主机别名 ::= 一个大写的别名。 
        主机列表 ::= 以逗号间隔的一些主机名称。 
 
    指令别名节区格式: 
     Cmnd_Alias 指令别名 = 指令列表 
 
       Cmnd_Alias ::= 这是一个关键字。 
        指令别名 ::= 一个大写的别名。 
        指令列表 ::= 以逗号间隔的一些指令。 
 
    所有在 '#' 符号後面的文字都会被当作是注解。 
    太长的行可以使用倒斜线 '\' 字元来分成新的行。 
    保留的别名 'ALL' 在 {Host,Cmnd}_Alias' 里都可以使用。 
      不要用 'ALL' 来定义一个别名,这个别名无效。 
      注意到 'ALL' 暗示全部的主机跟指令。 
      你可以使用这个语法从整个范围中减掉一些项目: 
 
       user host=ALL,!ALIAS1,!/etc/halt... 
 
    范例 
 
      # Host alias specification 
      Host_Alias HUB=houdini.rootgroup.com:\ 
            REMOTE=merlin,kodiakthorn,spirit 
      Host_Alias MACHINES=kalkan,alpo,milkbones 
      Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit 
 
      # Command alias specification 
      Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lPR
      Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh 
      Cmnd_Alias MISC=/bin/rm,/bin/cat:\ 
            SHUTDOWN=/etc/halt,/etc/shutdown 
 
      # User specification 
      britt    REMOTE=SHUTDOWN:ALL=LPCS 
      robh    ALL=ALL,!SHELLS 
      nieusma   SERVERS=SHUTDOWN,/etc/reboot:\ 
            HUB=ALL,!SHELLS 
      jill    houdini.rootgroup.com=/etc/shutdown,MISC 
      markm    HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt 
      billp    ALL=/usr/local/bin/top:MACHINES=SHELLS 
      davehieb  merlin=ALL:SERVERS=/etc/halt:\ 
            kodiakthorn=ALL 
 
    上面的 sudoers 说明档案是由 4 个主机别名说明,4 个指令别名说明以及 7 个使用者说明所组成的。Britt 被允许在远端机器 (merlin, kodiakthorn, 还有 spirit) 上执行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及/usr/ucb/lprm 。Rohn 被允许在任何机器上执行除了 SHELL 指令群以外的任何指令。Jill 被允许在 houdini 上执行 /etc/shotdown, /bin/rm, 以及/bin/cat 。Davehieb 可以在 merlin 以及 kodiakthorn 上执行任何指令并且可以 halt SERVERS 。 
 
    Sudoers 档案应该用 visudo 指令编辑,它会锁住该档并且做文法检查。这提供了一个可以避免愚蠢文法错误的机制。 
 
    Sudo 被设计成经由 4.3 BSD syslogging 来记录,但是如果真的想要的话还是可以记录到一个档案来取代。 
 
    如果一个没有被授权的使用者执行了 sudo 的话,将会有一封 mail 从该使用者寄送到当地的授权者处(在安装的时候定义的)。 
 
    所有的设定都是在安装的时后定义的,从 sudo.h 含入档及 Makefile 取得。 
 
未来加强 
 
    允许巢状的主机以及指令别名。 
    允许在 sudoers 档案中使用 host specifier 
      以便使用全区符号 (user ALL,!SERVERS, ... = commands) 。 
    允许在 sudores 档案里的使用者别名(就如同主机/指令别名一样)。 
    使 visudo 对 sudoers 档案做更广泛的检查。 
 
档案 
 
    /etc/sudoers         经授权的使用者档案。 
    /etc/stmp          visudo 的 lock file 。 
    /usr/local/bin/sudo     sudo 的执行档。 
    /usr/local/etc/visudo    修改 sudoers 档案的工具。 
 
作者 
 
    Jeff Nieusma         
    David Hieb          
 
DISCLAIMER 
 
    这个程式的发行是因为希望它有用处,但是没有任何保证;甚至没有对特定用途的销售或适合有隐含的保证。参阅 GNU 的 General Public License 以获得更详细的资讯。 
 
    你应该会连同这个程式一起接收到一份 GNU General Public License;如果没有的话,写封信给 Free Software Foundation, Inc., 675 Mass Ave, 
    Cambridge, MA 02139, USA 。 
 
警告 
 
    如果使用者可以存取 shell scripts 指令群或允许 shell escapes 的话,没有简单的办法可以防止使用者得到 root shell。

(0)

相关推荐

  • linux学习-文件的隐藏属性

    Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉.明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改 ...

  • sudo的用法

    sudo的用法

  • linux下su与sudo

    简短介绍 su与su - su 切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境.su - 切换到root用户,并转到root用户的家目录下,即改变到了root用户的环境. ...

  • linux 命令 词汇 解释 名词 词典

    rc "rc",它是"runcomm"的缩写――即名词"run command"(运行命令)的简写.rc"是任何脚本类文件的后缀, ...

  • Linux 命令 su 和 sudo 的区别?

    来源:Jun Tao 地址: https://tanjuntao.github.io/ 之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了, ...

  • Linux 命令 su 和 sudo 的区别

    之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下. 1. 准备工作 因为本篇博客中涉及到用户切换,所以我需要提前准 ...

  • sudo以其他用户身份身份执行命令-linux运维命令

    Linux运维管理人员以另一个用户身份执行命令就会用到sudo命令.通过sudo命令,可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限,进行分类,并且有针对性地将不同的命令授予指定的普通用户 ...

  • LINUX命令后面常见的>/dev/null 解释

    Linux中的标准输入输出 0 是标准输入,一般是从键盘获得输入 1 是标准输出,一般是输出到屏幕了 2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了 >为重定向符号 & ...

  • Linux命令route显示或管理路由表-linux运维学习

    route命令可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由.掌握Linux命令对于Linux运维来说是必备技能,对于Linux运维工作起着重要的作用.那么route命令 ...

  • 程序运行时调整优先级用什么命令?Linux命令

    Linux运维管理工作中,有程序在运行时,如果需要调整优先级,会用到什么命令?Linux命令众多运维工作中经常会用到的,是Linux运维必备技能知识点.那么对于初学Linux运维的人来说,牢记Linu ...

  • Linux命令中交互式命令都有哪些?Linux基础

    交互式命令就是在top命令执行过程中使用的一些命令.top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任 ...

  • 这些最常用的Linux命令,每一条都应该会,没有借口!

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心. 线上查询及帮助 ...