本节概要
Linux文件权限介绍
文件权限介绍
基本文件权限管理
环境准备
操作系统:Centos6.5、Centos7.2
一、文件权限介绍
在Linux中一切皆文件,目录也是文件,每个文件具有可读、可写、可执行的权限。目录的可执行操作表示用户是否有权限进入该目录,文件可执行权限代表是否有权限运行改文件。每个文件都会从属于一个用户和用户组,每个文件对于文件属主、属组、以及其他的用户组具有特定的权限。
命令ll即可查看到文件的具体权限:
下面我们具体分析下Linux文件权限的构成:
如上图,第一个字符表示文件的类型,后面的三个字符为一组rwx,分别代表文件属主、属组和其他用户对文件的权限。r代表可读(read),w代表可写(write),x代表可执行(execute),-代表无权限,同时r、w、x也分别对应一个数字,r对应4,w对应2,x对应1,这些数字在修改文件权限时经常使用。
文件类型:主要为-和d,其中-代表普通文件,d代表为目录。另外还有c为字符设备文件,如猫等串口文件,b为块设备,比如硬盘、光驱等设备,s为数据接口文件,也叫套接口文件,
属主权限:上图为可读、可写、可执行,7=4+2+1。
数组权限:上图为可读、可写、可执行。7=4+2+1。
其他用户权限:上图为无权限。0=0+0+0。
二、基本文件权限管理
1. chmod
作用:更改文件权限。
更改文件权限格式分为两种,一种是采用数字权限的方式,另一种是采用属主(u),属组(g),其他用户(o)进行操作。
u+/-/= 文件属主owner 属主权限的加、减、赋值
g+/-/= 文件属组group 属组权限的加、减、赋值
o+/-/= 其他用户other 其他用户权限的加\减、赋值
格式:
chmod [-R] xyz 文件、目录
xyz: 对应用户吧的权限
-R : 递归,即连同目内的文件一起修改权限
举例-修改文件权限:
[root@localhost ~]# cp /etc/passwd . #拷贝实验用的文件
[root@localhost ~]# ll passwd #查看文件详细信息
-rw-r--r--. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod u+x passwd
[root@localhost ~]# ll passwd
-rwxr--r--. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod g+w passwd
[root@localhost ~]# ll passwd
-rwxrw-r--. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod o=x passwd
[root@localhost ~]# ll passwd
-rwxrw---x. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod a-x passwd
[root@localhost ~]# ll passwd
-rw-rw----. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod a+wr passwd
[root@localhost ~]# ll passwd
-rw-rw-rw-. 1 root root 2050 Apr 1 00:33 passwd
举例-修改目录权限:
[root@localhost ~]# mkdir dir1
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Apr 1 00:42 dir1
-rw-rw-rw-. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chmod u-x dir1
[root@localhost ~]# ll -d dir1
drw-r-xr-x. 2 root root 6 Apr 1 00:42 dir1
[root@localhost ~]# chmod g-x dir1
[root@localhost ~]# ll -d dir1
drw-r--r-x. 2 root root 6 Apr 1 00:42 dir1
[root@localhost ~]# chmod o-x dir1
[root@localhost ~]# ll -d dir1
drw-r--r--. 2 root root 6 Apr 1 00:42 dir1
[root@localhost ~]# chmod a+x dir1
[root@localhost ~]# ll -d dir1
drwxr-xr-x. 2 root root 6 Apr 1 00:42 dir1
使用数字修改权限:
r:4,w:2,x:1
[root@localhost ~]# ll -d dir1
drwxr-xr-x. 2 root root 6 Apr 1 00:42 dir1
[root@localhost ~]# chmod 655 dir1
[root@localhost ~]# ll -d dir1
drw-r-xr-x. 2 root root 6 Apr 1 00:42 dir1
[root@localhost ~]# chmod 645 dir1
[root@localhost ~]# ll -d dir1
drw-r--r-x. 2 root root 6 Apr 1 00:42 dir1
2. chown
作用:修改文件属主、属组
格式:chown owner:group 文件名
-R :递归修改,即目录内的文件一并修改。
举例:
[root@localhost ~]# useradd user1 #新建一个测试用户
[root@localhost ~]# ll
total 4
drw-r--r--. 2 root root 6 Apr 1 00:42 dir1
-rw-rw-rw-. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chown -R user1:user1 dir1
[root@localhost ~]# ll
total 4
drw-r--r--. 2 user1 user1 6 Apr 1 00:42 dir1
-rw-rw-rw-. 1 root root 2050 Apr 1 00:33 passwd
[root@localhost ~]# chown :user1 passwd
[root@localhost ~]# ll
total 4
drw-r--r--. 2 user1 user1 6 Apr 1 00:42 dir1
-rw-rw-rw-. 1 root user1 2050 Apr 1 00:33 passwd
[root@localhost ~]# chown user1 passwd
[root@localhost ~]# ll
total 4
drw-r--r--. 2 user1 user1 6 Apr 1 00:42 dir1
-rw-rw-rw-. 1 user1 user1 2050 Apr 1 00:33 passwd
一个文件只有只读权限时文件的属主也可对文件进行写入操作,可以用vim打开后强制保存,也可用echo进行追加写入。
[root@localhost ~]# touch file1 #新建测试文件
[root@localhost ~]# ll file1
-rw-r--r--. 1 root root 0 Apr 1 01:10 file1
[root@localhost ~]# chmod u-w file1
[root@localhost ~]# ll file1
-r--r--r--. 1 root root 0 Apr 1 01:10 file1
[root@localhost ~]# vim file1
:wq 保存退出时会报异常:
需要 :wq! 强制保存退出
echo也可写入:
[root@localhost ~]# echo "this is file1" > file1
[root@localhost ~]# cat file1
this is file1
3. umask
作用:设置文件默认权限的补码(注意,不是文件的默认权限)
格式:umask 默认权限补码
默认文件权限对于系统用户和普通用户一般是不一样的:
[root@localhost ~]# umask #查看管理员文件默认权限
0022
[root@localhost ~]# su - user1
[user1@localhost ~]$ umask #查看普通用户文件默认权限
0002
举例:
修改文件默认权限补码:
[root@localhost ~]# umask #查看
0022
[root@localhost ~]# umask 0002 #修改
[root@localhost ~]# umask
0002
[root@localhost ~]# umask 0022
[root@localhost ~]# umask
0022
上面的过程是查看和修改文件的默认权限的补码,下面描述如何计算默认权限。
默认权限计算方法:666/777 & 默认文件权限补码的反码
其中,666代表文件,777代表目录,即计算文件和目录时此处不同。
以文件默认权限的计算为例:
正数的补码、反码和原码相同。
文件 文件umask
6 6 6 0 0 2(普通用户)
110 110 110 000 000 010(原码)
000 000 010(原码的补码)
110 110 110 & 111 111 101(补码取反)
110 110 100
664(文件默认权限)
普通用户默认文件权限验证:
[root@localhost ~]# su - user1
Last login: Sun Apr 1 01:41:59 PDT 2018 on pts/0
[user1@localhost ~]$ touch file1
[user1@localhost ~]$ ll file1
-rw-rw-r--. 1 user1 user1 0 Apr 1 02:19 file1 #新建的文件默认权限默认664
三、扩展
- 文件file1只有只读权限,测试文件属主之外的用户是否可以进行数据的写入。
- 自行查阅资料,学习二进制中原码、补码、反码(部分企业笔试题中会涉及到这块的基础知识)。