Linux文件篇

1.文件权限

# ls -l
总用量 40
drwxr-xr-x 2 tech tech 4096 827 13:08 Desktop
drwxr-xr-x 2 tech tech 4096 826 19:50 Documents
drwxr-xr-x 2 tech tech 4096 826 19:50 Downloads
...

第一列drwxr-xr-x:

首字母表示
-普通文件。
d目录文件。
l(link)链接文件。
b块设备文件。
c字符设备文件。
p管道文件。

接下来每3个字符分别表示所有者权限、所属组权限、其他用户权限,分别为:

字母含义
r对目录而言:表示可以浏览文件列表
对文件而言:表示可以浏览文件内容
4
w对目录而言:表示可以增加、删除、重命名文件
对文件而言:表示可以修改文件内容
2
x对目录而言:表示可以进入该目录
对文件而言:表示该文件是个可执行文件
1

第二列数字2表示文件的硬链接数,第三列为文件所有者,第四列为该文件或目录所属的组,第五列为占用磁盘大小,第六列为最后修改日期,最后一列是文件或目录名

drwxr-xr-x 2 tech tech 4096 8月 27 13:08 Desktop表示Desktop文件是一个目录,该文件权限的数字表示法为755,所有者为tech,所属组为tech,占用磁盘大小4096字节,最后修改时间为8月27日。


2.特殊权限

2.1SUID

允许二进制程序的执行者临时拥有所有者的权限,该程序需拥有执行(x属性)权限。

如果文件具有该属性,原本的所有者的执行权限位将变为小写字母s(如果文件原本拥有x,如rwx变为rws)或者大写字母S(如果文件原本无执行权限,如rw-变为rwS)

2.2SGID

1.允许二进制程序的执行者临时拥有所属组的权限,该程序需拥有执行(x属性)权限。
2.在拥有该属性的目录下创建的文件自动继承该目录的所属组(只可对目录设置)。

如果文件具有该属性,原本的所属组的执行权限位将变为小写字母s(如果文件原本拥有x,如rwx变为rws)或者大写字母S(如果文件原本无执行权限,如rw-变为rwS)


2.3SBIT

非目录的所有者不得删除该目录下的所有文件

如果文件具有该属性,原本的其他用户的执行权限位将变为小写字母t(如果文件原本拥有x,如rwx变为rwt)或者大写字母T(如果文件原本无执行权限,如rw-变为rwT)


2.4修改特殊权限的命令

2.4.1修改所有者和所属组命令chown

格式:chown 所有者:所属组 文件

oot@Machine:~# mkdir test
root@Machine:~# ls -l
drwxr-xr-x 2 root root 4096 94 00:28 test
root@Machine:~# chown tech:tech test
root@Machine:~# ls -l
drwxr-xr-x 2 tech tech 4096 94 00:28 test

2.4.2修改文件权限命令chmod

格式:chmod [选项] 模式 文件名

参数作用
-R递归设置子文件
-f抑制大部分错误消息
-v对每个文件输出过程
模式作用
三位有效数字设置普通权限
u+s设置SUID属性
g+s设置SGID属性
o+t设置SBIT属性

设置文件普通权限:

root@Machine:~# mkdir MyFile
root@Machine:~# ls -l
drwxr-xr-x 2 root root 4096 93 23:53 MyFile
root@Machine:~# chmod -Rf 770 MyFile/
root@Machine:~# ls -l
drwxrwx--- 2 root root 4096 93 23:53 MyFile

设置文件特殊权限:

root@Machine:~# ls -ld MyFile
drwxrwx--- 2 root root 4096 93 23:53 MyFile
root@Machine:~# chmod -Rf g+s MyFile
root@Machine:~# ls -ld MyFile
drwxrws--- 2 root root 4096 93 23:53 MyFile

3.隐藏属性

lsattr查看文件隐藏属性命令

格式:lsattr [参数] 文件

参数作用
-RRecursively list attributes of directories and their contents.
-VDisplay the program version.
-aList all files in directories, including files that start with . or ..
-dList directories like other files, rather than listing their contents.
-lPrint the options using long names instead of single character abbreviations.
-pList the file’s project number.
-vList the file’s version/generation number.

chattr设置文件隐藏权限命令

格式:chattr [参数] 文件

参数作用
i对文件设置:无法对文件进行修改
对目录设置:不能新增或删除文件,能修改子文件内容,
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用 dump 命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并(tail-merging)
X可以直接访问压缩文件中的内容
root@Machine:/home/tech/program# touch test
root@Machine:/home/tech/program# lsattr
--------------e----- ./test
root@Machine:/home/tech/program# chattr +a test
root@Machine:/home/tech/program# lsattr
-----a--------e----- ./test
root@Machine:/home/tech/program# rm -f test
rm: cannot remove 'test': Operation not permitted

+a表示增加a属性,-a表示移除a属性,=a表示设置a属性(其他属性均被移除)


4.文件访问控制列表(file access control lists)

如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。
1.对目录设置了 ACL,目录下的文件会继承ACL
2.对文件设置了ACL,文件不再继承所在目录的ACL

设置及获取命令

setfacl设置ACL属性命令
格式:setfacl [参数] 文件

参数作用
-R递归设置
-m修改ACL属性,命令行中ACL消息紧跟其后
-M修改ACL属性,从文件或标准输入中读取ACL
-x移除ACL属性,移除不存在的属性不是错误,命令行中ACL消息紧跟其后
-X移除ACL属性,移除不存在的属性不是错误,从文件或标准输入中读取ACL
--set--set-file设置文件或目录的ACL。以前的ACL被替换

getfacl 显示文件 ACL 属性命令
格式:getfacl 文件名称

例子

赋予tech用户读取/root文件的权限:

root@Machine:~# setfacl -m u:tech:r /root

撤消所有组和所有命名用户的写访问权限(使用有效权限掩码):

root@Machine:~# setfacl -m m::rx file

从文件的ACL中删除命名的组条目:

root@Machine:~# setfacl -x g:staff file

将一个文件的ACL复制到另一个文件:

root@Machine:~# getfacl file1 | setfacl --set-file=- file2

将访问ACL复制到默认ACL:

root@Machine:~# getfacl -a dir | setfacl -d -M- dir

注意:设置过ACL的文件使用ls -l命令可以看到普通权限属性后面多了一个+号

5资料来源

1.《Linux就该这么学》刘遄
2.man参考手册Ubuntu20.04
3.网络搜索

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值