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