新手学堂:su和sudo命令的区别与使用技巧

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论


  如果您不明白Host_Alias 是怎么回事,也可以不用设置主机别名,在定义授权规则时通过ALL来匹配所有可能出现的主机情况。如果您把主机方面的知识弄的更明白,的确需要多多学习。

  User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun 注:定义用户别名,下有四个成员;要在系统中确实在存在的;

  User_Alias NETAD=beinan,bnnb 注:定义用户别名NETAD ,我想让这个别名下的用户来管理网络,所以取了NETAD的别名;

  User_Alias WEBMASTER=linuxsir 注:定义用户别名WEBMASTER,我想用这个别名下的用户来管理网站;

  User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun:NETAD=beinan,bnnb:WEBMASTER=linuxsir 注:上面三行的别名定义,可以通过这一行来实现,请看前面的说明,是不是符合?

  Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod

  注意:命令别名下的成员必须是文件或目录的绝对路径;

  Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/partedCmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/networkCmnd_Alias KILL = /usr/bin/killCmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/haltCmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, / /usr/local/bin/tcsh, /usr/bin/rsh, / /usr/local/bin/zsh

  注:这行定义命令别名有点长,可以通过 / 号断行;

  Cmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin

  在上面的例子中,有KILL和PWMAG的命令别名定义,我们可以合并为一行来写,也就是等价行;

  Cmnd_Alias KILL = /usr/bin/kill:PWMAG = /usr/sbin/reboot,/usr/sbin/halt 注:这一行就代表了KILL和PWMAG命令别名,把KILL和PWMAG的别名定义合并在一行写也是可以的;

  Runas_Alias OP = root, operator

  Runas_Alias DBADM=mysql:OP = root, operator 注:这行是上面两行的等价行;至于怎么理解Runas_Alias ,我们必须得通过授权规则的实例来理解;

  4、/etc/sudoers中的授权规则

  授权规则是分配权限的执行规则,我们前面所讲到的定义别名主要是为了更方便的授权引用别名;如果系统中只有几个用户,其实下放权限比较有限的话,可以不用定义别名,而是针对系统用户直接直接授权,所以在授权规则中别名并不是必须的;

  授权规则并不是无章可寻,我们只说基础一点的,比较简单的写法,如果您想详细了解授权规则写法的,请参看man sudoers

  授权用户 主机=命令动作

  这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数,但这些可以省略;举例说明;

  实例一:

  beinan ALL=/bin/chown,/bin/chmod

  如果我们在/etc/sudoers 中添加这一行,表示beinan 可以在任何可能出现的主机名的系统中,可以切换到root用户下执行 /bin/chown 和/bin/chmod 命令,通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;

  值得注意的是,在这里省略了指定切换到哪个用户下执行/bin/shown 和/bin/chmod命令;在省略的情况下默认为是切换到root用户下执行;同时也省略了是不是需要beinan用户输入验证密码,如果省略了,默认为是需要验证密码。

  为了更详细的说明这些,我们可以构造一个更复杂一点的公式;

  授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]……

  注解:

  凡是[ ]中的内容,是可以省略;命令与命令之间用,号分隔;通过本文的例子,可以对照着看哪些是省略了,哪些地方需要有空格;

  在[(切换到哪些用户或用户组)] ,如果省略,则默认为root用户;如果是ALL ,则代表能切换到所有用户;注意要切换到的目的用户必须用()号括起来,比如(ALL)、(beinan)

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答