linux操作系统中的超级权限的控制(编辑修改稿)内容摘要:

相配。 我们用 Host_Alias 定义主机别名时,成员必须是与主机相关相关联,比如是主机名(包括远程 登录的主机名)、 ip 地址(单个 或整段)、掩码等;当用户登录时,可以通过 w 命令来查看登录用户主机信息;用 User_Alias 和 Runas_Alias 定义时,必须要用系统用户做为成员;用 Cmnd_Alias 定义执行命令的别名时,必须是系统存在的文件,文件名可以用通配符表示,配置 Cmnd_Alias 时命令需要绝对路径。 其中 Runas_Alias 和 User_Alias 有点相似,但与 User_Alias 绝对不是同一个概念,Runas_Alias 定义的是某个系统用户可以 sudo 切换身份到 Runas_Alias 下的成员;我们 在授权规则中以实例进行解说。 别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过 \来续行;同一类型别名的定义,一次也可以定义几个别名,他们中间用 :号分隔, Host_Alias HT01=localhost,st05,st04,10,0,0,4,:定义主机别名 HT01,通过 =号列出成员 Host_Alias HT02=st09,st10 注:主机别名 HT02,有两个成员; Host_Alias HT01=localhost,st05,st04,10,0,0,4,:HT02=st09,st10 注:上面的两条对主机的定义,可以通过一条来实现,别名之间用 :号分割; 注:我们通过 Host_Alias 定义主机别名时,项目可以是主机名、可以是单个 ip(整段ip 地址也可以),也可以是网络掩码;如果是主机名,必须是多台机器的网络中,而且这些机器得能 通过主机名相互通信访问才有效。 那什么才算是通过主机名相互通信或访问呢。 比如 ping 主机名,或通过远程访问主机名来访 问。 在我们局域网中,如果让计算机通过主机名访问通信,必须设置 /etc/hosts, /etc / ,还要有 DNS 做解析,否则相互之间无法通过主机名访问;在设置主机别名时,如果项目是中某个项目是主机名的话,可以通过hostname 命令来查看本地主机的主机名,通过 w 命令查来看登录主机是来源,通过来源来确认其它客户机的主机名或 ip 地址;对于主机别名的定义,看上去有点复杂,其实 是很简单。 如果您不明白 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 [AZaz]*,/bin/chown,/bin/chmod 注意:命令别名下的成员 必须是文件或目录的绝对路径; Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/ Cmnd_Alias KILL = /usr/bin/kill Cmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/halt Cmnd_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 ,我们必须得通过授权规则的实例来理解。 /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) 实例二: beinan ALL=(root) /bin/chown, /bin/chmod。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。