lunix系统都是以文件的形式存在,自然而然的就会要求不同的用户拥有不同的权限,这也是系统能够运行的根本保证,下文将对文件的权限管理进行简要的介绍。
1、文件属性的查看
- | rw-rw-r--. | 1 | kiosk | kiosk | 0 | Jul 23 18 :26 | file
— —————— —— ———— ———— —— —————————— ————
1 2 3 4 5 6 7 8
1.1、"-":文件类型
常见的文件类型有:
- 普通文件
d 目录
c 字符设备
s 套接字
p 管道
b 块设备
l 连接 快捷方式 软连接
1.2、"rw-rw-r--":文件读写权限
rw- | rw- | r--
@ * #
@表示所有人的权限,*表示所有组的权限,#表示其他人的权限。
1.3、"1"
文件内容被系统记录的次数,即要删除时删除的次数。如果是目录,就代表目录中文件属性的字节数。
1.4、"kiosk"
表示文件所有人。
1.5、"kiosk"
表示文件所有组。
1.6、"0"
表示文件内容的大小。
1.7、"Jul 23 18:26"
表示文件最后一次被修改的时间。
1.8、"file"
表示文件的名字。
2、文件所有人所有组的管理
在对文件进行管理时,有时需要改变文件或者目录的所有人或者所有组,就需要用到"chown"命令。
命令"chown username file|directory"表示更改文件的所有人,例如将"file"文件的所有人改为"wea"。
命令"chown username.groupname file|directory"表示更改所有人所有组。例如将"file"文件的所有人和所有组改为"tom"。
命令"chgrp groupname file|directory"表示更改所有组。例如将"file"文件的所有组改为"wea"。
此外,如果在改目录所有人或者所有组的时候加入参数"-R",则表示更改目录本身及里面所有人或者所有组。
3、文件的普通权限
rw- | rw- | r--
u g o
u说明文件所有人对文件可以读写,g说明文件组成员对文件可读,o说明其他人对文件可读。文件的普通权限有wrx三种。
3.1、w
"w"对于文件来说可以更改文件内字符,对于目录来说,可以在目录中添加删除文件。
3.2、r
"r"对于文件来说可以查看文件中的字符,对于目录来说,可以查看目录中文件的信息。
3.3、x
"x"对于文件来说可以运行文件内记录的程序动作,对于目录来说,可以进入目录中。
3.4、修改该文件权限
修改文件权限的命令为"chmod <u|g|o><+|-|=><r|w|x> file|directory"。例如下图,输入"chmod u+x file"在所有人权限上添加x。
输入"chmod g+w file"在所有组权限上添加"w"。
输入"chmod u-x,g-w file"在所有人权限上去掉"x",并在所有组权限上去掉"w"。
输入"chmod ugo+x file"表示在所有人、所有组和其他人权限上添加"x"。
3.5、数字修改权限的方式
在修改权限时,上述命令用起来过于繁琐,所有可以用数字代替。在linux中,r=4、w=2、x=1。所以命令"chmod u+rwx,og-wrx file"也可以写为"chmod 700 file",明显简单了许多。
4、系统默认权限的设定
从系统存在角度来说,开放权力越大,系统存在意义越高。但是从系统安全角度来说,开放权力越少,系统安全性越高。所以系统设定新建文件或目录会去掉一些权限。
查看系统保留权限的命令是"umask",在当前的shell中可以临时修改系统保留权限,之在当前shell中有效,例如将系统保留权限设为"077",代表建立的文件权限为700。
上述修改系统保留权限只能临时生效,如果需要永久生效,则需要作以下设定。
输入命令"vim /etc/bashrc",002为普通用户默认权限,077为超级用户默认权限。
输入命令"vim /etc/profile"。
在上图的地方设置需要的umask值,但需要注意的是,以上两个文件umask设定值必须保持一致,完成之后输入"source /etc/bashrc"和"source /etc/profile"让设定立即生效。
5、文件访问(acl)的设定
5.1、acl的定义
"acl"就是"access control",是指定特殊用户对特殊文件有特殊权。输入命令"getfacl file|directory"就可以查看特殊权限列表。例如下图输入"getfacl file",查看权限列表。在结果中,"file:file"是文件名,"owner: root"是文件所有人,"group: root"是组所有人,"user:rwx"是文件拥有者权限,"group::rwx"是组权限,"other::rwx"是其他人权限,如果出现"mask::rwx"则是权限掩码,如果出现"user:username:rwx"则是特殊用户权限。
需要注意的是,当文件上有权限列表时,"ls -l"能看到的权限是假的。
5.2、设定acl列表
添加acl列表的命令是"setfacl -m <u|g>:<username|groupname>:权限 文件|目录"。如下图,添加"wea"用户为特殊用户,有特殊权限"rwx"。
删除acl列表的命令是"setfacl -x <u|g>:<username|groupname> 文件|目录"。如下图删除刚才所添加的特殊用户"wea"。
关闭acl列表可以使用命令"setfacl -b 文件|目录"。
5.3、mask值
mask是权限掩码,用来表示能够赋予用户最大权限,但是当用chmod改变文件普通权限时可能会破坏,如下图所示。
上述情况如果需要修复,则需要输入命令"setfacl -m m:7 文件名称"。
5.4、acl默认权限的设置
当我们需求某个目录对于wea用户可写,并且目录中新建的子目录也对这个用户可写,就要设定默认权限。设定默认权限的命令为"setfacl -m d:u:wea:7 test/"。如下图所示,在原目录中重新建立一个子目录后发现新建的目录对"wea"也可写。
但是,默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,对于目录本身也无效。
6、特殊权限
6.1、冒险位权限suid
此权限只针对二进制可执行文件,使用效果是文件内记录的程序产生的进程的所有人为文件所有人,和和进程发起人身份无关。设定方式为:"chmod u+s file"或者"chmod 4xxx file"。
例如下图,一般情况下wea用户并不能删除"/root/test",输入"chmod u+s /bin/rm"命令之后,使得删除时删除进程的所有人为root,从而删除"/root/test"。
6.2、强制位权限sgid
此权限主要应用与目录,使用效果是目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关。设定方式为:"chmod g+s directory"或者"chmod 2xxx directory"。
例如下图,可以看到当wea用户在"/mnt/test"目录下建立文件时,文件的所有组为"wea",但是如果输入命令"chmod g+s /mnt/test"之后,wea所建立的文件自动归属于目录的所有组"root"。
6.3、粘制位权限sticky
此权限只针对于目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除。命令为:"chmod o+t direcotry"或者"chmod 1777 direcotry"。
例如下图,可以看出,在一般情况下,student用户是可以删除wea用户所建立的文件的。但是,在输入"chmod o+t /mnt/test"命令之后,student用户无法删除wea用户所建立的文件"file"。
以上就是在linux系统的操作中关于文件权限的主要内容。