本人从事IT行业已有十多年,有着丰富的实战经验,总结了大量的学习方法,更是积累了很多的学习资料,很高兴能在这里跟大家交流学习,希望能在这里跟大家共同进步和成长!
全套学习资料移步至公众号【学神来啦】更多学习资料添加扣扣资源群:661308959
本节所讲内容:
7.1 文件的基本权限:r w x (UGO)
7.2 文件的特殊权限:suid sgid sticky和文件扩展权限ACL
7.3 实战:创建一个让root都无法删除的文件
7.1 文件的基本权限
7.1.1 权限的作用
通过对文件设定权限可以达到以下三种访问限制权限:
只允许用户自己访问;
允许一个预先指定的用户组中的用户访问;
允许系统中的任何用户访问。
7.1.2 查看权限
[root@xuegod63 ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2053 9月 19 2017 /etc/passwd
文件权限基本解释:
- rw- r-- r--. 1 root root 2053 9月 19 2017 /etc/passwd
其中:文件类型,可以为p、d、l、s、c、b和 –
p表示命名管道文件
d表示目录文件
l表示符号链接文件
-表示普通文件
s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c表示字符设备文件,例: 虚拟控制台 或tty0
b表示块设备文件 例: sda, cdrom
例:
[root@xuegod63 ~]# ll /dev/sda /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx 1 root root 3 9月 19 2017 /dev/cdrom -> sr0
brw-rw---- 1 root disk 8, 0 9月 19 2017 /dev/sda
crw--w---- 1 root tty 4, 0 9月 19 2017 /dev/tty0
-rw-r--r--. 1 root root 2053 9月 19 2017 /etc/passwd 如下效果图:
7.1.3 权限说明
对于文件来说:
r:读 cat
w:写 vim echo
x:执行 运行命名或者脚本
对于目录来说:
r:读(看到目录里面有什么) ls
w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
x:目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。
7.1.4 文件拥有者
UGO:所有者--用户组--其它用户
User-所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
Group-用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
Other-其它用户:系统内的其他所有者用户就是other用户类
7.1.5 常见几种文件权限组成
- rwx --- ---:文件所有者对文件具有读取、写入和执行的权限。
- rwx r-- r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
- rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
举例如下:
每个用户都拥有自己的专属目录,通常放置/home下
[root@xuegod63 home]# ll /home/
总用量 0
drwx------. 3 user1 user1 78 9月 19 2017 user1
注: [rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。 root可以。
例2: 你以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组
[root@xuegod63 ~]# useradd user1
[root@xuegod63 ~]# su - user1
[user1@xuegod63 ~]$ touch a.txt
[user1@xuegod63 ~]$ ll a.txt
-rw-rw-r-- 1 user1 user1 0 5月 8 20:58 a.txt
互动: su - user1 和su user1 的区别?
[root@xuegod63 ~]# su - user1 #从root切换到普通用户user1
user1@xuegod63 ~]$ pwd
/home/user1
[user1@xuegod63 ~]$ exit
[root@xuegod63 ~]# su user1
[user1@xuegod63 root]$ pwd #查看切完后的路径
/root
[user1@xuegod63 root]$ touch a.txt
touch: 无法创建 'a.txt': 权限不够
[user1@xuegod63 root]$ cd /home/user1/
[user1@xuegod63 ~]$ touch a.txt
[user1@xuegod63 ~]$ exit
注: su - 用户,加上-减号,切换用户时,会把用户家目录和环境变量都彻底切成用user1的。 不加-减号,保留切换前的路径和环境变量。 一般切换用户都加减号- 。
7.1.6 更改文件的属主和属组
改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主
chgrp:可以用来改变文件(或目录)的默认属组(不常用)
如果你要对目录进行操作,加参数 -R
chown
语法:
chown user:group filename 比如:chown hr:san a.txt 把文件的属主改为hr属组改为san
chown user filename 比如:chown san a.txt 把文件的属主改为san用户
chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao组
:也可以用.代替
-R :递归(目录下的所有内容都更改,否则只修改目录)
例:
[root@xuegod63 ~]# touch {a,b,c}.txt
[root@xuegod63 ~]# ll *.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 a.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 b.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 c.txt
[root@xuegod63 ~]# chown user1 a.txt
[root@xuegod63 ~]# ll a.txt
-rw-r--r-- 1 user1 root 0 5月 8 21:03 a.txt
[root@xuegod63 ~]# chown user1:user1 a.txt
[root@xuegod63 ~]# ll a.txt
-rw-r--r-- 1 user1 user1 0 5月 8 21:03 a.txt
[root@xuegod63 ~]# chown :root a.txt
[root@xuegod