一、用户及用户组
所有者(属主):一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者,每个文件的所有者(属主)有且仅有一个。用ll命令可以看到文件的所有者。
所属组(属组):当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组,一个用户可以属于多个组但仅有一个主组,用ll命令可以看到文件的所有组。
其他人:除开文件的所有者和所属组之外的用户,系统的其它用户都是文件的其他者。比如创建了两个用户Tom和Jerry,Tom相对Jerry创建的文件来说就是其他人。
二、文件权限
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
[root@centos7 app]#ll f1 #使用ll或者ls -l命令来显示一个文件的属性及属主和属组
-rw-rwxr--. 1 root root 10 Jul 24 21:05 f1
实例中,第一个字段就表示f1文件所拥有的权限(-rw-rwxr--.),这些位都代表什么含义呢?前10个字符代表不同用户能对该文件执行什么操作,最后一位的"."表示的是ACL权限(访问控制列表)。
第一个字符代表文件类型
d :表示目录文件
- : 表示普通文件
l :表示链接文件
c :字符文件,例如/dev/zero
b :表示块式文件,例如/dev/sda
接下来的字符中,以三个为一组,且均为[ rwx ] 的三个参数的组合。其中,[ r ]代表可读( read )用数字表示为4、[ w ]代表可写( write )用数字表示为2、[ x ]代表可执行( execute )用数字表示为1。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号" - "替代。详细说明如下表
文件类型 | 所有者(u) | 所属组(g) | 其他人(o) | |
位 | 0 | 1 2 3 | 4 5 6 | 7 8 9 |
权限 | - | r w - | r w x | r - - |
含义 | 普通文件 | 读、写、无执行 | 读、写、执行 | 读、无写权限、无执行 |
从左至右这十位分别表示:
第0位确定文件类型
第1-3位确定属主(该文件的所有者)拥有该文件的权限
第4-6位确定属组(所有者的同组用户)拥有该文件的权限
第7-9位确定其他用户拥有该文件的权限
其中,第 1、4、7 位表示读权限,如果用 "r" 字符表示,则有读权限,如果用"-"字符表示,则没有读权限;第 2、5、8 位表示写权限,如果用 "w" 字符表示,则有写权限,如果用 "-" 字符表示没有写权限;第3、6、9位表示可执行权限,如果用 "x" 字符表示,则有执行权限,如果用 "-" 字符表示,则没有执行权限。
权限之后的每个字段依次表示:链接数、属主、属组、文件大小、文件最新修改时间、文件名
三、文件属性修改
[root@centos7 ~]#
[root@centos7 ~]#ll -d Music/
drwxr-xr-x. 2 root root 6 Jul 4 08:29 Music/
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所属组和其他用户来规定了不同的文件访问权限。在以上实例中,Music 文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。对于 root 用户来说,一般情况下,文件的权限对其不起作用(root 是Linux中的天神,掌管一切)。
修改所属主[ chown ]
格式
chown [ options ] [ 属主, 属主:属组 ] FILE
实例
[root@centos7 tmp]#ll profile
-rw-r--r--. 1 root root 1795 Nov 6 2016 profile #profile文件的属主和属组都是root
[root@centos7 tmp]#chown vincent profile #改变profile的属主为vincent
[root@centos7 tmp]#ll profile
-rw-r--r--. 1 vincent root 1795 Nov 6 2016 profile # 属主被修改为vincent
[root@centos7 tmp]#chown root:vincent profile #同时修改属主为root,属组为vincent
[root@centos7 tmp]#ll profile
-rw-r--r--. 1 root vincent 1795 Nov 6 2016 profile #属主属组被修改为root和vincent
[root@centos7 tmp]#
说明:在同时修改属主和属组时,不仅能使用冒号分割(root:vincent),使用点号分割也可以(root.vincent)
修改所属组 [ chgrp ]
除了chown能改变属组,还有个命令专门用于修改文件属组(chgrp)
格式
chgrp [ -R ] 属组名 FILE
实例
[root@centos7 tmp]#ll profile #查看文件属组为 root
-rw-r--r--. 1 vincent root 1795 Nov 6 2016 profile
[root@centos7 tmp]#chgrp vincent profile #修改属组为vincent
[root@centos7 tmp]#ll profile
-rw-r--r--. 1 vincent vincent 1795 Nov 6 2016 profile #修改成功,属组变为vincent
说明:-R表示递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改
修改文件权限[ chmod ]
文件的权限位有9位,以3位为一组,分别表示属主、属组、其他人的权限。每一组权限从左至右依次表示读/写/执行(readable/writable/executable)
Linux中文件权限有两种表示方法:模式法和数字法。模式法将属主、属组、其他人分别用字母u、g、o来表示;数字法中分别用数字4、2、1来表示读、写、执行权限,每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的。
chmod-->模式法
格式
chmod [ u=,g=,o=,ug=,a= ][ r,w,x,rw,rx,wx ] FILE #修改一类用户的权限
chmod [ u+,u-,...][r,w,x,...] FILE #修改一类用户某位的或某些位的权限
chmod --reference=rfile FILE #修改FILE文件的权限同rfile文件
实例
[root@centos7 tmp]#
[root@centos7 tmp]#ll profile
-rw---xr--. 1 vincent vincent 1795 Nov 6 2016 profile
[root@centos7 tmp]#chmod g+r profile && ll profile #给属组添加r权限
-rw-r-xr--. 1 vincent vincent 1795 Nov 6 2016 profile
[root@centos7 tmp]#chmod o+wr profile && ll profile #给其他人添加rw权限
-rw-r-xrw-. 1 vincent vincent 1795 Nov 6 2016 profile
[root@centos7 tmp]#chmod u=x profile && ll profile #将属主权限设置为x,覆盖旧权限
---xr-xrw-. 1 vincent vincent 1795 Nov 6 2016 profile
[root@centos7 tmp]#touch 1.txt && ll 1.txt #创建一个新文件,用于下面实验
-rw-r--r--. 1 root root 0 Jul 27 17:50 1.txt
[root@centos7 tmp]#chmod --reference=1.txt profile && ll profile
-rw-r--r--. 1 vincent vincent 1795 Nov 6 2016 profile #将权限设为同1.txt的权限
[root@centos7 tmp]#
说明:“&&”表示先执行“&&”之前的句柄,在执行“&&”之后的句柄;在使用“=”进行设置权限时会覆盖相应位以前的权限。
chmod-->数字法
权限表示方法
权限 二进制表示 八进制表示
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
rwxr-xrw- 111 101 011 756
格式
chmod [ -R ] xyz FILE/DIR... # xyz分别代表属主、属组、其他人的权限
实例
[root@centos7 app]#
[root@centos7 app]#ll messages
-rw-------. 1 root root 2914301 Jul 26 08:24 messages # messages文件权限为600
[root@centos7 app]#chmod 777 messages && ll messages #设置所有用户权限为读写执行
-rwxrwxrwx. 1 root root 2914301 Jul 26 08:24 messages
[root@centos7 app]#chmod 755 messages && ll messages #去除属组和其他人的写权限
-rwxr-xr-x. 1 root root 2914301 Jul 26 08:24 messages
[root@centos7 app]#chmod 055 messages && ll messages
----r-xr-x. 1 root root 2914301 Jul 26 08:24 messages #设置权限为055
[root@centos7 app]#
说明:对文件夹(目录)而言,系统默认权限为777;对文件而言,系统默认权限为666;这种设计保证了Linux系统文件的安全性。文件除了这些基本属性之外还有其他权限(SUID、SGID、Stikty)和ACL(访问控制列表),这些权限将在后续为大家提供,敬请期待!