天天看点

Linux基础命令四:文件及目录权限、特殊权限

1.概念

linux 有三种权限:r(读权限),w(写权限),x(执行权限)

权限 数字 文件 目录
r 4 读取文件的内容 查看目录下的文件与目录名称
w 2 修改文件内容,不能删除文件 在目录下增、删、改文件与目录结构
x 1 可被系统执行 可以进入该目录

使用ll查看文件或目录信息

[[email protected] ~]# ll /
total 104
dr-xr-xr-x.   2 root root  4096 Aug 24  2017 bin
dr-xr-xr-x.   4 root root  4096 Aug 24  2017 boot
drwxr-xr-x   17 root root  3420 Nov  7 18:50 dev
drwxr-xr-x.  74 root root  4096 Nov  7 22:25 etc
drwxr-xr-x.   2 root root  4096 Sep 23  2011 home
dr-xr-xr-x.   9 root root  4096 Aug 24  2017 lib
dr-xr-xr-x.   9 root root 12288 Aug 24  2017 lib64
drwx------.   2 root root 16384 Aug 24  2017 lost+found
drwxr-xr-x.   2 root root  4096 Sep 23  2011 media
drwxr-xr-x.   2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.   2 root root  4096 Sep 23  2011 opt
dr-xr-xr-x  101 root root     0 Nov  7 18:49 proc
dr-xr-x---.   5 root root  4096 Nov  9 16:32 root
drwxr-xr-x    3 root root  4096 Nov  7 18:45 run
dr-xr-xr-x.   2 root root 12288 Aug 24  2017 sbin
drwxr-xr-x.   2 root root  4096 Aug 24  2017 selinux
drwxr-xr-x.   2 root root  4096 Sep 23  2011 srv
drwxr-xr-x   13 root root     0 Nov  7 18:49 sys
drwxr-xr-x    3 root root  4096 Nov  8 16:17 temp
drwxrwxrwt.   3 root root  4096 Nov 10 09:54 tmp
drwxr-xr-x.  13 root root  4096 Aug 24  2017 usr
drwxr-xr-x.  19 root root  4096 Nov  7 19:47 var
           

2. drwxr-xr-x 17 root root 3420 Nov 7 18:50 dev

第一行的第一个字符代表这个文件的类型

d:目录
-:普通文件
l:链接文件
b:设备文件,可供存储的接口设备
c:设备文件,串行端口设备,如键盘、鼠标
           

rwxr-xr-x代表文件所有者、所属用户组、其他用户对该文件的权限

rwx:文件所有者,可读可写可执行。权限为4+2+1=7
r-x:所属组,可读可执行。权限为4+0+1=5
r-x:其他用户,可读可执行。权限为4+0+1=5
           

17

代表链接数量或者子目录的个数
           

root root

第一个是文件的所有者
第二个是文件的所属用户组
           

3420

文件大小,默认单位为B
           

Nov 7 18:50

文件最后被修改的时间
           

dev

文件名,如果文件名前多一个“.”则代表这个文件为隐藏文件
           

3.chmod 改变文件权限

第一种:使用数字来改变权限。r:4,w:2,x:1。

chmod 权限对应数字 文件或目录
-R    递归更改,即子目录的权限也会修改
           
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod 777 test
[[email protected] ~]# ll
-rwxrwxrwx 1 root root 0 Nov 10 14:48 test
           

第二种:通过符号类型来改变权限

chmod who=权限 文件或目录
u:拥有者的权限
g:所属组的
o:其他用户的
a:全部的身份
           
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod u=rwx,go=rx test  
[[email protected] ~]# ll
-rwxr-xr-x 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod a=rx test
[[email protected] ~]# ll
-r-xr-xr-x 1 root root 0 Nov 10 14:48 test
           

第三种:在原有的基础上进行+、- 权限的方法

chmod who+/- 文件或目录
           
[[email protected] ~]# ll
-r-xr-xr-x 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod u+w,g-x,o-rx test
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
           

4.chown 更改文件所有权

