本章同步视频:https://edu.51cto.com/sd/e4874
2.1 三类用户
0.root
1.文件拥有者
2.同组用户
3.其他用户
2.2 文件权限
2.2.1 文件属性
[root@localhost ~]# ls -l
total 548
-rw-------. 1 root root 1416 Oct 28 2018 anaconda-ks.cfg
-rw-r--r--. 1 root root 1467 Oct 27 2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root 550255 Oct 11 14:15 练习平台试题说明书.pdf
文件 链 属 属 文件 文件修改时间 文件名
权限 接 主 组 大小
数
2.2.2 chgrp - change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
1.正常操作
[root@localhost tmp]# ll aaa #ls -l的别名
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa #属组为root
[root@localhost tmp]# chgrp calf aaa #将属组修改为calf
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 root calf 0 Feb 26 19:58 aaa #属组为calf
2.注意事项
(1)属组必须存在
[root@localhost tmp]# chgrp group1 aaa
chgrp: invalid group: ‘group1’ #组group1不存在
(2)只有root能完成
[calflyok@localhost ~]$ ll aaa
-rw-rw-r--. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ chgrp calf aaa
chgrp: changing group of ‘aaa’: Operation not permitted
#文件拥有者亦无权执行该命令
2.2.3 chown - change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
1.正常修改拥有者
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 root calf 0 Feb 26 19:58 aaa #拥有者为root
[root@localhost tmp]# chown calf aaa
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 calf calf 0 Feb 26 19:58 aaa #拥有者变为calf
2.同时修改拥有者和属组
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 calf calf 0 Feb 26 19:58 aaa
[root@localhost tmp]# chown root:root aaa
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa
3.注意事项
(1)用户必须存在
[root@localhost tmp]# chown own aaa
chown: invalid user: ‘own’ #own用户不存在
(2)只有root能执行
[calflyok@localhost ~]$ ll aaa
-rw-rw-r--. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ chown root aaa
chown: changing ownership of ‘aaa’: Operation not permitted
2.2.4 chmod - change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
1.数字模式
r:4 w:2 x:1
(1)修改单个文件权限
[root@localhost tmp]# ll aaa
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod 666 aaa
[root@localhost tmp]# ll aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
(2)修改整个目录权限
[root@localhost tmp]# ls -al bbb
total 8
drwxr-xr-x. 2 root root 4096 Feb 26 20:24 .
drwxrwxrwt. 9 root root 4096 Feb 26 20:24 ..
#父目录不在修改范围内
-rw-r--r--. 1 root root 0 Feb 26 20:24 ccc
[root@localhost tmp]# chmod -R 666 bbb
[root@localhost tmp]# ls -al bbb
total 8
drw-rw-rw-. 2 root root 4096 Feb 26 20:24 .
drwxrwxrwt. 9 root root 4096 Feb 26 20:24 ..
#父目录不在修改范围内
-rw-rw-rw-. 1 root root 0 Feb 26 20:24 ccc
2.字符模式
chmod u
g
o
a +(加入)
-(除去)
=(设定) r
w
x 档案或目录
(1)所有用户增加执行权限
[root@localhost tmp]# ll ll aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a+x aaa
[root@localhost tmp]# ll aaa
-rwxrwxrwx. 1 root root 0 Feb 26 19:58 aaa
(2)所有用户去掉执行权限
[root@localhost tmp]# ll aaa
-rwxrwxrwx. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a-x aaa
[root@localhost tmp]# ll aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
(3)所有用户设定为只读
[root@localhost tmp]# ll aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a=r aaa
[root@localhost tmp]# ll aaa
-r--r--r--. 1 root root 0 Feb 26 19:58 aaa
(4)拥有者增加写和执行,其他用户设定为可读可写
[root@localhost tmp]# ll aaa
-r--r--r--. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod u+wx,o=rw aaa
[root@localhost tmp]# ll aaa
-rwxr--rw-. 1 root root 0 Feb 26 19:58 aaa
(5)去掉其他用户的所有权限
[root@localhost tmp]# ll aaa
-rwxr--rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod o= aaa
[root@localhost tmp]# ll aaa
-rwxr-----. 1 root root 0 Feb 26 19:58 aaa
3.注意事项
文件拥有者可以无视权限,强行读写文件属性和内容。
[calflyok@localhost ~]$ chmod a= aaa
[calflyok@localhost ~]$ ll aaa
----------. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ vim aaa
[calflyok@localhost ~]$ cat aaa
aaaaa
2.2.5 目录与档案之权限意义
1.权限对档案的重要性
? r (read):可读取此一档案的实际内容,如读取文本文件的文字内容等;
? w (write):可以编辑、新增或者是修改该档案的内容(但不含删除该档案);
? x (execute):该档案具有可以被系统执行的权限。
2.权限对目录的重要性
? r (read contents in directory):表示具有读取目录结构列表的权限,可以查询该目录下的文件名数据。 如使用ls命令!
? w (modify contents of directory):
? 建立新的档案与目录;
? 删除已经存在的档案与目录(不论该档案的权限为何!)
? 将已存在的档案或目录进行更名;
? 搬移该目录内的档案、目录位置。
? x (access directory):代表的是用户能否进入该目录成为工作目录! 如使用cd命令!
2.2.6 Linux档案种类与扩展名
1.档案种类:
? 正规档案(regular file ):第一个字符为 [ - ] 。
? 目录(directory):第一个属性为 [ d ] 。
? 连结档(link):第一个属性为 [ l ] 。
? 设备与装置文件(device):通常都在/dev目录下。
? 区块(block)设备档 :第一个属性为[ b ]!
? 字符(character)设备档:第一个属性为 [ c ]。
? 资料接口文件(sockets):第一个属性为 [ s ], 最常在/run或/tmp。
? 数据输送文件(FIFO, pipe):第一个属性为[p] 。
2.Linux档案扩展名:
Linux的档案是没有所谓的『扩展名』的,一个Linux档案能不能被执行,与他的第一栏的十个属性有关, 与文件名根本一点关系也没有。
? .sh : 脚本或批处理文件 (scripts) ;
? Z, .tar, .tar.gz, .zip, .tgz: 经过打包的压缩文件。
? .html, .php:网页相关档案,分别代表 HTML 语法与 PHP 语法的网页档案。
3.Linux档案长度限制
单一档案或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128 个中文字!
4.Linux文件名的限制
由于Linux在文字接口下的一些指令操作关系,一般来说,在设定Linux底下的文件名时, 最好可以避免一些特殊字符比较好!
- ? > < ; & ! [ ] | \ ‘ " ` ( ) { }-+