Linux 是一个多用户、多任务的操作系统。 所以,对权限很“讲究”
用户身份
命令
- useradd 创建用户(会创建一个同名的基本用户组)
- groupadd 创建用户组(组分为基本组和扩展组,前者只有一个,后者为多个)
- usermod 修改用户属性
- id 用户 查看用户信息
- passwd 修改密码等信息
- userdel 删除用户
- -r 同时删除用户及对应家目录
文件权限
文件类型
命令 | 作用
-
d 目录文件 l 链接文件 b 块设备文件 c 字符设备文件 p 管道文件
权限分配
- 对于文件
- r 读取文件权限
- w 修改文件权限
- x 执行文件权限
- 对于目录
- r 读取目录文件列表权限
- w 对目录内文件编辑
- x 进入一个目录的权限
文件的特殊权限
1
2
chmod 权限 + 文件 =》 修改文件权限
chmod 属性 =》 修改所属组
一般我们会经常遇到无法通过单纯的设置权限来解决问题,因为有了以下三种特殊权限位(注意,它们是位,也就是通过更改9位权限来作用)
- SUID
- 类比尚方宝剑,作用是让非管理员用户暂时拥有管理员的权利。所以,它应该是通过更改“文件所有者”的权限来作用
chmod u+s 文件名
rwx
->rws
rw-
->rwS
- SGID
- 让执行者暂时拥有属组的权限
chmod -R g+s 文件名
rwx
->rws
rw-
->rwS
- 设计类似于SUID,但不同的是更改的是属组
- SBIT
- “粘滞位”,可理解为“保护位”。即确保用户只能删除自己的文件,而不能删除其他用户的文件
chmod -R o+t 目录名
rwx
->rwt
rw-
->rwT
例:求rwSr-s-wT
的权限数字表达式
解:
1
2
3
4
5
6
原式: rwSr-s-wT
化简: rwS / r-s / -wT
还原: rw- / r-x / -w-
数字: 6 / 5 / 2
特殊权限 4 2 0 (SUID为4,SGID为2,SBIT为1)
得: 7 6 5 2
文件的隐藏属性
权限分三种: 一般权限、特殊权限、隐藏权限
隐藏权限不同于另两种,个人理解为一种额外的扩展的权限。
格式:
chattr 参数 文件
“ + “ 为增加,” - “为移除1 2 3 4 5
touch test.txt //创建test.txt文件 chattr +a test.txt //增加隐藏属性 rm test.txt //若删除,删除失败 chattr -a test.txt //移除 rm test.txt 、、删除成功
lsattr 参数 文件
查看隐藏权限
文件访问列表(ACL)
上述三种权限都有一个特性————“权限是针对某一*类成员”
所以,我们希望对某一个成员权限进行设置
setfacl 参数 用户 文件
设置ACL1 2
>setfacl -Rm u:linuxprobe:rwx /root //setfacl 参数 用户:用户名:权限 文件 //此时linuxprobe这个用户就拥有查看/root文件的权限了
getfacl /root
查看ACL
参数 | 作用
- | -
-R | 针对目录文件
-m | 针对普通文件
-b | 删除ACL
u | 用户
g | 组
一般情况下都要加上
m
,如上面的例子
su和sudo
su
是用来切换用户,我们使用su - linuxroot
sudo
作用是把特定命令的执行权限赋予给指定用户visudo
配置用户权限(只有root用户有权限使用)- 在99行,添加:
linuxprobe ALL=(ALL) ALL
linuxprobe ALL=NOPASSWD :usr/sbin/poweroff
执行关机命令不用再输入密码
- 在99行,添加:
图片笔记