chown  所有者:所属组 文件或目录
-R     递归修改,包括其子目录下的所有文件
           
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chown mysql test              #仅修改所有者。将test文件的所有者修改为MySQL
[[email protected] ~]# ll
-rwxr----- 1 mysql root 0 Nov 10 14:48 test
[[email protected] ~]# chown :mysql test             #仅修改所属组。将test文件的所属组修改为MySQL
[[email protected] ~]# ll
-rwxr----- 1 mysql mysql 0 Nov 10 14:48 test
[[email protected] ~]# chown root:root test          #同时修改所有者与所属组。将test文件的所有者和所属组修改为root
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
           

5.umask 文件默认权限

umask就是指定目前用户在新建文件或目录时的权限默认值,默认为0022。创建文件默认没有执行权限,目录默认权限都开放

[[email protected] ~]# umask
0022                      
#与一般权限有关的是后三位,第一位与特殊权限有关
           

umask的数字指的是需要减掉的权限。

“0022”指的是所有者不需要拿掉权限,所属组和其他用户需要拿掉2(w)的权限
           

umask为0022时,创建的文件默认权限为644,创建的目录权限为755

[[email protected] ~]# touch test
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 17:33 test
[[email protected] ~]# mkdir test1
[[email protected] ~]# ll
-rw-r--r-- 1 root root    0 Nov 10 17:33 test
drwxr-xr-x 2 root root 4096 Nov 10 17:42 test1
           

修改umask对权限的影响

将umask修改为007
[[email protected] ~]# umask 007
[[email protected] ~]# touch test2
[[email protected] ~]# mkdir test3
[[email protected] ~]# ll
-rw-rw---- 1 root root    0 Nov 10 17:47 test2
drwxrwx--- 2 root root 4096 Nov 10 17:47 test3
将umask修改为0
[[email protected] ~]# umask 0
[[email protected] ~]# touch test1
[[email protected] ~]# mkdir test2
[[email protected] ~]# ll
-rw-rw-rw- 1 root root    0 Nov 10 17:49 test1
drwxrwxrwx 2 root root 4096 Nov 10 17:49 test2
           

练习完成后,恢复umask为002

[[email protected] ~]# umask 002
           

6.特殊权限

SUID:u+s。仅用在二进制程序

运行程序时,进程的属主是程序文件自身的权限,而不是进程发起者
           
[[email protected] ~]# chmod u=rwxs test
[[email protected] ~]# ll
-rwsrwxr-x 2 root root 4096 Nov 10 18:18 test
           

SGID:g+s。可用在二进制程序,目录

运行程序时,进程的属组是程序文件自身的属组,而不是进程发起者的基本组
           
[[email protected] ~]# chmod g+s test1
[[email protected] ~]# ll
drwxrwsr-x 2 root root 4096 Nov 10 18:18 test1
           

SBIT:o+t

在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件。

这个公共目录要具有w,x权限,则这个公共目录只有文件的创建者和root可删除

创建一个共享目录,并设置权限
[[email protected] ~]# mkdir test1
[[email protected] ~]# chmod 777 /var/test
[[email protected] ~]# chmod o+t /var/test
[[email protected] ~]# ll -d /var/test
drwxrwxrwt. 2 root root 20 Nov 20 05:25 /var/test
创建两个用户test1,test2
[[email protected] ~]# useradd test1
[[email protected] ~]# useradd test2
设置两个用户的密码
[[email protected] ~]# echo "123456" | passwd --stdin test1
[[email protected] ~]# echo "123456" | passwd --stdin test2
在共享目录下创建一个文件
[[email protected] ~]# cd /var/test
[[email protected] test]# touch root1
[[email protected] test]# ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
切换到test1目录,对root用户创建的目录进行删除,不能删除
[[email protected] test]# su test1
[[email protected] test]$ touch test11
[[email protected] test]$ ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
-rw-rw-r--. 1 test1 test1 13 Nov 20 05:25 test11
[[email protected] test]$ rm -rf root1
rm: cannot remove ‘root1’: Operation not permitted
切换到test2用户,对test1用户创建的文件进行删除,不能删除
[[email protected] test]$ su test2 
[[email protected] test]$ ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
-rw-rw-r--. 1 test1 test1 13 Nov 20 05:25 test11
[[email protected] test]$ rm -rf test11
rm: cannot remove ‘test11’: Operation not permitted
           

特殊权限对应的数字,更改文件的特殊权限时,在那三个数字之前加上特殊权限的数字

SUID:4
SGID:3
SBIT:1