⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux 系统中的超级权限的控制 linuxsir_org.htm

📁 linuxSir 网站的精华文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      [A-Za-z]*,!/usr/bin/passwd root<BR>Cmnd_Alias 
      DSKCMD=/sbin/parted,/sbin/fdisk 注:定义命令别名DSKCMD,下有成员parted和fdisk 
      ;<BR>SYSADER ALL= SYDCMD,DSKCMD<BR>DISKADER ALL=(OP) DSKCMD</CODE></DIV>
      <P></P>
      <P><FONT color=blue><B>注解:</B></FONT></P>
      <P><B>第一行:</B>定义用户别名SYSADER 下有成员 
      beinan、linuxsir和beinan用户组下的成员,用户组前面必须加%号;<BR><B>第二行:</B>定义用户别名 DISKADER 
      ,成员有lanhaitun<BR><B>第三行:</B>定义Runas用户,也就是目标用户的别名为OP,下有成员root<BR><B>第四行:</B>定义SYSCMD命令别名,成员之间用,号分隔,最后的!/usr/bin/passwd 
      root 表示不能通过passwd 来更改root密码;<BR><B>第五行:</B>定义命令别名DSKCMD,下有成员parted和fdisk 
      ;<BR><B>第六行:</B> 表示授权SYSADER下的所有成员,在所有可能存在的主机名的主机下运行或禁止 
      SYDCMD和DSKCMD下定义的命令。更为明确遥说,beinan、linuxsir和beinan用户组下的成员能以root身份运行 chown 
      、chmod 、adduser、passwd,但不能更改root的密码;也可以以root身份运行 parted和fdisk 
      ,本条规则的等价规则是;</P>
      <P>
      <DIV class=codeblock><CODE>beinan,linuxsir,%beinan 
      ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd 
      [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk</CODE></DIV>
      <P></P>
      <P><B>第七行:</B>表示授权DISKADER 下的所有成员,能以OP的身份,来运行 DSKCMD ,不需要密码;更为明确的说 
      lanhaitun 能以root身份运行 parted和fdisk 命令;其等价规则是:</P>
      <P>
      <DIV class=codeblock><CODE>lanhaitun ALL=(root) 
      /sbin/parted,/sbin/fdisk</CODE></DIV>
      <P></P>
      <P>可能有的弟兄会说我想不输入用户的密码就能切换到root并运行SYDCMD和DSKCMD 
      下的命令,那应该把把NOPASSWD:加在哪里为好?理解下面的例子吧,能明白的;</P>
      <P>
      <DIV class=codeblock><CODE>SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: 
      DSKCMD</CODE></DIV>
      <P></P>
      <P><FONT id=4.5 size=3><B><BR>5、/etc/sudoers中其它的未尽事项;<BR></B></FONT></P>
      <P>在授权规则中,还有 NOEXEC:和EXEC的用法,自己查man sudoers 
      了解;还有关于在规则中通配符的用法,也是需要了解的。这些内容不多说了,毕竟只是一个入门性的文档。soduers配置文件要多简单就有多简单,要多难就有多难,就看自己的应用了。</P>
      <P><FONT id=4.6 size=3><B><BR>6、sudo的用法;<BR></B></FONT></P>
      <P>我们在前面讲的/etc/sudoers 
      的规则写法,最终的目的是让用户通过sudo读取配置文件中的规则来实现匹配和授权,以便替换身份来进行命令操作,进而完成在其权限下不可完成的任务;</P>
      <P>我们只说最简单的用法;更为详细的请参考man sudo</P>
      <P>sudo [参数选项] 命令<BR>-l 
      列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;<BR>-v 
      验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 
      可以跟踪最新的时间戳;<BR>-u 指定以以某个用户执行特定操作;<BR>-k 删除时间戳,下一个sudo 命令要求用求提供密码;</P>
      <P><B></P>
      <P>举列:<BR></B><BR>首先我们通过visudo 来改/etc/sudoers 文件,加入下面一行;</P>
      <P>
      <DIV class=codeblock><CODE>beinan,linuxsir,%beinan 
      ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd 
      [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk</CODE></DIV>
      <P></P>
      <P>然后列出beinan用户在主机上通过sudo 可以切换用户所能用的命令或被禁止用的命令;</P>
      <P>
      <DIV class=codeblock><CODE>[beinan@localhost ~]$ sudo -l 
      注:列出用户在主机上能通过切换用户的可用的或被禁止的命令;<BR>Password: 注:在这里输入您的用户密码;<BR>User beinan 
      may run the following commands on this 
      host:<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /bin/chown 
      注:可以切换到root下用chown命令;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /bin/chmod 
      注:可以切换到root下用chmod命令;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /usr/sbin/adduser 
      注:可以切换到root下用adduser命令;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /usr/bin/passwd 
      [A-Za-z]* 注:可以切换到root下用 passwd 命令;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) 
      !/usr/bin/passwd root 注:可以切换到root下,但不能执行passwd root 
      来更改root密码;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /sbin/parted 注:可以切换到 
      root下执行parted ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(root) /sbin/fdisk 
      注:可以切换到root下执行 fdisk ;</CODE></DIV>
      <P></P>
      <P>通过上面的sudo -l 列出可用命令后,我想通过chown 命令来改变/opt目录的属主为beinan ;<BR>
      <DIV class=codeblock><CODE>[beinan@localhost ~]$ ls -ld /opt 
      注:查看/opt的属主;<BR>drwxr-xr-x 26 root root 4096 10月 27 10:09 /opt 
      注:得到的答案是归属root用户和root用户组;<BR>[beinan@localhost ~]$ sudo chown 
      beinan:beinan /opt 注:通过chown 
      来改变属主为beinan用户和beinan用户组;<BR>[beinan@localhost ~]$ ls -ld /opt 
      注:查看/opt属主是不是已经改变了;<BR>drwxr-xr-x 26 beinan beinan 4096 10月 27 10:09 
      /opt</CODE></DIV>
      <P></P>
      <P>我们通过上面的例子发现beinan用户能切换到root后执行改变用户口令的passwd命令;但上面的sudo -l 
      输出又明文写着不能更改root的口令;也就是说除了root的口令,beinan用户不能更改外,其它用户的口令都能更改。下面我们来测试;</P>
      <P>对于一个普通用户来说,除了更改自身的口令以外,他不能更改其它用户的口令。但如果换到root身份执行命令,则可以更改其它用户的口令;</P>
      <P>比如在系统中有linuxsir这个用户, 我们想尝试更改这个用户的口令,</P>
      <P>
      <DIV class=codeblock><CODE>[beinan@localhost ~]$ passwd linuxsir 注:不通过sudo 
      直接运行passwd 来更改linuxsir用户的口令;<BR>passwd: Only root can specify a user name. 
      注:失败,提示仅能通过 root来更改;<BR>[beinan@localhost ~]$ sudo passwd linuxsir 
      注:我们通过/etc/sudoers 的定义,让beinan切换到root下执行 passwd 
      命令来改变linuxsir的口令;<BR>Changing password for user linuxsir.<BR>New UNIX 
      password: 注:输入新口令;<BR>Retype new UNIX password: 注:再输入一次;<BR>passwd: all 
      authentication tokens updated successfully. 注:改变成功;</CODE></DIV>
      <P></P>
      <P><FONT id=5 size=4><B><BR>后记:<BR></B></FONT></P>
      <P>本文是用户管理的文档的重要组成部份,我计划在明天开始写用户管理控制工具,比如 useradd、userdel、usermod 
      ,也就是管理用户的工具介绍;当然我还会写用户查询工具等与用户管理相关的;</P>
      <P><FONT id=6 size=4><B><BR>关于本文:<BR></B></FONT></P>
      <P>超级权限管理这篇文档是我写的最费力气的文档,写的我都怕了;虽然这个文档是最简单的文档,我自己是明白,但就是表达不出来,而且无论怎么表达,我都感觉是把问题看的太复杂。前前后后写了一个星期都不止;每天坚持十几个小时就是为了写这篇文档,写了好多字,一看不太行就删除重写。得写次数不下十次。改了又写,写了又改,人都崩溃了,不知道什么时候才是尽头;</P>
      <P>在我看来,这篇文档还得改;我不知道初学者是不是能看得懂,至少我需要初学者反馈一点信息,谢谢;</P>
      <P>当然高手的指点,我就更欢迎了。。。。。。</P>
      <P><FONT id=7 size=4><B><BR>致谢:<BR></B></FONT></P>
      <P>感谢pandonny兄弟有关sudo概念性提供理论援助;<BR>感谢etony 
      兄弟的提供修改建议;<BR>感谢懒猫兄弟修正文档概念及目录,并加入索引;<BR>感谢Arch 修正文档中关于sudo 
      授权规则定义中的有关passwd 的修正;</P>
      <P><FONT id=8 size=4><B><BR>参考文档:<BR></B></FONT></P>
      <P>su、sudo、sudoers 的帮助文档</P>
      <P><FONT size=4><B>相关文档:</B></FONT></P>
      <P><A href="http://www.linuxsir.org/main/?q=node/91">《Linux 
      用户(user)和用户组(group)管理概述》</A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/98">《用户(user)和用户组(group)配置文件详解》</A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/105">《Linux 
      用户(User)查询篇》</A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/106">《Linux 用户管理工具介绍》</A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/104">《Linux 
      系统中的超级权限的控制》</A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/109">《在Linux系统中,批量添加用户的操作流程》</A></P></DIV>
      <DIV class=links>By 北南南北 at 2005/10/30 - 22:41 | <A 
      href="http://www.linuxsir.org/main/?q=taxonomy/term/1">Linux</A> | <A 
      href="http://www.linuxsir.org/main/?q=taxonomy/term/25">基础知识</A> | <A 
      title=共享你有关本文的思想和意见。 
      href="http://www.linuxsir.org/main/?q=comment/reply/104#comment">参与评论</A> 
      | 5148 阅读</DIV></DIV><A id=comment></A>
      <FORM action=?q=comment method=post>
      <DIV><INPUT type=hidden value=104 name=edit[nid]> <A id=comment-479></A>
      <DIV class=comment>
      <H3 class=title><A class=active 
      href="http://www.linuxsir.org/main/?q=node/104#comment-479">多谢北南大侠</A></H3>
      <DIV class=content>
      <P>今天google了n多文章,硬是没弄清楚sudoers文件的基本语法,看你这个写的,感觉很清晰。<BR>只是自己试了多次,visudo总是修改不了sudoers文件,后来仔细一想,错误信息总是:Error 
      opening terminal: 
      rxvt-unicode,就换了gnome-terminal,发现马上就好了,以后可以少su了。呵呵</P></DIV>
      <DIV class=links>By Anonymous at 周一, 2006/06/05 - 00:57 | <A 
      href="http://www.linuxsir.org/main/?q=comment/reply/104/479">回复</A></DIV></DIV><A 
      id=comment-349></A>
      <DIV class=comment>
      <H3 class=title><A class=active 
      href="http://www.linuxsir.org/main/?q=node/104#comment-349">很有用的文章</A></H3>
      <DIV class=content>
      <P>我想问那能找到你的其它文章关于用户管理的。<BR>我想这是一个系统管理的重要方面。</P></DIV>
      <DIV class=links>By Anonymous at 周三, 2006/04/05 - 11:00 | <A 
      href="http://www.linuxsir.org/main/?q=comment/reply/104/349">回复</A></DIV></DIV>
      <DIV style="MARGIN-LEFT: 25px"><A id=comment-350></A>
      <DIV class=comment>
      <H3 class=title><A class=active 
      href="http://www.linuxsir.org/main/?q=node/104#comment-350">请看本文的相关文档,早已完成</A></H3>
      <DIV class=content>
      <P>谢谢。。。</P></DIV>
      <DIV class=links>By 北南南北 at 周三, 2006/04/05 - 20:28 | <A 
      href="http://www.linuxsir.org/main/?q=comment/reply/104/350">回复</A></DIV></DIV></DIV><A 
      id=comment-70></A>
      <DIV class=comment>
      <H3 class=title><A class=active 
      href="http://www.linuxsir.org/main/?q=node/104#comment-70">很好的文章</A></H3>
      <DIV class=content>
      <P>我是初学者,能看懂,不过刚开始文章所说的"别名"的作用说的不是很清楚,我看了实例七:别名的运用的实践才知道了何作用,我觉得别名应该放在文章后面讲,正如你所说,要多简单就有多简单,要多复杂就有多复杂,从简单的加一行:<BR>ssl 
      ALL=NOPASSWD:/bin/sbin/*,NOPASSWD:/sbin/*,NOPASSWD:/bin/*<BR>到大量用户的别名方式</P></DIV>
      <DIV class=links>By ssl at 周五, 2005/11/11 - 17:38 | <A 
      href="http://www.linuxsir.org/main/?q=comment/reply/104/70">回复</A></DIV></DIV>
      <DIV style="MARGIN-LEFT: 25px"><A id=comment-71></A>
      <DIV class=comment>
      <H3 class=title><A class=active 
      href="http://www.linuxsir.org/main/?q=node/104#comment-71">谢谢,在这方面是有点乱</A></H3>
      <DIV class=content>
      <P>兄弟说的极对,是应该把别名放在最后来说。</P>
      <P>我在近期内调整一下,初学的弟兄能看懂是最好的,如果看不懂,这篇文档就是一无可用;</P>
      <P>北南 呈上</P></DIV>
      <DIV class=links>By 北南南北 at 周日, 2005/11/13 - 10:01 | <A 
      href="http://www.linuxsir.org/main/?q=comment/reply/104/71">回复</A></DIV></DIV></DIV><A 
      id=comment-34></A>
      <DIV class=comment>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -