目录
1.UGO权限
2.修改属主和属组
3.进程上下文法则
4.ACL权限
:以用户和用户组为主体给用户和用户组加权限让他们去有访问文件的权限
1.UGO权限
- UGO权限是对文件和目录来说的。
rwx对于文件
(1)对于文件的权限我们将用户分为三类。(属主,属组,其他人)
(2)用户对文件有三类权限,分别是读,写,执行。
对于文件来说UGO权限
r:代表可以读文件
w:代表可以写文件
x:代表可以执行文件 (./用来执行文件)
- rw- rw- r-- use1 use2(test01,test02,use2) File
文件类型 属主权限 属组 其他权限 属主 属组 文件
- 普通文件
d 目录文件
L链接文件
l 软连接文件
socket文件
b 设备文件
p 管道文件
赋予权限 : r 用数字4表示 w 用数字2表示 x用数字1表示
例如: 7 就表示同时有rwx权限 5就表示有rx权限 6就表示有rw权限
2.rwx对于目录:
r: 可以查看目录下的内容。 ls
w: 修改目录下的内容。创建,删除文件或目录需要可切换目录,此时就需要x权限。
x: 切换目录,cd;若test文件没有x权限,mkdir test/123,ll /test/123 即使有w,r权限,也不能创建和查看。
3.授权方法
- 授权表示法
- 赋权表示法
- 权限数字表示法
1.授权表示法: chmod (u属主/a属组/o其他) (+/-) rwx
实例 chmod u+rwx file 表示给文件file的属主加上读写和执行的权限
chmod a-r file 表示给文件的属组取消读的权限
chmod o+x 表示给其他人加上执行文件的权限
chmod u+x,g+r file 表示给文件的属主和属组分别加上执行权限和读的权限
chmod -R u+x,g+r file #递归 就是此文件的子文件会继承此文件赋予的权限(一般针对目录)
2.赋权表示法: chmod (u/a/o)= (r/w/x) file chmod a=w file 表示把读权限赋值给属组
chmod u=rx file
chmod g=rx file
chmod o=rx file
chmod u=rwx,g=w,o="" file
3.权限数字的表示方式 chmod 数字 文件
chmod 764 file 表示赋予属主rwx 属组 rw 其他人r的权限
chmod 400 file 表示赋予属主r的权限属组和其他人不赋予权限
4.实例
因为/tmp 目录所有的用户都可以访问我们就在此目录下做演示分析实例。
-
文件rwx权限演示
1.给其他用户use2一个写入文件的权限
然后text下就会有file1的权限信息,可以看到其他人只有读的权限
现在我们用别的用户向file1中写数据2
可以看到没有权限不能进行写入数据
现在我们给一个写的权限,可以看到其他人已经有一个写权限
现在我们su - use2 再次写入数据,可以看到数据写入成功
2.给其他人一use2个可执行权限x
可以看到file文件对其他人只有r权限没有x权限,所以在执行时权限不够
现在我们用数字授权法给加一个x权限,可以看到已经有了权限
3.给文件的属组和其他人同时加w权限
可以看到已经给use2把x权限同时加给属组和其他人
-
目录rwx权限演示
看看目录的rwx权限有啥用途,我们先把文件对其他人的r权限去掉
chmod o-r text1 text2 text3
可以看到对一个目录文件如果没有r将不能看到目录下的内容
现在我们加上其他人r权限
然后去掉w权限看看会发生什么,看到我们已经不能对目录下的文件进行操作
现在我们把w权限加上,然后把x去掉,看看会怎么样,我们发现我们不能使用cd进入text1l
chmod -R 目录权限的递归
我们现在/tmp下创建目录text4 然后给其递归权限
在text4下创建text5也有w权限
2.修改属主和属组
修改属主和属组
chown test001: file #修改属组为test001
chown test001:test001 file
chown test001:test002 file #修改属主为test001,属组为test002
chown test001 file #只修改属主为test001
chown :test001 file #只修改属组为test001
chown -R :test001 file
实例
将text2的属组属主变成root
将text2的属组变use2
-
chown -R use2 text1 则下面的子目录也会修改
3.进程上下文法则
若进程的属主和文件的属主一致,进程将拥有文件属主的权限,
若进程的属主和文件的属主不一致,判断进程的属组和文件的属组是否一致,一致进程将拥有文件属组的权限。
不一致进程将拥有文件其他人的权限。
实例
1.我们复制一个终端 发起一个cat进程
然后查看cat进程我们可以看到其发起用户是root
然后use2用户上在发起一个cat进程
然后查看cat进程是use2发起的
现在cat进程想去访问一个文件,假如访问以下文件
然后就看如果use2发起的cat进程要访问text 想看text1的属主为root,属组也为root那么就只能执行其他人的rwquanxian。
但是如果访问text2 发现text2的属组刚好是use2那么就可以执行属组的rwx权限
4.ACL权限
:以用户和用户组为主体给用户和用户组加权限让他们去有访问文件的权限
df -h(查文件系统)
ACL权限是对UGO权限的补充。可以针对于某个用户或者用户组设定文件的权限,还可以设置目录或者文件继承父级目录的权限。
1)添加权限:
setfacl -m u:username:rw file
setfacl -m g:groupsname:rwx file
实例
1.给use2w权限让他自己能够访问hhh写入数据
继承:
setfacl -m d:u:username:rwx dir(-m授权 d表示给目录授权 :用来分割)
cd dir
mkdir chdir (对于目录继承所有)
touch file1 (对于文件没有x权限和default)
user:use2:rwx #effective:rw-
group::rwx #effective:rw-
(2)查:
getfacl File1
getfacl chdir
(3)改
[root@admin tmp]# setfacl -m u:use2:rwx file #m参数有则修改,没有则添加
(4)删
[root@admin tmp]# setfacl -x u:use2 file #删除每个用户的acl权限
[root@admin tmp]# setfacl -b file #清除所有权限
[root@admin tmp]# setfacl -Rb dir1 #递归清除权限
实例:
1.取消use2访问hhh的权限
2.取消hhh的所有权限,恢复最初权限
(5)备份和还原
[root@admin tmp]# getfacl -R test1/ > 文件名 #备份
[root@admin tmp]# setfacl -Rb test1
[root@admin tmp]# setfacl --restore 文件名 # 恢复(恢复备份的内容)
知识五:
umask 权限掩码:
默认权限的定义是有权限掩码来决定;
文件: 默认权限是 : 666 - UMASK
目录: 默认权限是 : 777 - UMASK
umask ==》 0022
临时修改: umask 044
永久修改,在/etc/profile下定义
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
/usr/bin/id -gn
/usr/bin/id -un