目录
一.基本权限UGO
1.两个基本元素
权限对象 | 属主:u 属组:g 其他人:o 特殊对象:所有人--a(u+g+o) |
权限类型 | 读:r=4 写:w=2 执行:x=1 |
2.设置权限
更改权限:
使用符号 | chmod 对象(u/g/o/a)赋值操作符(+/-/=)权限类型(r/w/x) 文件 chmod - R 对象(u/g/o/a)赋值操作符(+/-/=)权限类型(r/w/x) 目录/ (ls - l - d 看目录的详细信息时需要- d) |
使用数字 | chmod 数字(xxx) 文件 777: 分别代表ugo,7表示读写执行权限 000: 表示都没有权限 chmod - R 数字(xxx) 目录/ |
1.了解普通文件的基本权限:
# cd /tmp
# touch ./file1
# ll ./file1 (ll和ls -l相同,简写)
-rw-r--r--. 1 root root 0 4月 13 20:49 file1
2. 编写程序
# vim file1
echo " hello 2202”
read -p "请输入您的姓名" name
echo "哈哈 $name 是狗"
3. 增加执行能力
# chmod u+x file1.txt (属主增加执行)
4.运行测试
# ./file1
hello 2202
请输入您的姓名 你
哈哈 你 是狗"
5. 去除权限
u-x
运行失败
更改属主、属组
chows | change owner 设置一个文件属于谁,把文件的主人改掉(也可以改组) chown 用户名.组名 文件 (改主人和组) chown 用户名 文件 (改主人) chown .组名 文件 (改组) chown - R | # touch /tmp/file1.txt # ls - l tmp/file1.txt -rw-r--r--. 1 root root 0 4月 13 20:49 file1 # useradd user01 # groupadd hr # chwn user01. hr /tmp/file1.txt -rw-r--r--. 1 user01 hr 0 6月 1 20:49 file1 |
chgrp | 设置一个文件属于哪个组 chgrp 组名 文件 (单个文件) chgrp - R 组名 目录 (R递归,将目录下的所有文件和目录统一设置权限) |
3.案例
针对hr部门的访问目录设置权限,要求如下
1.root用户和hr组的员工可以读、写、执行
2.其他用户没有任何权限操作思路1创建组2创建用户
3.修改属主和属组
4.设置权限
# goupadd hr
# useradd hr01 -G hr
# useradd hr02 -G hr
# mkdir /home/hr
# chgrp hr /home/hr
# chmod 770 /home/hr
# ll -d /home/hr
drwxrwx---. 2 root hr 4096 4月14 14:26 /home/hr
二.基本权限ACL
access control list -- 访问 控制 列表
ACL可以解决UGO只能最多实现3个用户对文件有不同的操作权限的问题,ACL是UGO的补充,或则说是加强版
设置不同用户,不同的基本权限(r、w、x)。对象数量不同
1.语法
基本用法 | setfacl -m u:alic:rw- /home/text.txt 命令 设置 用户或组:用户名:权限 文件对象 setfacl : set file acess control list -d则表示删除 |
2.用法
设置ACL | |
准备工作 | # touch /home/test.txt |
查看文件有哪些ACL权限 | # setfacl /home/test.txt 不要用ls - l 因为在ACL下ll查看的-rwx-rwx-rr- +有个加号是附加权限,会混淆 |
设置用户alice,jak权限 | 创建alice和jack过程略 # setfacl - m u:alice:rw /home/test.txt # setfacl - m u:jack:- /home/test.txt |
请思考命令中的o是什么作用 | # setfacl - m o::rw /home/test.txt (其它人权限的设置) |
查看/删除 | |
查看 | # setfacl /home/test.txt |
删除 | setfacl - x g:hr /home/test.txt (删除组hr的acl权限) setfacl - b /home/test.txt (删除所有的acl权限) |
watch -n1 'ls - l 文件'
另起一个窗口输入可以实时查看目前该文件的详细信息
三.特殊权限
1.如果一个文件很重要,那他万一被超管删除了怎么办? 靠特殊权限的i权限、
2.早上是不是看见一个权限叫rwxrwxrwt。特别的位置。
3.为什么系统创建文件是644?因为有系统默人权限设计。
1.特殊位置suid
suid(sgid)针对文件/程序时,具备临时提升权限,是针对文件所设置的一个特别的权限,使调用文件的用户临时具备属主的能力,谁用这个文件,谁就是这个文件的属主
针对的是属主的执行位,如果该位置一开始有x则u+s后该位置会是小s,相反如果该位置没有执行权限x则chmod u+s 后该位置是大S
实际上授权位是由4个组成的,分别是特殊位、属主、属组、其它
2.文件属性chattr
如果一个很重要的权限被超管删除了,这时候就可以靠chattr的i权限
a(append) | 允许在文件中进行追加操作 |
A | 这个属性不允许更新文件的访问时间 |
c (compreszed) | 启用这个属性时,文件在磁盘上会自动压缩 |
d(dump) | 不能使用dump命令备份文件 |
D | 设置了文件夹的D属性时,更改会在同步保存在磁盘上 |
e (extent format) | 它表明,该文件使用磁盘上的块的隐射扩展 |
i (immitable) | 在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件 |
S (synchronous) | 设置了这个属性时,变更或更改会同步保存到磁盘上 |
chattr属性中可以使用的不同选项:
- R :递归地修改文件夹和子文件夹地属性
- V:chattr命令会输出带有版本信息地冗余信息
查看chattr属性文件:lsattr
设置文件属性(特别权限),针对所有用户,root也会受到影响
# cd /home/test
# touch ./file.txt
# lsattr file
---------------- file
# chattr +i file //不能更改,重命名以及删除
//查看属性
# lsattr file
----i----------- file
# rm -rf file
尝试删除 -- 删除失败
//此时用vim打开也无法进行修改
减掉权限
# chattr - i file
3.进程掩码umask
为什么系统创建文件是644?创建目录权限是755?因为有系统默认权限设计
新建文件、目录地默认权限会受到umask地影响,umask表示要减掉地权限
系统默认umask值为0022
umask 0000:将系统默认权限值临时改为0000