1.文件权限
1.文件权限的查看
ls -l file
ls -ld dir
ll file
ll -d dir
2.文件权限的读取
注:前7项各占一个字节,第8项占实际字节数
[6]的内容对目录而言是元数据的大小,对文件而言是其内容所占的字节数
建立一个空目录,其本身大小为6字节,其内的文件可以根据字节数计算
[1]文件的类型
- ##空文件或者文本
d ##目录
l ##软链接(类似windows快捷方式)
s ##socket 套接字
b ##block 块设备
c ##字符设备
[2]文件的权限
rw- | rw- | r–
1 2 3
1.[u] 文件拥有者对文件能做什么操作
2.[g] 文件所有组对文件能做什么操作
3.[o] 其他人对文件能做什么操作
[3]
对文件:文件硬链接个数(文件内容被记录的次数)
对目录:目录中子目录的个数
[4]文件的所有人
[5]文件所有组
[6]
对文件:文件大小
对目录:目录中子文件元数据(matedate可以理解为文件的属性)大小
[7]文件的内容被修改的时间
[8]文件的名称
2.改变文件的所有人和所有组
chown|chgrp
chown username file|dir
chown user.group file|dir
chown -R user.group dir
chgrp group file|dir
使用root 新建的文件,其拥有者与拥有组都是root,我们可以使用上面命令对root.root进行更改:
2.对于文件权限的更改
1)对权限的理解
r(read)
对文件:是否可以查看文件的内容
对目录:是否可以查看目录里有什么字文件或字目录
w(write)
对文件:是否可以修改文件的内容
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x(execute)
对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
2)文件权限的更改
1.第一种方式:
chmod <u|g|o><+|-|=><r|w|x> file|dir
##u=user;g=group;o=other
chmod u+x /mnt/file1
chmod g-r /mnt/file2
chmod ug-r /mnt/file3
chmod u-r,g+x /mnt/file4
chmod -r /mnt/file5
chmod o=r-x /mnt/file6
2.第二种方式
rwx r=4 w=2 x=1
则:
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
使用命令: chmod num file|dir
3.umask值
umask
系统建立文件时默认保留的权力
命令umask 可直接显示系统的umask值:
这表示root在新建文件或者目录时,其文件权限一律为755,但是我们新建的/mnt/file4文件权限却为644,这是因为在新建文件时文件系统保留了各个位的x值。
命令:umask 077 ##临时设定系统预留权限为077
临时更改umask值为077,则新建目录的权限为700,即drwx------
如何永久更改umask
vim /etc/profile ##系统配置文件
vim /etc/bashrc ##shell配置文件
vim /etc/profile:未更改之前:
将root用户的umask值改为077:
同理:vim /etc/bashrc 中将umask值作相应改变:
更改完成后,使用下面的命令让更改立即生效:
source /etc/profile
source /etc/bashrc
我们在使用umask命令,就可以看到umask值已经更改:
4.文件的特殊权限
1.sticky ##粘制位
作用:
只针对目录生效,当一个目录上有sticky权限时
在这个目录中的文件只能被文件的所有者(即便是用户组不同也可以删除)删除
设定方式:
chmod o+t dir
chmod 1xxx dir
我们可以看到,将/mnt/test目录other位权限改为rwt,将用户切换到普通用户tom,tom可以建立/删除属于自己的文件file2,但是不能删除属于student用户的文件file.
2.sgid ##强制位
作用:
对文件: 只针对与二进制可执行文件
当文件上有sgid时任何人执行此文件产成的进程都属于文件的组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式
chmod g+s file|dir
chmod 2xxx file|dir
我们可以看到,将test目录的用户组改为tom,再使用 chmod g+s file|dir
将group位的权限改为rws后,使用touch 新建的文件file2的用户组依然为tom,而修改权限前就已经存在的两个文件file、file1的属性仍不改变,说明更改过的权限只对更改后再新建的文件生效,对之前已经存在的文件不生效。
3.suid ##冒险位
只针对与2进制可执行文件
当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人
设定方式
chmod u+s file
chmod 4xxx file
5.acl权限
1.作用:让特定的用户对特定的文件拥有特定权限,开启acl权限之后,文件的权限以acl权限为标准,原本的权限失效。
2.acl列表查看
例如:
-rw-rwxr--+ 1 root root 0 Jul 21 15:45 file “+”号表示acl权限开启
命令:getfacl file ##查看开启acl的文件的权限
内容:
# file: file ##文件名称
# owner: root ##文件拥有者
# group: root ##文件拥有组
user::rw- ##文件拥有人的权限
user:kiosk:rwx ##指定用户的权限
group::r-- ##文件拥有组的权力
mask::rwx ##能赋予用户的最大权力伐值
other::r-- ##其他人的权限
3.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列表
4.mask值
在权限列表中mask标示能生效的权力值
当用chmod减小开启acl的文件权限时mask值会发生改变chmod g-w westos
如果要恢复mask值setfacl -m m:rwx westos
我们可以看到,当改变了mask值,用户与组后面会根据修改的mask值产生一个有效(effective)的权限,表明对于student用户只有r-x权限,tom组只有r- -权限。
5.acl的默认权限设定
acl默认权限只针对目录设定
"acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限"
setfacl -m d:u:student:rwx /mnt/westos ##设置acl默认设置
setfacl -k /mnt/westos ##取消acl默认设置
当目录/mnt/test具有acl默认权限时,在此目录下新建的文件会继承目录中默认的acl 权限。
当取消acl默认设置,其内的文件file0仍保留之前的acl权限,而新建的文件file1则不具有之前的acl权限。