Loading... <p><span style="font-size: 1.333rem"><strong>在这篇文章当中你可以看到:</strong></span></p> <p><span style="font-size: 1.333rem"><strong>1、linux系统文件普通权限</strong></span></p> <p><span style="font-size: 1.333rem"><strong>2、文件所属主的设置,组的指定</strong></span></p> <p><span style="font-size: 1.333rem"><strong>3、</strong></span><strong style="font-size: 20px;line-height: 31px">特殊权限</strong></p> <p><span style="font-size: 1.333rem"><strong>4、</strong></span><strong style="font-size: 20px;line-height: 31px">acl权限</strong></p> <p><span style="font-size: 1.333rem"><strong>5、su命令及其注意事项和</strong></span><strong style="font-size: 20px;line-height: 31px">sudo权限</strong></p> <p><span style="font-size: 1.333rem"><strong>6、权限管理的注意点</strong></span></p> <p></p> <p><span style="font-size: 20px;line-height: 31px"><strong>0、首先,在linux下用户账户是分角色的,由于角色的不同,每个角色,每个用户的的权限和所能完成的任务也不同。而在实际管理中,用户的角色是通过UID(用户id号)来标识的,每个用户的UID都是不同的。</strong></span></p> <p><span style="font-size: 20px;line-height: 31px"><strong> (1)root用户:系统的的最高权限,UID为0,也被称为超级用户,在shell界面上用#标识,在linux上他就是皇帝,无所不能。</strong></span></p> <p><span style="font-size: 20px;line-height: 31px"><strong> (2)系统用户:这类用户也称为虚拟用户、伪用户或假用户,这类用户不具有登录linux系统的能力,但是确实是系统运行不可缺少的用户,比如bin、mail、adm等等,这些是系统自身拥有的,或者我们配置某些服务软件是也会创建虚拟用户,如配置apache我们也会添加虚拟用户,以防止软件拥有过高的权限。系统用户的UID为1-499</strong></span></p> <p><span style="font-size: 20px;line-height: 31px"><strong> (3)这类用户能登录系统,在linux系统上进行普通操作,能操作自己目录下的内容,使用系统的权限受限,这些用户是root创建的,其UID为500—60000</strong></span></p> <p><strong>0.1、查看用户信息:</strong></p> <pre class="brush:python;toolbar:false;">[root@desperadochn ~]# cat /etc/passwd #/etc/passwd 用户配置文件 root:x:0:0:root:/root:/bin/bash #root 用户 UID为0 bin:x:1:1:bin:/bin:/sbin/nologin #系统用户,不许登录 daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:995:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin desperadochn:x:1000:1000:desperadochn:/home/desperadochn:/bin/bash #普通用户 hadoop:x:1001:1001::/home/hadoop:/bin/bash ntp:x:38:38::/etc/ntp:/sbin/nologin apahce:x:996:994::/home/apahce:/bin/bash desperado:x:1002:1002::/home/desperado:/bin/bash</pre> <p><span style="font-size: 1.333rem"><strong>1、linux系统文件的普通权限:</strong></span></p> <p><span style="font-size: 1.333rem"><strong> linux系统将文件普通权限分成了读、写、执行。需要风别赋予其权限,这样权限管理就非常灵活了</strong></span></p> <p><span style="font-size: 1.333rem"><strong>1.1.1 文件权限的查看:</strong></span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# ls -l-rw-r--r--. 1 root root 66441 3月 19 12:13 1.txt -rw-r--r--. 1 root root 0 3月 19 13:10 2.txt -rw-r--r--. 1 root root 0 3月 16 23:30 a,b,c,d,e,f -rw-------. 1 root root 1146 2月 21 22:22 anaconda-ks.cfg drwxrwxrwx. 4 500 500 4096 3月 10 15:23 cmatrix-1.2a -rw-r--r--. 1 root root 74376 4月 1 2002 cmatrix-1.2a.tar.gz drwxr-xr-x. 12 501 games 4096 4月 11 00:00 httpd-2.4.20 -rw-r--r--. 1 root root 8299011 4月 8 23:39 httpd-2.4.20.tar.gz -rw-r--r--. 1 root root 1114 2月 28 12:17 index.html drwxrwxrwx. 5 desperadochn desperadochn 4096 2月 28 12:31 manpages-zh-1.5.1 -rw-r--r--. 1 root root 1965336 4月 4 2008 manpages-zh-1.5.1.tar.gz -rw-r--r--. 1 root root 512 3月 26 19:52 mbr drwxr-xr-x. 3 root root 41 4月 10 23:51 tmp -rw-r--r--. 1 root root 49903 2月 21 22:52 yum.txt</pre> <p></p> <p><span style="font-size: 1.333rem">其中以“</span><span style="font-size: 1.333rem">drwxrwxrwx. 5 desperadochn desperadochn 4096 2月 28 12:31 manpages-zh-1.5.1</span><span style="line-height: 1.6"><span style="font-size: 1.333rem">”举例:</span></span><span style="font-size: 1.333rem">rwxrwxrwx 代表权限位</span></p> <p><span style="line-height: 1.6"> </span></p> <p><span style="color:#ff0000"> <span style="font-size: 1.333rem"><span class="Apple-converted-space"> </span> r:读权限</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> w:写权限</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> x:执行权限</span></span></p> <p><span style="font-size: 1.333rem"><br /></span></p> <p><span style="font-size: 1.333rem">在linux中权限针对不同的用户对文件的读、写、执行权限划分了3种情况:<span style="color:#ff0000">所属主(u),所属组(g),其他人(o),每种情况拥有不同的权限。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">u :在上面例子的权限“</span>rwxrwxrwx<span style="font-size: 1.333rem;line-height: 1.6">”,其中前三位表示所属主的权限,即该文件所属主的权限为读、写、执行。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem;line-height: 1.6">g:</span><span style="font-size: 1.333rem">在上面例子的权限“</span>rwxrwxrwx<span style="font-size: 1.333rem;line-height: 1.6">”,中间三位表示所属组的权限,</span><span style="font-size: 20px;line-height: 31px">即该文件所属组的权限为读、写、执行。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">o: 在上面例子的权限“</span>rwxrwxrwx<span style="font-size: 1.333rem;line-height: 1.6">”,最后三位表示其他人的权限,即该文件其他人的权限为读、写、执行。</span></span></p> <p><span style="font-size: 1.333rem;line-height: 1.6"><br /></span></p> <p><span style="font-size: 1.333rem;line-height: 1.6"> 这些权限可以用数值表示:</span></p> <p><span style="font-size: 1.333rem;line-height: 1.6">r:4</span></p> <p><span style="font-size: 1.333rem;line-height: 1.6">w:2</span></p> <p><span style="font-size: 1.333rem;line-height: 1.6">x:1</span></p> <p><span style="font-size: 1.333rem;line-height: 1.6">因此</span><span style="font-size: 1.333rem">“</span>rwxrwxrwx<span style="font-size: 1.333rem;line-height: 1.6">” 可以用777表示。</span></p> <p><span style="font-size: 20px;line-height: 31px">1.1.2、读、写、执行权限的意义:</span></p> <p><span style="font-size: 20px;line-height: 31px"> <span class="Apple-converted-space"> </span><span style="color:#ff0000"> (1)文件:</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> r: 可使用文件查看类工具获取其内容;</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> w: 可修改其内容;</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> x: 可以把此文件提请内核启动为一个进程;</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><br /></span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span>(2)目录:</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> r: 可以使用ls查看此目录中文件列表;</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> w: 可在此目录中创建文件,也可删除此目录中的文件;</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="color:#ff0000"><span class="Apple-tab-span"> </span> x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;</span></span></p> <p><span style="font-size: 20px;line-height: 31px">1.1.3、文件权限的设置</span></p> <p><span style="font-size: 20px;line-height: 31px">文件的权限设置用chmod。</span></p> <p><span style="font-size: 20px;line-height: 31px">命令格式:</span><span style="line-height: 1.6"><span style="font-size: 1.333rem">chmod [OPTION]… OCTAL-MODE FILE… 或 </span></span><span style="font-size: 20px;line-height: 31px">chmod [OPTION]… MODE[,MODE]… FILE…</span></p> <p></p> <p>-R: 递归修改权限</p> <p>其中:</p> <p><span style="font-size: 20px;line-height: 31px"> </span><span style="line-height: 1.6"><span style="font-size: 1.333rem">(1)、设置</span></span><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.333rem">一类用户的权限:</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem"><span style="color:#ff0000">u= #后面跟上权限(rwx)表示赋予所属主所赋予的权限</span></span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">g= </span></span><span style="font-size: 20px;line-height: 31px"> #后面跟上权限(rwx)表示赋予所属组所赋予的权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">o= </span></span><span style="font-size: 20px;line-height: 31px">#后面跟上权限(rwx)表示赋予其他人所赋予的权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">ug= </span></span><span style="font-size: 20px;line-height: 31px"> #后面跟上权限(rwx)表示赋予所属主和所属组所赋予的权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">a= #</span></span><span style="font-size: 20px;line-height: 31px">后面跟上权限(rwx)表示赋予所有用户所赋予的权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">u=,g= #</span></span><span style="font-size: 20px;line-height: 31px">后面跟上权限(rwx)表示赋予所属主和所属组分别赋予所输入的权限</span></span></p> <p></p> <p><span style="font-size: 20px;line-height: 31px">例子:</span></p> <p><span style="font-size: 20px;line-height: 31px"> 1、a=</span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"></span></span></p> <p><code class="language-sh"><span class="pun"></span></code></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod a=rwx 1111111 [root@desperadochn ~]# ls -l 总用量 10264 -rwxrwxrwx. 1 root root 0 4月 25 19:33 1111111</pre> <p><span class="Apple-converted-space"> </span> 2、ug=</p> <p></p> <p><code class="language-sh"><span class="pun"><span style="font-size: 1.267rem"></span></span></code></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod ug=rwx 1111111 [root@desperadochn ~]# ls -l 总用量 10264 -rwxrwx---. 1 root root 0 4月 25 19:33 1111111</pre> <p><span class="Apple-converted-space"> </span>3、u=,g=</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod u=rwx,g=rwx 1111111 [root@desperadochn ~]# ls -l 总用量 10264 -rwxrwx---. 1 root root 0 4月 25 19:33 1111111</pre> <p><span class="Apple-converted-space"> </span>4、u= </p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod u=rwx 1111111 [root@desperadochn ~]# ls -l 总用量 10264 -rwx------. 1 root root 0 4月 25 19:33 1111111</pre> <p><span style="font-size: 1.333rem;line-height: 31px">(2)、为某些用户加上某些权限</span><span style="font-size: 1.333rem;line-height: 31px">权限</span></p> <p><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem"><span style="color:#ff0000">u+:表示所属主加上xxx权限(xxx是rwx权限)</span></span></span></p> <p><span style="color:#ff0000"><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 1.333rem">u-:</span></span><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.333rem">表示所属主减去xxx权限(xxx是rwx权限)</span></span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"> o+:</span>表示其他人加上xxx权限(xxx是rwx权限)</span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"> o-:</span>表示其他人减去xxx权限(xxx是rwx权限)<br style="font-size: 1.333rem" /></span></p> <p><span style="color:#ff0000"><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"> g+:</span></span>表示所属组加上xxx权限(xxx是rwx权限)</span></p> <p><span style="color:#ff0000"><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"> </span></span><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem">g-</span></span><span style="font-size: 1.333rem;line-height: 1.6"><span style="font-size: 1.333rem"> : </span></span>表示所属组减去xxx权限(xxx是rwx权限)</span><span style="font-size: 1.333rem;line-height: 1.6"><span style="color:#ff0000"> </span></span></p> <p><span style="font-size: 1.333rem;line-height: 1.6"><span style="color:#ff0000"> </span><span class="Apple-converted-space"> </span> </span></p> <p><span style="font-size: 1.333rem;line-height: 1.6">例子:</span></p> <p><span style="font-size: 1.333rem;line-height: 1.6"> 1、u+:</span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod u+x 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ---x------. 1 root root 0 4月 25 19:33 1111111</pre> <p>2、g+:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# chmod 000 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ----------. 1 root root 0 4月 25 19:33 1111111 [root@desperadochn ~]# chmod g+x 1111111 [root@desperadochn ~]# ls -l 总用量 10264 ------x---. 1 root root 0 4月 25 19:33 1111111</pre> <p>1.1.4权限掩码——umask<strong style="font-size: 15px;line-height: 24px"><span style="font-size: 20px;color: red"> (1)、umask :</span></strong><strong style="font-size: 15px;line-height: 24px"><span style="font-size: 20px;color: red">权限掩码 在shell中键入此命令可以查看默认默认权限掩码 其决定了文件的缺省权限。可以手工进行设置 格式为:umask xxx xxx代表3个数字 。</span></strong><strong style="font-size: 15px;line-height: 24px">含义:</strong></p> <ul class=" list-paddingleft-2" style="padding-left: 2.13rem;font-size: 15px;line-height: 24px" type="disc"> <li> <p><strong><span style="font-size: 20px">若用户建立普通文件 这预设没有执行权限 最大值为666</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px">若用户建立为目录,则预设所有权限开放,即777</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px">其含义即为以上两条规则中的默认值减去需要减掉的权限(umask)</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px">目录的权限为 </span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">“rwxrwxrwx – —-w–w- =rwxr-xr-x”(减去umask后即为生效权限)</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px">普通文件文件的权限为 </span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">“rw-rw-rw- —-w–w- =rw-r—r— </span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">减去umask后即为生效权限)</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px">Umask</span></strong><strong><span style="font-size: 20px">可以在/etc/bashrc里面更改 默认情况下centos系统下root用户umask值为022(—-r–r-) 普通用户值为002(——-r-)不同的linux发行版值不同</span></strong></p> </li> </ul> <p>(2)、umask查看 </p> <p>对于root用户:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# umask 0022</pre> <p><span class="Apple-converted-space"> </span> 对于普通用户:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# su - desperadochn 上一次登录:日 4月 10 22:26:37 CST 2016tty1 上 [desperadochn@desperadochn ~]$ umask 0002</pre> <p>(3)、umask设置</p> <p>1、临时生效</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# umask 0000 [root@desperadochn ~]# mkdir 1 [root@desperadochn ~]# ls -l 总用量 10264 drwxrwxrwx. 2 root root 6 4月 25 21:52 1</pre> <p>2、<strong><span style="font-size: 20px">在/etc/bashrc里面更改永久生效:</span></strong></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# vim /etc/bashrc 找到如下字段: if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 #普通用户umask else umask 022 #rootumask</pre> <p><strong>2、文件所属主的设置,组的指定</strong></p> <p><strong style="font-size: 1.333rem"> 2.1文件所属主的设置(</strong><span style="font-size: 20px;line-height: 31px"><strong>仅root可用</strong></span><strong style="font-size: 1.333rem;line-height: 1.6">)</strong></p> <p><strong style="font-size: 1.333rem"> </strong><span style="font-size: 20px;line-height: 31px"><strong>chown:修改文件的属主</strong></span></p> <p><strong><span style="font-size: 20px;line-height: 31px">chown [OPTION]… [OWNER][:[GROUP]] FILE…</span><br /></strong></p> <p></p> <p><strong><strong><strong style="line-height: 1.6"></strong></strong></strong></p> <p><strong><strong><strong style="line-height: 1.6"><span style="font-size: 20px;line-height: 31px">chown [OPTION]… –reference=RFILE FILE…</span></strong></strong></strong></p> <p><strong><span style="font-size: 20px;line-height: 31px">用法:</span></strong></p> <p><strong><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"> </span>OWNER</span></strong></p> <p><strong><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"> </span>OWNER:GROUP</span></strong></p> <p><strong><span style="font-size: 20px;line-height: 31px"><span class="Apple-tab-span"> </span>:GROUP</span></strong></p> <p><strong><strong style="line-height: 1.6"></strong></strong></p> <p><strong><strong style="line-height: 1.6"><span style="font-size: 20px;line-height: 31px"> Note: 命令中的冒号可用.替换;</span></strong></strong></p> <p></p> <p><strong><strong style="line-height: 1.6"><span style="font-size: 20px;line-height: 31px"> -R: 递归</span></strong></strong></p> <p><strong></p> <p></strong></p> <p><strong><span style="font-size: 20px;line-height: 31px">例子:</span></strong></p> <p><strong> <p><strong style="line-height: 1.6"></strong></p> <p><strong style="line-height: 1.6"></strong></strong></p> </p> <p></p> <p></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# touch 1111 [root@desperadochn ~]# ls -l 总用量 10264 -rw-r--r--. 1 root root 0 4月 25 22:10 1111 [root@desperadochn ~]# chown desperadochn 1111 [root@desperadochn ~]# ls -l 总用量 10264 -rw-r--r--. 1 desperadochn root 0 4月 25 22:10 1111 #属主已改变</pre> <p></p> <p><strong><span style="font-size: 20px;line-height: 31px">3、特殊权限:</span></strong></p> <p> <span style="font-size: 1.267rem"><span style="color:#ff0000"><span class="Apple-converted-space"> </span> 3.1 setUid权限:</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (1)只有可执行的二进制程序才能设定seUid权限</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (2)命令执行者要对该程序拥有x权限(执行)</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (3)命令的作用是执行者在执行程序的时候获得该文件属主的身份</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (4)setUid权限只在该文件执行过程中有效,也就是说身份改变只在程序执行过程中有效</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (5)设置成功后在文件权限位上能看到s权限</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> (6) setuid设置方法:①chmod 4xxx 文件名 4 代表文件setUid 权限②chmod u+s 文件名</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> 危险的setUid:</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> ①关键目录应严格控制写权限 如“/”,”/usr”等</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> ②用户密码设置应遵循密码三原则</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> ③对系统中应该具有setuid权限的文件做一列表,定期检查是否有多余的setuid权限文件</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 19px;line-height: 30px"> 做一个实验:</span></span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# whereis vim vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz [root@desperadochn ~]# ls -l /usr/bin/vim -rwxr-xr-x. 1 root root 2289656 6月 10 2014 /usr/bin/vim [root@desperadochn ~]# chmod 4755 /usr/bin/vim [root@desperadochn ~]# ls -l /usr/bin/vim -rwsr-xr-x. 1 root root 2289656 6月 10 2014 /usr/bin/vim #看到权限位上的s表示设置成功了</pre> <p>这是我们的shell会用红色标识该文件(这表明该文件很危险或者错误)</p> <p><img alt="3fa37ccb-3334-4b4f-b039-0e22b665a944.png" src="//cto.wang/usr/uploads/2016/07/20160703181001-87.png" title="1462027001984971.png" /></p> <p>让我们看看它到底有何危害呢?</p> <pre class="prettyprint linenums prettyprinted"><p>[root@desperadochn ~]# ls -l /etc/passwd<br />-rw-r--r--. 1 root root 1227 4月 10 23:26 /etc/passwd #该权限表明该文件只有root有读写权限,其他人只有读权限<br />[root@desperadochn ~]# su - desperadochn 上一次登录:一 4月 25 21:48:50 CST 2016pts/0 上<br />[desperadochn@desperadochn ~]$ echo "111" >> /etc/passwd -bash: /etc/passwd: 权限不够<br /><br class="Apple-interchange-newline" /></p></pre> <p>那我们用vim试试看:</p> <pre class="brush:python;toolbar:false">[desperadochn@desperadochn ~]$ vim /etc/passwd</pre> <p><img alt="651de134-0fdc-4db2-9cde-14c2a8b807d7.png" src="//cto.wang/usr/uploads/2016/07/20160703181001-76.png" title="1462027103472996.png" /></p> <p><img alt="8be03cd9-ee34-40c4-a972-54ce616059d1.png" src="//cto.wang/usr/uploads/2016/07/20160703181001-70.png" title="1462027131415880.png" /></p> <p>试试改desperadochn权限为root:</p> <p><img alt="247654a7-1373-4bd4-a75b-fb764746d546.png" src="//cto.wang/usr/uploads/2016/07/20160703181001-22.png" title="1462027158672250.png" /></p> <p><img alt="b1ee3233-1024-4344-9597-b309b1cbf760.png" src="//cto.wang/usr/uploads/2016/07/20160703181001-40.png" title="1462027164944953.png" /></p> <p>试试改desperadochn权限为root:</p> <pre class="brush:python;toolbar:false">[desperadochn@desperadochn ~]$ su - desperadochn 密码: 上一次登录:一 4月 25 22:34:19 CST 2016pts/0 上 [root@desperadochn ~]# #成功篡位成root了</pre> <p><span style="font-size: 1.333rem"><span style="color:#ff0000">因此编辑器或者能对如何文件中的任何内容进行读写操作的,都十分危险</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000">默认拥有setUid权限的命令是passwd:</span></span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz [root@desperadochn ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd</pre> <p>因为普通用户对/etc/passwd和/etc/shadow文件没有写权限,因此在用户改密码的一瞬间,他需要root权限:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# ls -l /etc/passwd -rw-r--r--. 1 root root 1228 4月 25 22:47 /etc/passwd [root@desperadochn ~]# ls -l /etc/shadow ----------. 1 root root 848 4月 10 23:26 /etc/shadow</pre> <p>用chmod u+s 设置setUid权限:</p> <pre class="brush:python;toolbar:false">root@desperadochn ~]# whereis vim vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz [root@desperadochn ~]# chmod u+s /usr/bin/vim [root@desperadochn ~]# ls -l /usr/bin/vim -rwsr-xr-x. 1 root root 2289656 6月 10 2014 /usr/bin/vim</pre> <p><span style="font-size: 1.333rem"></span></p> <p>3.2 <span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000">setGid: </span></span></span></p> <p><span style="font-size: 15px;line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000"> <span style="font-size: 1.267rem">(1) 只有可执行的二进制程序才能设定setGid权限</span></span></span></span></p> <p></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"><span style="font-size: 1.267rem"> (2)命令执行者要对该程序拥有x权限(执行)</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"><span style="font-size: 1.267rem"> (3)命令的作用是执行者在执行程序的时候,组身份升级为所属组。</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"><span style="font-size: 1.267rem"> (4)组身份的改变只在程序执行过程中有效。</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"><span style="font-size: 1.267rem"> (5)设置方法:chmod 2xxx 文件名 或chmod g+s</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"><span style="font-size: 1.267rem"> (6)可以给文件或者目录分配该权限</span></span></span></p> <p><span style="font-size: 1.267rem"> 例子:</span></p> <p><span style="font-size: 1.267rem">chmod 2xxx 设置setGid:</span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# ls -l /usr/bin/vim -rwxr-sr-x. 1 root root 2289656 6月 10 2014 /usr/bin/vim #rwxr-sr-x 组权限中的r权限为前的s表示设置成功了</pre> <p>3.3 <span style="line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000">stickyBit</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> (1)stickyBit 又叫粘着位</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> (2)粘着位权限只对目录起效</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> (3)普通用户对该目录存在w和x权限</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> (4)若没有该权限,则普通用户拥有 w权限,所以可以删除该目录下所有文件,若赋予了该权限,除了root可以删除所有文件,普通用户就算拥有w权限也只能删除自己建立的文件,不能删除其他用户建立的文件。</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> (5)设置方法:chmod 1xxx 文件名 或chmod o+t</span></span></p> <p><span style="font-size: 1.267rem"> </span>chmod 1xxx 设置:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# mkdir /tmp/test11 [root@desperadochn ~]# cd /tmp/ [root@desperadochn tmp]# ls -ld test11/ drwxr-xr-x. 2 root root 6 4月 25 23:15 test11/ [root@desperadochn tmp]# chmod 777 /tmp/test11/ #普通用户对该目录存在w和x权限[root@desperadochn tmp]# ls -ld /tmp/test11/ drwxrwxrwx. 2 root root 6 4月 25 23:15 /tmp/test11/ [root@desperadochn tmp]# chmod 1777 /tmp/test11/ [root@desperadochn tmp]# ls -ld /tmp/test11/ drwxrwxrwt. 2 root root 6 4月 25 23:15 /tmp/test11/</pre> <p><span style="font-size: 1.267rem"></span>chmod o+t:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# mkdir /tmp/test11 [root@desperadochn ~]# cd /tmp/ [root@desperadochn tmp]# ls -ld test11/ drwxr-xr-x. 2 root root 6 4月 25 23:15 test11/ [root@desperadochn tmp]# chmod 777 /tmp/test11/ #普通用户对该目录存在w和x权限 [root@desperadochn tmp]# ls -ld /tmp/test11/ drwxrwxrwx. 2 root root 6 4月 25 23:15 /tmp/test11/ [root@desperadochn tmp]# chmod o+t /tmp/test11/ [root@desperadochn tmp]# ls -ld /tmp/test11/ drwxrwxrwt. 2 root root 6 4月 25 23:15 /tmp/test11/</pre> <p>做个试验:</p> <pre class="brush:python;toolbar:false">[root@desperadochn test11]# ls-l [root@desperadochn test11]# su - desperado [desperado@desperadochn ~]$ cd /tmp/test11/ [desperado@desperadochn test11]$ touch 123 [desperado@desperadochn test11]$ su - desperadochn 密码: 上一次登录:一 4月 25 22:34:36 CST 2016pts/0 上 [desperadochn@desperadochn ~]$ cd /tmp/test11/ [desperadochn@desperadochn test11]$ touch 112 [desperadochn@desperadochn test11]$ su - root 密码: 上一次登录:一 4月 25 22:44:49 CST 2016pts/0 上 [root@desperadochn ~]# cd /tmp/test11/ [root@desperadochn test11]# chmod 777 111 [root@desperadochn test11]# chmod 777 112 [root@desperadochn test11]# chmod 777 123 [root@desperadochn test11]# su - desperadochn 上一次登录:一 4月 25 23:31:00 CST 2016pts/0 上 [desperadochn@desperadochn ~]$ cd /tmp/test11/ [desperadochn@desperadochn test11]$ ls -l 总用量 0 -rwxrwxrwx. 1 root root 0 4月 25 23:27 111 -rwxrwxrwx. 1 desperadochn desperadochn 0 4月 25 23:31 112 -rwxrwxrwx. 1 desperado desperado 0 4月 25 23:30 123 [desperadochn@desperadochn test11]$ rm 123 rm: 无法删除"123": 不允许的操作 [desperadochn@desperadochn test11]$ rm 112 [desperadochn@desperadochn test11]$ su - root 密码: 上一次登录:一 4月 25 23:32:32 CST 2016pts/0 上 [root@desperadochn ~]# cd /tmp/test11/ [root@desperadochn test11]# rm 123 rm:是否删除普通空文件 "123"?y</pre> <p></p> <p>实验结果可见:若赋予了该权限,除了root可以删除所有文件,普通用户就算拥有w权限也只能删除自己建立的文件,不能删除其他用户建立的文件。</p> <p><span style="font-size: 1.333rem;line-height: 1.6"><span style="color:#ff0000"> 因此权限的数字表示方法其实是4位:</span></span></p> <p><span style="font-size: 1.333rem;line-height: 1.6"><span style="color:#ff0000"> (1)第一位表示特殊权限 4表示</span></span><span style="color:#ff0000"><span style="font-size: 19px;line-height: 30px"> </span><span style="font-size: 19px;line-height: 30px">setUid权限,2表示</span>setGid权限,1表示<span style="font-size: 1.333rem;line-height: 1.6"> </span>stickyBit权限 <span style="font-size: 1.333rem;line-height: 1.6"> </span></span></p> <p></p> <p><span style="line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000"> (2)第二、三、四位分别表示所属主、所属组、其他人这些不同的角色的权限,4表示r权限(读),2表示w权限(写),1表示x权限(写)</span></span></span></p> <p><span style="line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000">3.4<span style="font-size: 1.333rem"> </span></span></span></span><span style="line-height: 1.6"><span style="font-size: 1.333rem"><span style="color:#ff0000">chattr权限 :</span></span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> 格式:chattr [+-=] [选项] 文件或目录名</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> +:增加权限 -:删除权限=:等于某权限</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> 选项:</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> i:若对文件赋予了i属性,那么不允许对文件进行删除、改名,也不能添加和删除数据;若对目录赋予了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能增加也不能修改数据;如果对目录设置a属性,那么只允许在目录中修改和 建立文件,但不允许删除</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> 查看文件系统属性命令:lsattr 选项 文件名</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> 选项:</span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> -a:显示所有文件和目录 </span></span></p> <p><span style="font-size: 1.333rem"><span style="color:#ff0000"> –d:若目标是目录,则列出目录本身的属性,而非子文件属性</span></span></p> <p><span style="font-size: 20px;line-height: 31px">例子:</span></p> <p><span style="font-size: 20px;line-height: 31px"> </span>对文件赋予i属性:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# mkdir /tmp/test2 [root@desperadochn ~]# cd /tmp/test2/ [root@desperadochn test2]# touch 1111 [root@desperadochn test2]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 4月 26 00:20 1111 [root@desperadochn test2]# chattr +i 1111 [root@desperadochn test2]# lsattr 1111 ----i----------- 1111 #成功 [root@desperadochn test2]# ls -l 总用量 0 -rw-r--r--. 1 root root 0 4月 26 00:20 1111 #文件属主拥有读写权限 [root@desperadochn test2]# echo "1111" >> 1111 -bash: 1111: 权限不够 #不能添加数据 [root@desperadochn test2]# echo "1111" > 1111 -bash: 1111: 权限不够 #不能删除数据 [root@desperadochn test2]# rm -f 1111 rm: 无法删除"1111": 不允许的操作 #不允许删除文件 [root@desperadochn test2]# mv 1111 2222 mv: 无法将"1111" 移动至"2222": 不允许的操作</pre> <p>对文件取消i属性:</p> <pre class="brush:python;toolbar:false">[root@desperadochn test2]# lsattr 1111 ----i----------- 1111 # [root@desperadochn test2]# chattr -i 1111 [root@desperadochn test2]# lsattr 1111 ---------------- 1111 [root@desperadochn test2]# echo "1111" > 1111</pre> <p>对目录赋予i属性:</p> <pre class="brush:python;toolbar:false">[root@desperadochn test2]# cd .. [root@desperadochn tmp]# chattr +i test2/ [root@desperadochn tmp]# lsattr -d test2/ ----i----------- test2/ [root@desperadochn tmp]# cd test2 [root@desperadochn test2]# ls -l 总用量 4 -rw-r--r--. 1 root root 5 4月 26 00:36 1111 -rw-r--r--. 1 root root 0 4月 26 00:56 2222 [root@desperadochn test2]# echo "111111" >> 2222 #可以修改数据 [root@desperadochn test2]# touch 33 touch: 无法创建"33": 权限不够 #不能创建文件 [root@desperadochn test2]# rm -f 2222 rm: 无法删除"2222": 权限不够 #不能删除文件</pre> <p>对文件赋予a属性:</p> <pre class="brush:python;toolbar:false">[root@desperadochn test2]# chattr =a 1111 [root@desperadochn test2]# lsattr 1111 -----a---------- 1111 [root@desperadochn test2]# echo "1111" > 1111 -bash: 1111: 不允许的操作</pre> <p>对目录赋予a属性:</p> <pre class="brush:python;toolbar:false">[root@desperadochn tmp]# mkdir /tmp/test3 [root@desperadochn tmp]# chattr +a /tmp/test3/ [root@desperadochn tmp]# lsattr -d /tmp/test3 -----a---------- /tmp/test3 [root@desperadochn tmp]# cd /tmp/test3 [root@desperadochn test3]# ls [root@desperadochn test3]# touch 111 #可以创建文件 [root@desperadochn test3]# echo "11111" >>111 #可以修改文件内容 [root@desperadochn test3]# rm -f 111 rm: 无法删除"111": 不允许的操作 #不允许删除</pre> <p></p> <p>4、acl权限</p> <p> 当传统的linux文件系统的权限控制谁着应用的发展,已经不能适应现在复杂的控制需求,ACL(Access Control Lists,访问控制列表)应运而生:</p> <p> (1)acl权限是独立于所属主、用户组、其他人的一种权限,可以给单独用户已某种权限,而不用考虑 所属主、用户组、其他人。</p> <p> (2)查询分区是否支持acl权限:用命令dumpe2fs –h /dev/sda3(所需查询的盘符) </p> <p> -h 仅显示超级快信息,而不显示磁盘块组的详细信息。</p> <p> 查看default mount options 是否开启acl(user_xattr acl)</p> <p> 若分区不支持acl则有如下方法:</p> <p> ①mount -o remount,acl/ #重新挂载根分区,并挂载加入acl权限(临时开启acl权限)</p> <p> ②修改 /etc/fstab 命令:vim /etc/fstab</p> <p> (3)查找根分区 挂载设置是否为defaults 若是一般支持(若不支持 后面添加,acl)重启或重新挂载</p> <p>设置acl权限:</p> <p>setfacl </p> <p> -m 设定acl权限</p> <p> –x 删除指定的acl权限</p> <p> –b 删除所有acl权限</p> <p> –d 设定默认的acl权限</p> <p> –k 删除默认的acl权限 </p> <p> –R 递归设定acl权限</p> <p></p> <p>setfacl –m u:user:rwx /file u 用户标识符 同理 可用g设定给用户组:用户名:所分配的权限 /对应的目录</p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">若设置成功则在文件权限最后面有一个+号</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">getfacl :</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">查看具体的acl权限 </span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">格式:</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"> getfacl /文件名或目录名/ </span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">若成功会显示单独对于该用户的权限 与所属主、用户组、其他人权限无关。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">直接设定的acl权限并非用户真正能得到的权限 必须与acl mask值相与后才能得到真正权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">setfacl –m m:rx 所给的最大权限 /文件名/ 若设定成功 查看时会出现effective:xxx 权限值表示实际起作用的权限。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">删除acl权限 setfacl –x u:user /filename/ 或setfacl –b /filename/ 删除该文件所有acl权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">递归acl权限:指父目录在设定acl权限之时 子文件和子目录也遵循父目录acl权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">设定方法:setfacl –m u:用户名:权限 –R /文件名/</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">默认acl权限:作用是如果给父目录设定了默认acl权限,那么所有新创建的子文件都会继承父文件的acl权限</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">设定默认acl权限方法:setfacl –m d:u:用户名:权限 文件名 可以和-R同时使用 递归修改</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem">递归acl和默认acl权限只能给目录</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"><br /></span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"> 实现:</span></span></p> <p><span class="Apple-converted-space"> </span>1、查看是否有acl软件包</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# rpm -q acl acl-2.2.51-12.el7.x86_64</pre> <p><span class="Apple-converted-space"> </span>2、设置支持acl功能:</p> <pre class="brush:python;toolbar:false">root@desperadochn ~]# mount -o remount,acl /</pre> <p><span style="font-size: 1.267rem"><span style="color:#ff0000">要想永久启用该功能请修改/etc/fstab文件。</span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"><br /></span></span></p> <p><span style="font-size: 1.267rem"><span style="color:#ff0000"> 3、搭建实验环境:</span></span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# mkdir /tmp/acltest [root@desperadochn ~]# cd /tmp/acltest/ [root@desperadochn acltest]# touch acltest [root@desperadochn acltest]# ls -al 总用量 4 drwxr-xr-x. 2 root root 20 4月 29 22:51 . drwxrwxrwt. 12 root root 4096 4月 29 22:51 .. -rw-r--r--. 1 root root 0 4月 29 22:51 acltest</pre> <p> 4、设置acl权限:</p> <pre class="brush:python;toolbar:false">[root@desperadochn acltest]# setfacl -m u:desperadochn:rwx /tmp/acltest/acltest [root@desperadochn acltest]# getfacl /tmp/acltest/acltest getfacl: Removing leading '/' from absolute path names # file: tmp/acltest/acltest # owner: root # group: root user::rw- user:desperadochn:rwx group::r-- mask::rwx other::r--</pre> <p> 试试是否对tmp/acltest/acltest有rwx权限:</p> <pre class="prettyprint linenums prettyprinted"><p>[root@desperadochn acltest]# su - desperadochn<br />上一次登录:五 4月 29 22:43:05 CST 2016pts/1 上<br />[desperadochn@desperadochn ~]$ ls -al /tmp/acltest/<br />总用量 8<br />drwxr-xr-x. 2 root root 20 4月 29 22:51 .<br />drwxrwxrwt. 12 root root 4096 4月 29 22:51 ..<br />-rw-rwxr--+ 1 root root 0 4月 29 22:51 acltest<br />[desperadochn@desperadochn ~]$ cd /tmp/acltest/<br />[desperadochn@desperadochn acltest]$ id desperadochn uid=1000(desperadochn) gid=1000(desperadochn) 组=1000(desperadochn)<br /><br />[desperadochn@desperadochn acltest]$ echo 11111"" >> /tmp/acltest/acltest<br />[desperadochn@desperadochn acltest]$ cat /tmp/acltest/acltest<br />11111<br class="Apple-interchange-newline" /></p></pre> <p></p> <p>看,本来作为其他人的得desperadochn是没有权限对<span class="pun"><span style="font-size: 1.267rem">/</span></span><span class="pln"><span style="font-size: 1.267rem">tmp</span></span><span class="pun"><span style="font-size: 1.267rem">/</span></span><span class="pln"><span style="font-size: 1.267rem">acltest</span></span><span class="pun"><span style="font-size: 1.267rem">/</span></span><span class="pln"><span style="font-size: 1.267rem">acltest进行写入操作的但是通过ACL权限独立给他读写执行权限。</span></span></p> <p><span class="pln"><span style="font-size: 1.267rem"><br /></span></span></p> <p></p> <p><span style="color:#ff0000"><span style="font-size: 1.533rem">5、su和sudo</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"> 5.1 su</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.267rem">作用:切换到其他用户账户进行登录。</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.267rem">注意事项:</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.267rem"> (1)root用户切换到普通用户是不需要输入密码确认。普通用户切换至root需要输入root密码确认,普通用户相互切换需要对方的密码</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.267rem"> (2)如果su不带任何选项及参数,默认切换到root账户且不改变shell环境</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.267rem"> (3)使用su时一定要带- 即su – 要不然对于一个运维来说是非常low的表现</span></span></p> <p><span style="color:#ff0000"><span style="font-size: 1.333rem"><br /></span></span></p> <p><span style="font-size: 1.333rem"> 实验 :su和 su -的区别</span></p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@desperadochn ~]# pwd /root [root@desperadochn ~]# su desperadochn [desperadochn@desperadochn root]$ pwd /root #还是root的家目录 [desperadochn@desperadochn root]$ echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin #还是root的环境变量 [desperadochn@desperadochn root]$ su - desperadochn 密码: 上一次登录:五 4月 29 23:28:37 CST 2016pts/1 上 [desperadochn@desperadochn ~]$ pwd /home/desperadochn #这时家目录对了 [desperadochn@desperadochn ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/desperadochn/.local/bin:/home/desperadochn/bin #这才是desperadochn的环境变量</pre> <p></p> <p><span class="Apple-converted-space"> </span>因此我们可以得出结论:</p> <p> (1)su不带- 只切换用户不会切换环境变量及家目录等用户独有的设置。这可能会产生问题</p> <p> (2)一定要用su –</p> <p></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem">5.2、sudo</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> 当我们需要在执行一些不得不执行的命令但是这些命令只有root才能执行时,又不想或者不能切换成root(root权限太高,要慎用)这时我们就需要sudo</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> 首先sudo需要由root授权,root将那个用户可以使用哪种命令进行授权,即对/etc/sudoers文件进行修改。</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> 当普通用户需要使用获得授权的只有用root才能使用的命令时,在前面带上sudo,之后输入自己用户的密码,之后就能以root权限使用该命令了,密码有效期5分钟,在5分钟内再次使用sudo将不需要密码。</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> 许多发行版甚至默认不允许root用户直接登录,但是可以用sudo操作只有root才能完成的操作。</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> 特点:</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> (1)sudo能限制用户只能在某一台主机上执行指定命令。</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> (2)sudo提供了丰富的日志</span></span></p> <p><span style="font-size: 20px;line-height: 31px"><span style="font-size: 1.533rem"> (3)sudo的配置文件是 /etc/sudoers</span></span></p> <p><span style="font-size: 23px;line-height: 31px">实现:</span></p> <p><span style="font-size: 23px;line-height: 31px"> 1、查看sudo软件是否安装</span></p> <pre class="brush:python;toolbar:false">[desperadochn@desperadochn ~]$ rpm -q sudo sudo-1.8.6p7-16.el7.x86_64</pre> <p> 2、/etc/sudoers 文件详解</p> <pre class="brush:python;toolbar:false">## Host Aliases 定义主机别名 ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2 #格式类型 # Host_Alias MAILSERVERS = smtp, smtp2 #格式类型 ## User Aliases #用户别名 ## These aren't often necessary, as you can use regular groups ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS # User_Alias ADMINS = jsmith, mikem 格式类型 ## Command Aliases 定义命令别名 ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL #设置sudo部分,这一条表示root用户可以在任何主机运行任意命令 ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 这一条表示sys组成员可以在任何主机运行网络、软件方面的命令 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL #%wheel组成员可以在任何主机上运行任何命令 ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL #%wheel组成员可以在任何主机上运行任何命令,且不需要密码 ## Allows members of the users group to mount and unmount the ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 允许%user组用户运行sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom命令 ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now 允许%user组成员可以在本机运行/sbin/shutdown -h now 命令 ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d</pre> <p>虽然我们可以通过vim等工具修改/etc/sudoers文件,有专门的命令设置sudo权限——visudo他的优点是带语法检查。</p> <p> 命令格式:</p> <p> visudo [选项]</p> <p> -c:启用check—only 模式,sudoers文件将被检查语法错误、所有者和模式</p> <p> -q:不进行语法检查</p> <p> -s:启用严格检查sudoers文件</p> <p>使用visudo编辑/etc/sudoers文件</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# visudo</pre> <p>检查:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# visudo -c /etc/sudoers:解析正确</pre> <p><span style="font-size: 1.533rem">sudo命令</span><span style="line-height: 1.6"><span style="font-size: 1.533rem"> 命令格式:</span></span><span style="line-height: 1.6"><span style="font-size: 1.533rem"> sudo [选项] [命令] </span></span></p> <p><span style="font-size: 1.067rem"> -l:列出用户能执行的命令</span></p> <p><span style="font-size: 1.067rem"><br /></span></p> <p><span style="font-size: 1.333rem">实验:</span></p> <pre class="brush:python;toolbar:false">## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL desperadochn ALL=(root) /usr/sbin/useradd</pre> <p><span style="font-size: 20px;line-height: 31px"></span>试一下:</p> <pre class="brush:python;toolbar:false">[root@desperadochn ~]# su - desperadochn 上一次登录:六 4月 30 03:30:43 CST 2016pts/1 上 [desperadochn@desperadochn ~]$ sudo -l 匹配此主机上 desperadochn 的默认条目: requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin 用户 desperadochn 可以在该主机上运行以下命令: (root) /usr/sbin/useradd [desperadochn@desperadochn ~]$ useradd xxx -bash: /usr/sbin/useradd: 权限不够 [desperadochn@desperadochn ~]$ sudo /usr/sbin/useradd baibudonghei [desperadochn@desperadochn ~]$ id baibudonghei uid=1003(baibudonghei) gid=1003(baibudonghei) 组=1003(baibudonghei)</pre> <ul class=" list-paddingleft-2" style="padding-left: 2.13rem" type="disc"> <li> <p><strong><span style="font-size: 20px">绝对在任何时候不要将</span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">sudo</span></strong><strong><span style="font-size: 20px">、</span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">setUid</span></strong><strong><span style="font-size: 20px">、</span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">setGid</span></strong><strong><span style="font-size: 20px">权限赋予工具型命令如</span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">vim</span></strong><strong><span style="font-size: 20px">或</span></strong><strong><span style="font-size: 20px;font-family: Batang, serif">vi</span></strong></p> </li> <li> <p><strong><span style="font-size: 20px;font-family: Batang, serif">sudu</span></strong><strong><span style="font-size: 20px">权限设置时最好带上命令详细参数</span></strong></p> </li> </ul> <p><strong style="font-size: 20px;line-height: 31px"><br /></strong><strong style="font-size: 20px;line-height: 31px"><br /></strong><strong style="font-size: 20px;line-height: 31px"><br /></strong><strong style="font-size: 20px;line-height: 31px">6、权限管理的注意点:</strong><br />(1)账户密码使用强口令(2)日常用户登录使用普通用户,root权限只掌握在少数人手中(3)定期修改密码,合理设定密码过期时间(4)做好sudo权限的管理,合理对账号用途进行分组,根据不同的用户组设置不同的sudo权限,权限的设置采用白名单机制(5)进行权限分离 权限最小化(程序权限最小化,用户权限最小化)</p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信