Linux中一切皆文件!!
一、文件权限与归属
Linux中一切皆文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符类加以区分。
- -:普通文件
- d: 目录文件
- l : 链接文件
- b:块设备文件
- c: 字符设备文件
- p:管道文件
- Linux系统中,每个文件都有说是的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的权限
- Linux中关于文件权限,有(r、w、x)三个
- r : 读(read)数字表示— 4
- w :写(write) 数字表示— 2
- x :执行(execute)数字表示— 1
root@juzuodaliyun:/home/gw ll
total 280
drwxr-xr-x 26 gw gw 4096 Apr 12 12:51 ./
drwxr-xr-x 5 root root 4096 May 4 21:31 ../
drwxr-xr-x 23 gw gw 4096 Jul 31 2019 anaconda3/
-rw------- 1 gw gw 4787 Oct 26 2019 .bash_history
-rw-r--r-- 1 gw gw 220 Jul 19 2019 .bash_logout
-rw-r--r-- 1 gw gw 3884 Jul 24 2019 .bashrc
-rw-r--r-- 1 gw gw 3809 Jul 24 2019 .bashrc-anaconda3.bak
drwx------ 18 gw gw 4096 Apr 12 13:00 .cache/
……
分行,以第3行为例子:drwxr-xr-x 23 gw gw 4096 Jul 31 2019 anaconda3/
- 第一个字母d表示文件类型(目录文件)
- 2-4(rwx)表示文件的所有者拥有的权限(4+2+1=7)
- 5-7(r-x)表示和这个文件属主所在同一个组的用户所具有的权限(4+0+1=5)
- 8-10(r-x)表示其他用户对这个目录文件所拥有的权限(4+0+1=5)
- 数字26表示文件夹中含有的文件的数量(anaconda3包含26个文件)
- 第一个gw表示文件所属用户
- 第二个gw表示所属组
- 其他的显而易见了~
所以anaconda的权限数字表示法为755。
1. 使用chown命令改变文件所属
命令使用格式chown [参数] 所有者:所属组
root@jiuzuodaliyun:/home/test/20200503 ll
total 16
drwxr-xr-x 2 root root 4096 May 3 11:14 ./
drwxr-xr-x 5 root root 4096 May 5 19:44 ../
-rw-r--r-- 1 root root 48 May 3 23:02 a.txt
-rw-r--r-- 1 root root 19 Apr 28 22:23 b.txt
-rwxrwxrwx 1 root root 0 Apr 29 23:22 test.py*
# 更改a.txt的文件所有者
root@jiuzuodaliyun:/home/test/20200503 chown gw:gw a.txt
root@jiuzuodaliyun:/home/test/20200503 ll
total 16
drwxr-xr-x 2 root root 4096 May 3 11:14 ./
drwxr-xr-x 5 root root 4096 May 5 19:44 ../
-rw-r--r-- 1 gw gw 48 May 3 23:02 a.txt
-rw-r--r-- 1 root root 19 Apr 28 22:23 b.txt
-rwxrwxrwx 1 root root 0 Apr 29 23:22 test.py*
2.使用chmod命令更改文件的权限
使用格式chmod [参数] 权限 文件或目录名称
root@jiuzuodaliyun:/home/test/20200503 ll
total 16
drwxr-xr-x 2 root root 4096 May 3 11:14 ./
drwxr-xr-x 5 root root 4096 May 5 19:44 ../
-rw-r--r-- 1 root root 48 May 3 23:02 a.txt
-rw-r--r-- 1 root root 19 Apr 28 22:23 b.txt
-rw-r--r-- 1 root root 0 Apr 29 23:22 test.py
# 现在改变 test.py 的权限为任何用户都有rwx权限(rwxrwxrwx=777)
root@jiuzuodaliyun:/home/test/20200503 chmod 777 test.py
root@jiuzuodaliyun:/home/test/20200503 ll
total 16
drwxr-xr-x 2 root root 4096 May 3 11:14 ./
drwxr-xr-x 5 root root 4096 May 5 19:44 ../
-rw-r--r-- 1 root root 48 May 3 23:02 a.txt
-rw-r--r-- 1 root root 19 Apr 28 22:23 b.txt
-rwxrwxrwx 1 root root 0 Apr 29 23:22 test.py*
二、文件的隐藏属性
Linux 中有些奇怪的文件,你登录使用的用户有足够的权限,但是你不能删除这个文件,或者你只能向某个特殊的日志文件中添加记录,但是无法改变记录(阻止了黑客篡改记录),这一类文件就是拥有了一些隐藏属性,保障了Linux系统的安全性。
1. chattr 命令
chatter命令用于设置文件的隐藏权限,格式为
chattr [参数] 文件
如果需要给文件添加一个参数,则需要+参数
如果需要给文件移除一个参数,则需要-参数
参数 | 含义 |
---|---|
i | 无法对文件进行修改;如果对目录设置了该参数,则仅能修改其中的子文件的内容,而不能新建或者删除该文件’ |
a | 仅允许对文件追加内筒,而不予许对文件进行覆盖/删除 (Append Only) |
S | 文件内容变更后立即同步到硬盘(sync) |
s | 彻底从硬盘删除,不可恢复(用0填充源文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(atime) |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-mergine) |
X | 可以直接访问压缩文件中的命令 |
2. lsattr 命令
lsattr 用来显示文件的隐藏属性
格式 :lsattr -参数 文件
root@juzuodaliyun:/home/test/20200505 lsattr b.txt
--------------e--- b.txt
root@juzuodaliyun:/home/test/20200505 chattr -e b.txt
root@juzuodaliyun:/home/test/20200505 lsattr b.txt
------------------ b.txt
这里出现了一个e属性,查了很多资料,有说是“文件为可执行文件”。另外一种说法如下:
'e’属性表示文件正在使用区段来映射块磁盘。它不能使用chattr删除。
一朵菊花脸上遮的CSDN博客
如果有知道的同学也请在评论区留言。
其余的属性就像介绍chattr的一样参照上面的表格。