linux系统下的权限知识梳理

 

下面对linux系统下的有关权限操做命令进行了梳理总结,并配合简单实例进行说明。
linux中除了常见的读(r)、写(w)、执行(x)权限之外,还有其余的一些特殊或隐藏权限,熟练掌握这些权限知识的使用,能够大大提升咱们运维工做的效率。html

(0)umask是权限码,默认是022--------------------------------------------------                  
使用命令"umask"就能查询出来linux

文件默认的权限是666,目录默认的权限是777
新建文件和目录的权限分别是各自默认权限减去umask权限码值nginx

即:
新建文件权限,666-022=644
新建目录权限,777-022=755web

(1)chmod,chown,chgrp-------------------------------------------------------------------数据库

chmod 设置数字权限4,2,1,分别对应的是r,w,x,便可读,可写,可执行。 对目录设置权限时,能够加-R递归参数
[root@localhost src]# chmod 755 test.txt
[root@localhost src]# ll test.txt
-rwxr-xr-x. 1 root root 0 Nov 3 16:33 test.txt
[root@localhost src]# chmod 700 test.txt
[root@localhost src]# ll test.txt
-rwx------. 1 root root 0 Nov 3 16:33 test.txt
[root@localhost src]# chmod 775 -R huanqiu
[root@localhost src]# ll huanqiu
total 4
-rwxrwxr-x. 1 root root 4 Nov 3 17:30 test.txtubuntu


chown 设置字符权限,默认表示所属者权限
chgrp 表示所属组权限vim

一般咱们能够直接用chown设置所属者和所属者安全

好比给a文件受权所属者是wangshibo,所属组是wutao,作法以下:
[root@localhost src]# ll test.txt
-rwx------. 1 root root 0 Nov 3 16:33 test.txt
[root@localhost src]# chown wangshibo test.txt
[root@localhost src]# ll test.txt
-rwx------. 1 wangshibo root 0 Nov 3 16:33 test.txt
[root@localhost src]# chgrp wangshibo test.txt
[root@localhost src]# ll test.txt
-rwx------. 1 wangshibo wangshibo 0 Nov 3 16:33 test.txtbash

也能够直接使用chown设置
[root@localhost src]# chown wangshibo.wangshibo test.txt [或者chown wangshibo:wangshibo test.txt]
[root@localhost src]# ll test.txt
-rwx------. 1 wangshibo wangshibo 0 Nov 3 16:33 test.txt服务器

---------------------------------------------------------------------------------------------------
root帐号在普通用户家目录下建立的文件,默认该文件的全部者和所属组权限是root。
1)此普通用户不能使用echo命令覆盖和追加文件。
2)可是该用户对此文件有有直接vim编辑的权限,而且编辑后,文件的全部者和所属组权限就变成普通用户的了。
以下:
[root@ops-server4 ~]# cd /home/wangshibo/
[root@ops-server4 wangshibo]# vim test
[root@ops-server4 wangshibo]# cat test
123456
[root@ops-server4 wangshibo]# ll
total 4
-rw-r--r--. 1 root root 7 Dec 3 10:47 test

[wangshibo@ops-server4 ~]$ echo "wangshibo" >> test
-bash: test: Permission denied
[wangshibo@ops-server4 ~]$ echo "wangshibo" > test
-bash: test: Permission denied
[wangshibo@ops-server4 ~]$ vim test
[wangshibo@ops-server4 ~]$ ll
total 4
-rw-r--r--. 1 wangshibo wangshibo 15 Dec 3 10:48 test
[wangshibo@ops-server4 ~]$ cat test
123456
wangshibo
---------------------------------------------------------------------------------------------------

(2)chattr隐藏权限,这个很重要!!!一般用于锁定文件----------------------------------------

有时候你发现用root权限都不能修改某个文件,大部分缘由是这个文件曾经使用chattr命令锁定了。
chattr命令的做用很大,其中一些功能是由Linux内核版原本支持的。
经过chattr命令修改属性可以提升系统的安全性,可是它并不适合全部的目录。

chattr命令不能保护/、/dev、/tmp、/var目录。
lsattr命令是显示chattr命令设置的文件属性。
这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr在使用时通常经常使用到两个参数:i和a
chattr +i 表示只有查看文件权限,其余诸如删除,修改,改名等权限通通没有!
chattr +a 表示除了查看文件权限外,还能够echo命令(是echo >>,不能echo >覆盖)追加文件内容的权限(不能直接vim进行编辑),其余诸如删除,修改,改名等权限通通没有!

chattr -i或chattr -a 表示删除这个参数权限

案例说明1:---针对文件
以下,给文件test.txt文件设置+i权限后,就等于锁定了这个文件。任何用户(包括root)都不能操做这个文件了。
[root@localhost src]# touch test.txt
[root@localhost src]# chattr +i test.txt
[root@localhost src]# lsattr test.txt
----i----------- test.txt
[root@localhost src]# cat test.txt
123
[root@localhost src]# echo "asdfs" > test.txt
-bash: test.txt: Permission denied
[root@localhost src]# rm -f test.txt
rm: cannot remove ‘test.txt’: Operation not permitted

设置+a权限,除了查看以外,就只能echo追加内容(是追加,而不是覆盖),其余操做都干不了!
[root@localhost src]# chattr -i test.txt
[root@localhost src]# chattr +a test.txt
[root@localhost src]# lsattr test.txt
-----a---------- test.txt
[root@localhost src]# cat test.txt
123
[root@localhost src]# echo "asdfs" > test.txt
-bash: test.txt: Operation not permitted
[root@localhost src]# echo "asdfs" >> test.txt
[root@localhost src]# cat test.txt
123
asdfs
[root@localhost src]# rm -f test.txt
rm: cannot remove ‘test.txt’: Operation not permitted
[root@localhost src]#

