Linux中的文件权限

文件权限

1.文件权限的意义

系统最底层的安全设定
保证文件可以被用户做指定的相应操作

2.文件权限的查看

ls -l file
ls -ld dir
ll file file
ll -d dir
Linux中的文件权限

3.文件权限的读取

(1)使用上述查看命令查看文件属性,会出现这样的信息:

  • |rw-rw-r–| 1 |kiosk| |kiosk| 0 Oct 27 03:14 | file
    [1] [2] [3] [4] [5] [6] [7] [8]

[1] 文件的类型

  • 空文件或文本
    d 目录
    l 软链接
    s socket套接字
    b block块设备
    c 字符设备

[2] 文件权限

rw-|rw-|r–
a [b] [c]

[b]:用户组对文件或目录的权限
[c]:其他用户对文件或目录的权限

[3] 文件被硬链接的次数

[4]文件所有人

[5]文件所有组

[6] 文件大小

[7] 文件最后修改日期

[8] 文件名

4权限的设置和修改

1.在linux中文件的权限分为用户权限,用户组权限,others权限。
为了方便观察,使用监控命令
watch -n 1 ls-lR dir
初始信息为:

Linux中的文件权限

2.chown 改变所有者(组)
chown username file/dir 改变文件或目录的所有人
Linux中的文件权限
chown username.groupname file/dir 改变文件或目录的所有人和所有组
Linux中的文件权限
以上命令适用于修改单个文件或目录的信息,不会修改目录中文件的所有人和所有组。

chown -R username dir 改变目录及里面内容的所有人
Linux中的文件权限

chgrp 改变用户组
chgrp -R groupname dir 修改目录及里面内容的所有组
Linux中的文件权限

**3.chmod 改变文件或目录的权限
要修改权限,首先要理解权限
1.关于文件的普通权限,分析如下:
(1)r
对文件:可以查看文件中的字符
对目录:可以查看目录中文件的信息
(2)w
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件
(3)x
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录中

chmod u[+/-][r/w/x] file1
chmod g[+/][r/w/x] file1
chmod o[+/-][r/w/x] file1
chmod ugo[+/-][r/w/x] file1

修改文件权限:
Linux中的文件权限
修改目录权限:

Linux中的文件权限
除此之外,还有一种便捷的方法:直接赋值数字
规则为:r=4,w=2,x=1
也就是说u,g,o三者分别的最大权限为7,那对所有用户可读,可写,可执行就是‘777’

Linux中的文件权限
3.umask
umask 为系统建立为建立目录默认保留的权力,新建目录时默认从‘777’减去的权力。

一般默认为:umask 022

临时更改umask值:
Linux中的文件权限
永久更改umask:修改配置文件
vim /etc/profile
vim /etc/bashrc
更改前:
Linux中的文件权限
更改后:
Linux中的文件权限
Linux中的文件权限

更改完成后需使用source命令重新读取两个配置文件中的值,两个文件分别表示在进程或bash中创建时默认umask值,这两个文件中的值必须保持一致。

4.特殊权限
(1):sticky ##粘制位
作用:只针对目录生效,当一个目录具有sticky权限时,此目录中的文件只能被所有者删除

chmod o+t dir
chmod 1xxx dir

(2):sgid ##强制位
作用: 文件:如果文件具有sgid ,那么任何人执行该文件产生的进程都属于该文件的所有组 (只针对二进制可执行文件)
目录:如果目录具有sgid,那么任何人在此目录中建立的文件都属于该目录的所有组

chmod g+s dir|file .
chmod 2xxx dir|file

(3):suid ##冒险位
作用: 文件:如果文件suid,那么任何人执行该文件产生的进程都属有该文件的用户

chmod u+s file
chmod 4xxx file

5:文件访问控制列表acl

acl能干什么:简单来说,就是让特定的用户对特定的文件拥有特定的权限

-rw-rw-r–+ 1 root root…
“+”符号表示此文件acl列表已开启

如何对acl列表进行操作?

getfacl file 查看file文件的acl列表(前提时file文件已开启acl列表)
setfacl -m u:username:rwx file 指定username用户对file文件具有rwx权限
setfacl -m g:group:rwx file 指定group组用户对file文件具有rwx权限
setfacl -x u:username file 从acl列表中删除username用户
setfacl -b file 关闭file文件的acl列表
Linux中的文件权限

其中mask表示能授予用户或用户组的最大权限,在开启acl列表后,mask值会随着chmod命令的执行而改变,虽然授予了权限,但生效的最大范围仅为mask的权限值,所以需要将改变后的mask值改回来,用此命令:
setfacl -m m:rwx file ##将file文件acl列表的mask改为rwx。

acl的默认权限设定:
需要注意的是,acl的默认权限只针对目录设定,且只对设定完成后新建的文件或目录生效,已经存在的文件或目录不会生效
setfacl -m d:u:student:rwx dir ##建立默认权限
setfacl -k dir ##删除默认权限
Linux中的文件权限