一、基本权限UGO
互联网各种app特权,在管理员面前真实的样子,有超管决定某个计算机用户,能否访问某个文件。
1.设置权限的两个基本要素
- 权限对象
- 权限类型
2.权限的三类对象
- 属主:u
- 属组:g
- 其他人:o
- 特殊对象:所有人:a(u+g+o)
3.权限的三种类型
- 读:r=4
- 写:w=2
- 执行:x=1
4.设置权限
方式:使用符号,使用数字
4.1使用符号
- u 用户
- g 组
- o 其他
- r 读
- w 写
- x 执行
语法:chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
chmod u+w,g+r,o+w 1.txt
4.2使用数字
chmod 777 1.txt
4.3.了解普通文件的基本权限
-rwx-wx-w-. 1 root root 18239896 1月 12 19:06 1.txt
1 2 3 4 5 6 7
- 类型和权限
- 2表示链接,
- 3表示属主
- 4表示属组
- 5表示文件大小
- 6表示文件的创建时间
- 7表示文件名
4.4.编写程序
echo “hello 2024” //程序给用户说话在前边加上echo
read -p “input your name:” name //-p是print输出的意思,name变量
echo “$name是美女” //$name讲上面输入的name放到这句来
增加改文件执行权限,在命令行输入该文件名称即可
5.更改属主、属组
5.1chown命令--------设置一个文件/目录属于谁,属主
语法:chown 用户名.组名 文件
- chown alice.hr file1.txt 改变file1的属组和属主
- chown alice file1.txt 只改变属主
- chown .hr file1.txt 只改变属组
5.2chgrp命令-----------设置一个文件/目录属于哪个组,属组
语法: chgrp 组名 文件
- chgrp hr file1 改变属组
- chgrp -R hr dir1 以递归形式改变目录及目录下的文件的属组
二、基本权限ACL
ACL是access control list的简称,限制用户对文件的访问,ACL是UGO的补充,或者说是加强版
区别:ACL文件权限管理:设置不同的用户,不痛的基本权限(r,w,x),对象数量不同
UGO设置基本权限:只能一个用户,一个组和其他人
1.语法
setfacl -m u:alice:rw /home/test.txt
命令 设置 用户或组:用户名:权限 文件对像
2.用法
- setfacl -m u:jack:rw /home/test.txt 设置Alice的权限
- getfacl /home/test.txt 查看文件有哪些ACL权限
- setfacl -m o::- /home/test.txt 设置其他用户的权限
- setfacl -m g:hr:r /home/test.txt 设置组的权限
- setfacl -x g:hr /home/test.txt 删除组hr的acl权限,不能带rwx,不然会报错
- setfacl -b /home/test.txt 删除所有acl权限
三、特殊权限
1.特殊位suid
suid,(sgid)针对文件程序时,具备临时提升权限。suid是针对文件所在设置的一个特别的权限
功能:调用文件的用户,临时具备属主的能力
root运行时超管的权限,普通用户运行是普用户的权限
chmod u+s /usr/bin/cat 将普通用户拥有使用cat的权利
chmod u-s /usr/bin/cat 将普通用户不拥有使用cat的权利
前后变化
2.文件属性chattr
用途:常用语锁定某个文件,拒绝修改
分类:
- a 允许在文件中进行追加操作
- A 这个属性不允许更新文件的访问时间
- i 不允许删除文件
- 等等
lsattr 文件名 查看文件默认权限
chattr +i 文件名 不能更改,重命名,删除等操作
chattr -i 文件名 还原属性
注意:设置文件属性(特别权限),针对所有用户,root是否会受到影响? 会
3.进程掩码umask
新建文件,目录的默认权限会受到mask的影响,umask表示要减掉的权限
umask //默认是0022 查看用户的umask权限
umask 000 修改umask的权限,改完之后,系统在创建文件或者文件夹时就会按照这个来减
系统创建文件夹的时候,为什么权限是755?
0777 目录/文件夹的默认权限是755
- 0022
-----------------
0755
文件的默认权限是444
0755
- 0111
----------------- 系统为了保护自己,所以在创建文件上,去掉了所有的执行
0644