能够将系统的帐号信息文件/etc/passwd和密码文件/etc/shadow使用chattr命令锁定(+ai),这样后续就不能添加帐号和修改用户密码了。

案例说明2:---针对目录
"chattr -R +i 目录名" #只能cd切换到该目录下,对该目录下的文件除了查看权限,其余的都不能操做
"chattr -R +a 目录名" #除了cd切换到该目录下,对于该目录下的文件除了查看权限,也只能echo追加内容,其余的也都干不了

注意一点,删除权限:
"chattr -ai -R 目录名" #表示连同目录下的文件权限都删除了

[root@localhost src]# mkdir huanqiu
[root@localhost src]# echo "123123" > huanqiu/test.txt
[root@localhost src]# chattr -R +i huanqiu
[root@localhost src]# lsattr -R huanqiu
----i----------- huanqiu/test.txt

因为添加权限的时候加了-R参数,因此这个目录下的文件也被锁定了!
[root@localhost src]# rm -rf huanqiu
rm: cannot remove ‘huanqiu/test.txt’: Permission denied
[root@localhost src]# rm -rf huanqiu/test.txt
rm: cannot remove ‘huanqiu/test.txt’: Permission denied
[root@localhost src]# echo "huhuhu" > huanqiu/test.txt
-bash: huanqiu/test.txt: Permission denied

[root@localhost src]# chattr -R -i huanqiu
[root@localhost src]# chattr -R +a huanqiu
[root@localhost src]# lsattr -R huanqiu
-----a---------- huanqiu/test.txt
[root@localhost src]# rm -rf huanqiu
rm: cannot remove ‘huanqiu/test.txt’: Operation not permitted
[root@localhost src]# rm -rf huanqiu/test.txt
rm: cannot remove ‘huanqiu/test.txt’: Operation not permitted
[root@localhost src]# echo "asdf" > huanqiu/test.txt
-bash: huanqiu/test.txt: Operation not permitted
[root@localhost src]# echo "asdf" >> huanqiu/test.txt
[root@localhost src]#

注意:
若是chattr针对目录设置+i权限,不加-R参数时,那么只针对该目录有效,目录下的文件不受约束!
这种状况下:
目录不能删除,不能改名。
目录下的文件也不能删除,不能改名。文件能够被echo追加、覆盖内容。vim能够任意修改文件内容。
[root@localhost src]# chattr -R -ai huanqiu
[root@localhost src]# chattr +i huanqiu
[root@localhost src]# lsattr -R huanqiu
---------------- huanqiu/test.txt                    #能够看出不加-R,目录下的文件没有连带权限
[root@localhost src]# rm -rf huanqiu
rm: cannot remove ‘huanqiu/test.txt’: Permission denied
[root@localhost src]# rm -rf huanqiu/test.txt       #因为上一级目录删除不了,因此文件也删除不了
rm: cannot remove ‘huanqiu/test.txt’: Permission denied
[root@localhost src]# echo "123" > huanqiu/test.txt             #能够修改文件内容
[root@localhost src]# echo "123sdf" >> huanqiu/test.txt
[root@localhost src]# vim huanqiu/test.txt                    #vim里能够任意编辑文件
[root@localhost src]# mv huanqiu huanqiu233
mv: cannot move ‘huanqiu’ to ‘huanqiu233’: Operation not permitted
[root@localhost src]# mv huanqiu/test.txt huanqiu233/haha          #因为上一级目录被锁定不能改名,因此目录下的文件也不能改名
mv: cannot move ‘huanqiu/test.txt’ to ‘huanqiu233/haha’: No such file or directory

若是chattr针对目录设置+a权限,不加-R参数时,那么只针对该目录有效,目录下的文件不受约束!
这种状况下:
目录不能删除,不能改名。
目录下的文件也不能删除,不能改名。文件能够被echo追加、覆盖内容。可是!可是不能使用vim编辑内容。

(3)facl权限,setfacl表示设置权限,getfacl表示查看权限-------------------------------------

ACL权限:
Access Control List:访问控制列表,最初好像是unix里面为了提供更高级的权限管理而搞出来的,多是被chmod命令的3个权限控制没法知足,而被迫搞出来的吧!
主要目的是提供传统的owner,group,others的read,write,execute权限以外的具体权限设置。
ACL能够针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于须要特殊权限的使用情况有必定帮助。如,某一个文件不让单一的某个用户访问等。

ACL使用两个命令来对其进行控制
setfacl:设置某个文件/目录的ACL设置项目
getfacl:取得某个文件/目录的ACL设置项目

setfacl设置acl控制规则的时候跟的参数:
-m:设置后续acl参数
-x:删除后续acl参数
-b:删除所有的acl参数
-k:删除默认的acl参数
-R:递归设置acl,包括子目录
-d:设置默认acl

setfacl操做acl权限的主要命令:
"setfacl -m u:用户名:权限   文件名"          #经过所属者方式
"setfacl -m g:用户组:权限  文件名"                #经过所属组方式

"setfacl -R -m u:用户名:权限 目录名“         #经过所属者方式  //若是这个目录被mount挂载或nfs挂载上了,就不支持setfacl权限操做了
"setfacl -R -m g:用户组:权限 目录名”               #经过所属组方式

"setfacl -b 文件名”                #删除文件上的所有acl权限
"setfacl -x u:用户名 文件名"             #删除文件上的这个用户的acl权限
"setfacl -x g:用户组 文件名"            #删除文件上的这个用户组的acl权限

"setfacl -R -b 目录名"             #删除目录上的所有acl权限
"setfacl -R -x u:用户名 目录名"           #删除目录上的这个用户的acl权限
"setfacl -R -x g:用户组 目录名"           #删除目录上的这个用户的acl权限

-m  --modify=acl modify the current ACL(s)of file(s) #设置文件acl规则
-M  --modify-file=file read ACL entries to modify from file #从文件读取访问控制列表条目更改
-x  --remove=acl remove entries from the ACL(s)of file(s) #删除文件的acl规则
-X  --remove-file=file readACL entries to remove from file #从文件读取访问控制列表条目并删除
-b  --remove-all remove all extended ACL entries # 删除全部扩展的acl规则,基本的acl规则(全部者,群组,其余)将被保留.
-k  --remove-default remove the defaultACL #删除缺省的acl规则。若是没有缺省规则,将不提示.
--set=acl  set the ACL of file(s),replacing the current ACL.
--set-file=file  readACL entries toset from file #从文件中读设置ACL规则.
--mask  dorecalculate the effective rights mask #从新计算有效权限,即便ACL mask被明确指定.
-n  --no-mask don'trecalculate the effective rights mask #不要从新计算有效权限。setfacl默认会从新计算ACL mask,除非mask被明确的制定.
-d  --default operations apply tothe defaultACL #设定默认的acl规则,针对目录而言.
-R  --recursive recurse into subdirectories #递归的对全部文件及目录进行操做.
-L  --logical logical walk,follow symbolic links #跟踪符号连接,默认状况下只跟踪符号连接文件,跳过符号连接目录。
-P  --physical physical walk,donotfollow symbolic links #跳过全部符号连接,包括符号连接文件。
--restore=file  restore ACLs(inverse of`getfacl-R') #从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。经过这种机制能够恢复整个目录树的acl规则。此参数不能和除--test之外的任何参数一同执行.
--test  testmode(ACLs are notmodified) #测试模式,不会改变任何文件的acl规则,操做后的acl规格将被列出.
-v  --version print version andexit #版本.
-h  --help thishelp text #不用说确定是帮助了.

当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。每行至少一条规则,以#开始的行将被视为注释.

案例说明1:针对文件操做
/usr/local/src下有一个文件test.txt,文件权限是guohuihui
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ll test.txt
-rw-r--r--. 1 guohuihui guohuihui 5 Nov 3 13:19 test.txt
[root@localhost src]# cat test.txt
3457

默认状况下,wangshibo用户对这个文件是没有写权限的。
[root@localhost ~]# su - wangshibo
[wangshibo@localhost ~]$ cd /usr/local/src/
[wangshibo@localhost src]$ ll test.txt
-rw-rw--r--. 1 guohuihui guohuihui 14 Nov 3 13:21 test.txt
[wangshibo@localhost src]$ echo "wangshibo123" > test.txt
-bash: test.txt: Permission denied
[wangshibo@localhost src]$

如今使用setfacl命令赋予wangshibo用户对这个文件具备rwx的操做权限
[root@localhost src]# setfacl -m u:wangshibo:rwx test.txt
[root@localhost src]# getfacl test.txt
# file: test.txt #文件名
# owner: guohuihui #文件所属者
# group: guohuihui #文件所属组
user::rw- #文件所属者的权限
user:wangshibo:rwx #能够看出,添加了wangshibo用户对这个文件的rwx权限
group::rw-- #文件所属组的权限
mask::rwx #文件当前的umask值
other::r-- #其余用户对这个文件的权限

如今wangshibo用户能够操做这个文件了(权限设置后,退出来从新登陆wangshibo用户)
[wangshibo@localhost src]$ echo "wangshibo123" > test.txt
[wangshibo@localhost src]$ cat test.txt
wangshibo123

删除文件test.txt上全部的acl权限
[root@localhost src]# setfacl -b test.txt
[root@localhost src]# getfacl test.txt
# file: test.txt
# owner: guohuihui
# group: guohuihui
user::rw-
group::rw--
other::r--

删除test.txt文件对于wangshibo用户的acl权限
[root@localhost src]# setfacl -x u:wangshibo test.txt
[root@localhost src]# getfacl test.txt
# file: test.txt
# owner: guohuihui
# group: guohuihui
user::rw-
group::rw-
mask::rw-
other::r--

[wangshibo@localhost src]$ echo "1234123" > test.txt
-bash: test.txt: Permission denied
[wangshibo@localhost src]$

上面是针对文件所属者设置的acl权限,也能够针对文件所属组设置acl权限:
[root@localhost src]# getfacl test.txt
# file: test.txt
# owner: guohuihui
# group: guohuihui
user::rw-
group::rw-
other::r--

以下设置wangshibo用户组对这个文件的特殊权限是rwx
[root@localhost src]# setfacl -m g:wangshibo:rwx test.txt
[root@localhost src]# getfacl test.txt
# file: test.txt
# owner: guohuihui
# group: guohuihui
user::rw-
group::rw-
group:wangshibo:rwx
mask::rwx
other::r--

那么wangshibo用户就能够写入这个文件
[wangshibo@localhost src]$ echo "sadfasdf" > test.txt

案例说明2:针对目录操做
[root@localhost src]# ll -d huanqiu
drwxr-xr-x. 2 root root 21 Nov 3 15:41 huanqiu
[root@localhost src]# getfacl huanqiu
# file: huanqiu
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

让wangshibo用户对这个huanqiu目录及其子目录下的文件都无访问权限
[root@localhost src]# setfacl -R -m u:wangshibo:r huanqiu
[root@localhost src]# getfacl huanqiu
# file: huanqiu
# owner: root
# group: root
user::rwx
user:wangshibo:r--
group::r-x
mask::r-x
other::r-x

这样,wangshibo用户就访问不了这个huanqiu目录了
[root@localhost src]# su - wangshibo
Last login: Thu Nov 3 15:42:41 CST 2016 on pts/0
[wangshibo@localhost ~]$ cd /usr/local/src/huanqiu/
-bash: cd: /usr/local/src/huanqiu/: Permission denied

删除这个huanqiu目录上全部的acl规则
[root@localhost src]# setfacl -R -b huanqiu
[root@localhost src]# getfacl huanqiu
# file: huanqiu
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

删除这个huanqiu目录上的wangshibo这个用户的acl权限
[root@localhost src]# setfacl -R -x u:wangshibo huanqiu
[root@localhost src]# getfacl huanqiu
# file: huanqiu
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x

上面使用的是针对目录所属者的acl权限设置,固然也可使用目录所属组设置acl设置
设置wangshibo用户组对于目录huanqiu的acl设置
[root@localhost src]# setfacl -R -m g:wangshibo:r huanqiu

删除huanqiu目录上针对wangshibo用户组的acl权限
[root@localhost src]# setfacl -R -x g:wangshibo: huanqiu

*************************************************************************
除了上面设置setfacl权限的方法外,要想让wangshibo用户对test.txt文件操做写,还能够将wangshibo用户添加到这个文件的所属组内便可
[root@localhost src]# ll test.txt
-rw-rw-r--. 1 guohuihui guohuihui 5 Nov 3 13:29 test.txt

默认wangshibo用户不能写入这个文件
[wangshibo@localhost src]$ echo "erere" > test.txt
-bash: test.txt: Permission denied

将wangshibo用户添加到guohuihui用户组内
[root@localhost src]# gpasswd -a wangshibo guohuihui
[root@localhost src]# id wangshibo
uid=1001(wangshibo) gid=1001(wangshibo) groups=1001(wangshibo),1002(guohuihui)

这样,wangshibo用户就能够写入这个文件了
[wangshibo@localhost src]$ echo "erere" > test.txt
[wangshibo@localhost src]$
************************************************************************************

(4)特殊权限--------------------------------------------------------------------------------

1)suid:只对二进制程序有效;执行者对于程序须要有x权限;在程序运行过程当中,执行者拥有程序拥有者的权限;
suid会在所属用户权限本应是x的地方显示s;
设置suid权限,只需在文件当前数字权限前面加4。这个权限很危险,通常不要乱给!

注意:
除了直接在数字权限前加4设置suid权限外,还能够用下面的方法
chmod u+s filenae                  #设置suid权限
chmod u-s filename               #取消suid权限

案例说明:普通用户执行passwd命令修改本身的密码。

首先查看passwd命令的绝对路径:
[root@localhost ~]# which passwd
/usr/bin/passwd

查看passwd命令权限,发现passwd的拥有者是root,且拥有者权限里面本应是x的那一列显示的是s,这说明这个命令具备SUID权限。
同时发现普通用户没有w权限,因此按理来讲普通用户是不能执行这个命令的,由于这个命令修改了密码确定是要写文件的。
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

进一步分析,实际上passwd这个命令会操做/etc/shadow这个文件,由于密码都是放在这里,查看密码文件权限:发现权限是000!
注意:root用户对全部文件都是有rw权限的,对全部目录都是有rwx权限的,这意味着普通用户确实不能独读或写这个文件。
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1205 Nov 3 10:54 /etc/shadow

不过由于passwd命令具备SUID权限,因此普通用户执行这个命令时,当系统生成对应的进程后,这个进程就拥有了/usr/bin/passwd文件拥有者root的权限。
[root@localhost ~]# su - wangshibo
Last login: Thu Nov 3 10:53:38 CST 2016 on pts/0
[wangshibo@localhost ~]$ passwd
Changing password for user wangshibo.
Changing password for wangshibo.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[wangshibo@localhost ~]$

若是将/usr/bin/passwd文件的suid权限收回,则普通用户就不能修改本身的密码了。
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
[root@localhost ~]# chmod 755 /usr/bin/passwd                 [或者chmod u-s /usr/bin/passwd]
[root@localhost ~]# ll /usr/bin/passwd                  
-rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
[root@localhost ~]# su - wangshibo
Last login: Thu Nov 3 11:03:34 CST 2016 on pts/0
[wangshibo@localhost ~]$ passwd
Changing password for user wangshibo.
Changing password for wangshibo.
(current) UNIX password:
New password:
Retype new password:
passwd: Authentication token manipulation error
[wangshibo@localhost ~]$

[wangshibo@localhost ~]$ passwd
Changing password for user wangshibo.
Changing password for wangshibo.
(current) UNIX password:

在上面要输入密码的时候,按ctrl+z挂起。而后接着输入pstree -u命令,以下,发现passwd的权限确实是root,而不是wangshibo!

[wangshibo@localhost ~]$ pstree -u
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon(dbus)───{dbus-daemon}
        ├─dnsmasq(nobody)───dnsmasq(root)
        ├─epmd(epmd)
        ├─gssproxy───5*[{gssproxy}]
        ├─ipmievd
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─lvmetad
        ├─master─┬─pickup(postfix)
        │        └─qmgr(postfix)
        ├─polkitd(polkitd)───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash───su───bash(wangshibo)
        │      └─sshd───bash───su───bash(wangshibo)─┬─passwd(root)
        │                                           └─pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─wpa_supplicant

再看一例:
因为/etc/shadow文件权限是000,也就是说只有root用户能对它有查看权限。普通用户都没法查看它的内容。
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1205 Nov 3 11:11 /etc/shadow
[root@localhost ~]# su - wangshibo
Last login: Thu Nov 3 11:11:10 CST 2016 on pts/1
[wangshibo@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

如今只须要给/usr/bin/cat文件赋予suid权限,普通用户便可有查看/etc/shadow的权限
[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54048 Nov 20 2015 /usr/bin/cat
[root@localhost ~]# chmod 4755 /usr/bin/cat        [或者chmod u+s /us/bin/cat]
[root@localhost ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54048 Nov 20 2015 /usr/bin/cat

[root@localhost ~]# su - wangshibo
Last login: Thu Nov 3 11:11:10 CST 2016 on pts/1
[wangshibo@localhost ~]$ cat /etc/shadow
root:$6$MeFkhhGG$4XBmni8ZudmW.Im1ZMRYOAV209Z0iTFH4Xxmonew/qL8x3K/iA1p86LUyFdHmeV5.2fOhU3KsXMPajE5GmGjx1:17093:0:99999:7:::
bin:*:16659:0:99999:7:::
daemon:*:16659:0:99999:7:::
adm:*:16659:0:99999:7:::
.......

2)sgid权限:针对文件的话,sgid只对二进制程序有用;程序执行着要有x权限;执行者在执行过程当中会得到改程序用户组的权限(至关于临时加入了程序的用户组)
sgid会在所属用户组权限本应是x的地方显示s;
设置sgid权限,只需在文件当前数字权限前面加2。

注意:
除了直接在数字权限前加2设置sgid权限外,还能够用下面的方法
chmod g+s filenae             #设置suid权限
chmod g-s filename           #取消suid权限

案例说明:普通用户使用locate命令(yum install mlocate,以后就会有locate命令)
[root@localhost src]# which locate
/usr/bin/locate
[root@localhost src]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate

发现/usr/bin/locate文件中用户组权限中应该出现x的位置显示的s,表示这个locate命令具备sgid权限,而普通用户只有x权限而没有rw权限。

locate这个命令,实际上会去访问/var/lib/mlocate/mlocate.db这个文件。以下可知:
这个mlocate.db文件对于普通用户没有任何权限,因此理论上普通用户执行locate命令是不行的。
不过由于locate命令有sgid权限,因此运行locate生成进程时,这个进程会获得locate命令的用户组权限,至关于wangshibo这个用户被临时加入了用户组slocate。
因而就对mlocate.db这个文件有了r权限,能够访问了!
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 4238642 Nov 3 11:51 /var/lib/mlocate/mlocate.db

sgid针对目录的话:用户对此目录有rx权限能够进入目录,用户进入此目录后,有效用户组会变成该目录的用户组;若用户在此目录有w权限,则用户建立的文件用户组与该目录用户组相同。

案例说明:
若是咱们团队想在linux某个目录(好比/home/project)下协同工做来作一个项目,那么每一个团队成员都得对这个project目录下的全部文件具备rwx权限。

作法:
首先新建一个用户组(好比work),再新建几个帐号(好比wangshibo、guohuihui),每一个帐号的用户组都加入刚才新建的那个用户组。
而后再把/home/project权限设为770,把这个目录的用户组改成work用户组,接着给这个目录加入sgid权限。
也就是说在这个目录下,work组内的任意一个用户建立的文件,文件用户组都会是这个目录的用户组(即work)。
这样的话,全部work组内的用户在/home/project目录下建立的文件,其余同组用户都有权限操做。

[root@localhost home]# groupadd work
[root@localhost home]# gpasswd -a guohuihui work
Adding user guohuihui to group work
[root@localhost home]# usermod -G work wangshibo
[root@localhost home]# id guohuihui
uid=1002(guohuihui) gid=1002(guohuihui) groups=1002(guohuihui),1003(work)
[root@localhost home]# id wangshibo
uid=1001(wangshibo) gid=1001(wangshibo) groups=1001(wangshibo),1003(work)

[root@localhost home]# mkdir project
[root@localhost home]# ll -d project
drwxr-xr-x. 2 root root 6 Nov 3 12:03 project
[root@localhost home]# chmod 770 project
[root@localhost home]# ll -d project
drwxrwx---. 2 root root 6 Nov 3 12:03 project
[root@localhost home]# chgrp work project/
[root@localhost home]# ll -d project/
drwxrwx---. 2 root work 6 Nov 3 12:03 project/
[root@localhost home]# chmod g+s /home/project
[root@localhost home]# ll -d project/
drwxrws---. 2 root work 18 Nov 3 13:07 project/

接着来看下效果:如今在wangshibo帐号下操做
[root@localhost ~]# su - wangshibo
[wangshibo@localhost ~]$ ll -d /home/project/
drwxrws---. 2 root work 6 Nov 3 13:10 /home/project/
[wangshibo@localhost ~]$ cd /home/project/
[wangshibo@localhost project]$ echo "123" > wangshibo.txt
[wangshibo@localhost project]$ ll wangshibo.txt                        #发现建立的文件的权限的全部者是work
-rw-rw-r--. 1 wangshibo work 4 Nov 3 13:11 wangshibo.txt

而后登录guohuihui帐号验证下,发现能够正常操做上面的wangshibo.txt文件。
[root@localhost ~]# su - guohuihui
[guohuihui@localhost ~]$ cd /home/project/
[guohuihui@localhost project]$ ll wangshibo.txt
-rw-rw-r--. 1 wangshibo work 4 Nov 3 13:11 wangshibo.txt
[guohuihui@localhost project]$ echo "guohuihui123123" > wangshibo.txt
[guohuihui@localhost project]$ cat wangshibo.txt
guohuihui123123
[guohuihui@localhost project]$ touch guohuihui.txt
[guohuihui@localhost project]$ ll
-rw-rw-r--. 1 guohuihui work 0 Nov 3 13:12 guohuihui.txt
-rw-rw-r--. 1 wangshibo work 16 Nov 3 13:12 wangshibo.txt

**************************************************************************************************
小知识点:
将一个用户添加到一个组内的两种方法:
“gpasswd -a 用户名 组名”
“usermod -G 组名 用户名”

将一个用户从组内删除
“gpasswd -d 用户名 组名 ”
*************************************************************************************************

3)t权限:只能针对目录而言,对文件来讲无效!当用户对目录拥有wx权限时,用户在该目录建立的文件或目录,只有本身与root才能够删除。
案例说明:
[root@localhost src]#cd /usr/local/src
[root@localhost src]# touch aa
[root@localhost src]# ll
总用量 0
-rw-rw-r--. 1 root root 0 8月 28 05:21 aa 【注意,设置sgid权限,要保证文件的所属组有操做权限】
[root@localhost src]# chown wutao.wutao aa
[root@localhost src]# ll
总用量 0
-rw-r--r--. 1 wutao wutao 0 8月 28 05:15 aa
[root@localhost src]# su - wangshibo
[wangshibo@localhost ~]$ cd /usr/local/src/
[wangshibo@localhost src]$ ls
aa
[wangshibo@localhost src]$ echo 123 > aa 因为a文件是wutao账号下的文件,wangshibo用户没有操做权限
-bash: aa: 权限不够
[wangshibo@localhost src]$

如今给a文件设置sgid权限,那么wangshibo用户只要在wutao组内,就能对a文件有操做权限

*******************************************************************************************
小知识点:
将一个用户拉到一个组内的两种方法:
“gpasswd -a 用户名 组名”
“usermod -G 组名 用户名”

将一个用户从组内删除
“gpasswd -d 用户名 组名 ”
******************************************************************************************

[root@localhost src]# chmod 2664 aa 【设置sgid权限】
[root@localhost src]# ll
总用量 0
-rw-rwSr--. 1 wutao wutao 0 8月 28 05:21 aa
[root@localhost src]# gpasswd -a wangshibo wutao 【将wangshibo用户拉到wutao组内】
Adding user wangshibo to group wutao
[root@localhost src]# id wangshibo
uid=501(wangshibo) gid=501(wangshibo) 组=501(wangshibo),500(wutao)

[root@localhost src]# su - wangshibo
[wangshibo@localhost ~]$ cd /usr/local/src/
[wangshibo@localhost src]$ echo 123 > aa 这样,wangshibo用户就能草组aa文件了
[wangshibo@localhost src]$

针对t权限的例子:
注意:t权限只对目录设置有效!
/tmp目录是linux下的一个临时目录,通常会设置777权限,为了方面其余用户都能在这个目录下操做,其实就是一个共用目录,你们均可以用!
但有时有些目录在tmp下存放本身的比较重要的文件,不想让其余用户操做,安全起见,会给tmp目录设置t权限!

[root@localhost ~]# ll -d /tmp
drwxrwxrwx. 20 root root 4096 8月 28 05:32 /tmp 【tmp临时目录是777权限】
[root@localhost ~]# su - wutao
[wutao@localhost ~]$ cd /tmp/
[wutao@localhost tmp]$ vim sss
[wutao@localhost tmp]$ ll sss
-rw-rw-r--. 1 wutao wutao 7 8月 28 05:33 sss 【这个文件全部者是wutao】
[wutao@localhost tmp]$ logout
[root@localhost ~]# su - wangshibo
[wangshibo@localhost ~]$ ll /tmp/sss 【其余用户对tmp临时目录下非本身所建立的文件也开能够操做】
-rw-rw-r--. 1 wutao wutao 7 8月 28 05:33 /tmp/sss
[wangshibo@localhost ~]$ echo 123123 > /tmp/s

如今为了安全起见,在tmp临时目录下建立的文件,除了本身和root外,其余用户都不能操做。也就是非共用了!!
那么这个时候就要给tmp设置t权限了!
[root@localhost ~]# ll -d /tmp
drwxrwxrwx. 20 root root 4096 8月 28 05:33 /tmp
[root@localhost ~]# chmod 1777 /tmp 【设置t权限】
[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 20 root root 4096 8月 28 05:33 /tmp
[root@localhost ~]# su - wangshibo
[wangshibo@localhost ~]$ ll -d /tmp
drwxrwxrwt. 20 root root 4096 8月 28 05:37 /tmp
[wangshibo@localhost ~]$ ll /tmp/sss
-rw-rw-r--. 1 wutao wutao 4 8月 28 05:36 /tmp/sss
[wangshibo@localhost ~]$ echo 555 > /tmp/sss
-bash: /tmp/sss: 权限不够
[wangshibo@localhost ~]$

这个时候,wangshibo用户就不能操做sss文件了。若是要想再拥有操做权限,能够把wangshibo用户加到wutao组内,由于sss文件所在组有w写权限。

(5)sudo权限-----------------------------------------------------------------------
通常状况下,使用su命令在用户之间切换,须要知道对方密码。好比su切换到root下,须要知道root密码。
但使用sudo命令,就不须要知道root密码,只须要输入本身帐号密码便可!前提是须要将相关帐号设置sudo权限

sudo权限: 是为了让普通用户执行只有root用户才能执行的操做命令(这种方式无需知道root密码)
sudo所在文件:/etc/sudoers,编辑该文件的命令是visudo,不过只能在root帐号下可使用该命令,且若是上一次visudo编译未退出状态下,不能从新visudo进行编辑(也能够直接vi编辑/etc/sudoers文件)

强烈推荐使用visudo命令修改sudoers,由于它会帮你校验文件配置是否正确,若是不正确,在保存退出时就会提示你哪段配置出错的。

sudo的工做过程以下:
1)当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2)确认用户具备可执行sudo的权限后,让用户输入用户本身的密码确认
3)若密码输入成功,则开始执行sudo后续的命令
4)root执行sudo时不须要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
5)若欲切换的身份与执行者的身份相同,也不须要输入密码

Sudo的特性:
sudo可以限制用户只在某台主机上运行某些命令。
sudo提供了丰富的日志,详细地记录了每一个用户干了什么。它可以将日志传到中心主机或者日志服务器。
sudo使用时间戳文件来执行相似的“检票”系统。当用户调用sudo而且输入它的密码时,用户得到了一张存活期为5分钟的票(这个值能够在编译的时候改变)。也就是说,我刚刚输入了sudocat /etc/issue 而后能够再次只须要输入cat/etc/issue便可,不须要再次输入sudo。
sudo的配置文件是sudoers文件,它容许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。

-----------------------------------------------------------------------------------------------------------
su和sudo切换命令的时候,注意有个-
加-,表示不只切换到用户下,连同用户的系统环境变量也切换进来了 【切换先后执行env看下环境变量】
不加-,表示仅仅切换到用户状态下,用户的系统环境变量没有切换进来

su root 仅仅切换到root用户状态下,root的系统环境变量没有切换过来 【好比说有些只能在root下操做的命令,不加-虽然切换到root下了,可是还不能操做】
su - root 不只切换到root下了,root的系统环境变量也切换过来了
---------------------------------------------------------------------------------------------------------

经常使用sudo权限的安全设置通常能够知足下面4个条件:
1.禁止普通用户使用sudo 命令切换到root模式下
2.用户使用sudo命令,必须每次都输入密码
3.用户组管理(组内添加和删除用户)以及组权限管理设置
4.使用别名(用户名以及命令的别名)进行设置

1.禁止普通用户使用sudo su切换到root用户模式下
总所周知,只要给普通用户设置了sudo权限,那么它就可使用“sudo su root”命令切换到root用户下(只要知道本身的密码便可,sudo权限只要输入本身的密码),这是很不安全的。必须禁止这种作法。
只须要在sudo的配置文件里添加下面内容便可。

sudo切换到root模式下有如下几种方式:
1)sudo su -
2)sudo -s
3)sudo su root
4)sudo su - root
5)sudo -u root su

在root帐号下输入visudo(或/etc/sudoers)命令,设置以下:

如上设置,表示wangshibo用户在使用sudo权限后,禁止使用bash和su命令。也就是说:禁止了该用户使用sudo切换到root模式下了
其中:
!/bin/bash 是禁止了sudo -s的切换
!/bin/su 是禁止了sudo中带su的切换

=============ubuntu下设置普通用户的sudo无密码登陆===========

# User privilege specification
root	ALL=(ALL:ALL) ALL
kevin   ALL=(ALL) NOPASSWD: ALL 

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) NOPASSWD:ALL                                     #这一行也要添加"NOPASSWD",不然前面的普通用户设置的sudo无密码切换无效!

********************************禁止帐号间使用su命令切换*******************

su的缺点
1)不安全su工具在多人参与的系统管理中,并非最好的选择,su只适用于一两我的参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中。
2)麻烦:须要把root密码告知每一个须要root权限的人。

能够在/etc/pam.d/su文件里设置禁止用户使用su命令
#vim /etc/pam.d/su
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid

以上标红的两行是默认状态,这种状态下是容许全部用户间使用su命令进行切换的!
若是开启第二行,表示只有root用户和wheel组内的用户才可使用su命令。
若是注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
*********************************************************************

以上设置表示:wangshibo帐号在使用sudo时不享有root用户状态下的权限,即sudo状态下享有除root以外的其余用户状态下的权限。
默认是(ALL),即sudo享有全部用户状态下的权限。

---------------------------------------------------------------------------------------
root ALL=(ALL) ALL
以上是/etc/sudoers配置文件中默认定义的用户sudo设置,其中解释以下:
1)第一个字段root指定的是用户:能够是用户名,也能够是别名。每一个用户设置一行,多个用户设置多行,也能够将多个用户设置成一个别名后再进行设置。
2)第二个字段ALL指定的是用户所在的主机:能够是ip,也能够是主机名,表示这个sudo设置后的文件(/etc/sudoers)只在这个主机上生效,ALL表示在全部主机上都生效!限制的通常都是本机,也就是限制使用这个文件的主机,若是指定为:192.168.1.88= 表示这个文件只有在这台主机上生效,若是拷贝到别的机子上是不起做用的!通常都指定为:ALL 表示全部的主机,无论文件拷到那里均可以用。
3)第三个字段(ALL)括号里指定的也是用户:指定以什么用户身份执行sudo,即便用sudo后能够享有全部帐号下的权限。若是要排除个别用户,能够在括号内设置,好比ALL=(ALL,!root,!ops)。也能够设置别名
4)第四个字段ALL指定的是执行的命令:即便用sudo后能够执行全部的命令。也能够设置别名
---------------------------------------------------------------------------------------

2.用户使用sudo命令,必须每次都输入密码
在/etc/sudoers文件里添加内容“Defaults timestamp_timeout=0”
即表示每次使用sudo命令时都要输入密码。

-----------------------------------------------------------------------------------------
还能够经过设置命令的别名进行权限设置。
即将一系列命令放在一块儿设置一个别名,而后对别名进行权限设置。注意:别名必定要是大写字母
Delegating permissions 代理权限相关命令别名

以上设置说明:
wnagshibo用户在sudo权限下只能使用ls,rm,tail命令
----------------------------------------------------------------------------------------

3.用户组管理(组内添加和删除用户)以及组权限管理设置

进行用户权限管理,设置sudo权限时,能够设置组的权限,不一样的组有不一样的权限,而后将用户拉到相应权限的组内。
将一个用户拉入到一个组内,有下面两种方法:
1)usermod -G 组名 用户名
2)gpasswd -a 用户名 组名     #添加到组内
    gpasswd -d 用户名 组名     #从组内删除

以上设置表示wheel组内的用户在使用sudo权限后,禁止使用bash和su命令,也就是禁止了该组内用户使用sudo切换到root模式下了

4.使用别名进行sudo权限设置。
Alise设置别名有如下四种状况:
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias

1)配置Host_Alias:就是主机的列表,可使用主机名,也可使用ip,不过在同一个别名内不能同时混用主机名和ip地址!
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
Host_Alias HOST_FLAG1 = 192.168.1.12, 192.1681.13, 192.168.1.14
Host_Alias HOST_FLAG2 = hostname1, 192.1681.13, 192.168.1.14                 #这种设置是错误的!不能在同一个别名内混用主机名和ip
2)配置Cmnd_Alias:就是容许执行的命令的列表,命令前加上!表示不能执行此命令.
命令必定要使用绝对路径,避免其余目录的同名命令被执行,形成安全隐患,所以使用的时候也是使用绝对路径!
Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4
3)配置User_Alias:就是具备sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4)配置Runas_Alias:就是用户以什么身份执行(例如root)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

使用别名配置权限的格式以下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
若是不须要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD:COMMAND_FLAG

案例说明:
例如1:把wangsb,wangbz,songj用户设置成别名ADMINS,都拥有duso权限
#visudo
User_Alias ADMINS = wangsb, songj,wangbz
......
ADMINS ALL=(ALL) ALL

例如2:把visudo、chown、chmod等命令设置成别名DELEGATING,别名ADMINS里面的用户都禁用DELEGATING里面的命令
#visudo
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
......
ADMINS ALL=(ALL) ALL,!DELEGATING
.......

综合使用
[root@test-huanqiu ~]# visudo
........
User_Alias ADMINS = wangbz,zhoulw,songj,wangsb
.......
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
.......
root ALL=(ALL) ALL
ADMINS ALL=(ALL) ALL,!DELEGATING,!/bin/bash,!/bin/su
.......
Defaults timestamp_timeout = 0

其余的能够参考:sudo命令使用的几个场景

-----------------------------------------------------------------------
下面是在线上服务器上用过的一个小设置:

[root@hqsb_web1 ~]# visudo
.......
Defaults timestamp_timeout=0       //表示每次sudo时都要强行输入密码
.......
kevin  ALL=(ALL)       /usr/bin/tail,/bin/gzip,/usr/bin/vim,/bin/chown,/bin/chmod,/Data/app/nginx/sbin/nginx    //kevin用户在使用sudo时只能使用这几个命令,其余sudo命令所有禁止!

grace  ALL=(ALL)       ALL,!/bin/bash,!/bin/su,!/bin/chown,!/bin/chmod,!/sbin/init,!/sbin/reboot,!/sbin/poweroff    //grace用户使用sudo时,禁止后面设置的命令,其余的均可以使用。

-------------------------------------------------------------------------------------------------------------------
最后解释下sudo权限配置文件:使用visudo命令打开sudo配置文件,以下:## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ## 该文件容许特定用户像root用户同样使用各类各样的命令,而不须要root用户的密码 ## ## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular ## users or groups. ## 在文件的底部提供了不少相关命令的示例以供选择,这些示例均可以被特定用户或 ## 用户组所使用 ## ## This file must be edited with the 'visudo' command. ## 该文件必须使用"visudo"命令编辑 ## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. ## 对于一组服务器,你可能会更喜欢使用主机名(多是全域名的通配符) ## 、或IP地址,这时能够配置主机别名 # 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 ## These are groups of related commands... ## 指定一系列相互关联的命令(固然能够是一个)的别名,经过赋予该别名sudo权限, ## 能够经过sudo调用全部别名包含的命令,下面是一些示例 ## Networking 网络操做相关命令别名 # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient , /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig , /sbin/mii-tool ## Installation and management of software 软件安装管理相关命令别名 # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum ## Services 服务相关命令别名 # Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig ## Updating the locate database 本地数据库升级命令别名 # Cmnd_Alias LOCATE = /usr/bin/updatedb ## Storage 磁盘操做相关命令别名 # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe , /bin/mount, /bin/umount ## Delegating permissions 代理权限相关命令别名 # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Processes 进程相关命令别名 # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall ## Drivers 驱动命令别名 # Cmnd_Alias DRIVERS = /sbin/modprobe # Defaults specification # # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # 一些环境变量的相关配置,具体状况可见man soduers Defaults requiretty Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin ## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## 下面是规则配置:什么用户在哪台服务器上能够执行哪些命令(sudoers文件能够在多个系统上共享) ## Syntax(语法): ## ## user MACHINE=COMMANDS 用户 登陆的主机=(能够变换的身份) 能够执行的命令 ## ## The COMMANDS section may have other options added to it. ## 命令部分能够附带一些其它的选项 ## ## Allow root to run any commands anywhere ## 容许root用户执行任意路径下的任意命令 root ALL=(ALL) ALL ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. ## 容许sys中户组中的用户使用NETWORKING等全部别名中配置的命令 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE , DRIVERS ## Allows people in group wheel to run all commands ## 容许wheel用户组中的用户执行全部命令 %wheel ALL=(ALL) ALL ## Same thing without a password ## 容许wheel用户组中的用户在不输入该用户的密码的状况下使用全部命令 # %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the ## cdrom as root ## 容许users用户组中的用户像root用户同样使用mount、unmount、chrom命令 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system ## 容许users用户组中的用户关闭localhost这台服务器 # %users localhost=/sbin/shutdown -h now ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) ## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明) #includedir /etc/sudoers.d

相关文章
相关标签/搜索