Linux用户与权限:权限管理
Linux用户与权限:权限管理
概述
Linux是多用户的操作系统,允许多个用户同时在系统上登录和工作。 为了确 保系统和用户的安全采取了如下安全管理方案:
通过UID/GID确定每个用户在登录系统后都做了些什么
通过UID/GID来区别不同用户所建立的文件或目录
- 每个文件或目录都属于一个UID和一个GID
每个进程都使用一个UID和一个或多个GID来运行
- 通常由被运行进程的用户决定
超级用户具有一切权限,无需特殊说明
普通用户只能不受限制的操作主目录及其子目录下的所有文件,对系统 中其他目录/文件的访问受到限制
分类
文件所有者:user
文件所属组 :group
其他用户 :other
权限项 | 可读 | 可写 | 可执行 | 可读 | 可写 | 可执行 | 可读 | 可写 | 可执行 |
---|---|---|---|---|---|---|---|---|---|
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | user | user | user | group | group | group | other | other | other |
目录上只有执行权限,表示可以进入或穿越他进入更深层次的子目录
目录上只有执行权限,要访问该目录下的有读权限的文件,必须知道文件名才可以访问
目录上只有执行权限,不能列出目录列表也不能删除该目录
目录上执行权限和读权限的组合,表示可以进入目录并列出目录列表
目录上执行权限和写权限的组合,表示可以在目录中创建、删除和重命名文件
分配三种基本权限
文件和目录的使用者
- 属主、同组人、其他人
权限分配
属主的权限:用于限制文件或目录的创建者
属组的权限:用于限制文件或目录所属组的成员
其他用户的权限:用于限制既不是属主又不是所属组的能访问该 文件或目录的其他人员
权限的优先顺序
如果UID匹配,就应用用户属主(user)权限
否则,如果GID匹配,就应用组(group)权限
如果都不匹配,就应用其它用户(other)权限
权限的管理
chmod改变文件或目录的权限
chown – 改变文件或目录的属主(所有者)
chgrp – 改变文件或目录所属的组
umask – 设置文件的缺省生成掩码
su与sudo – 切换用户及权限下放
修改文件/目录的权限
更改已有文件或目录的访问权限
- 使用chmod命令
chmod命令有两种设置方法
文字设定法
使用字母和操作符表达式来修改或设定文件的访问权限
chmod [-R] <文字模式> <文件或目录名>
数值设定法
使用八进制数字来设定文件的访问权限
chmod [-R] <八进制模式> <文件或目录名>
-R 选项表示对目录中的所有文件或子目录进行递归操作
chmod 的文字设定法
chmod [操作对象] [+|-|=] [访问权限] 文件或目录名
操作对象 | 操作方法 | 访问权限 |
---|---|---|
u 属主(user) | + 添加某权限 | r 读 |
g 同组(group) | - 删除某权限 | w 写 |
o 其他(others) | = 直接赋予某权限并取消其 他所有权限 | x 执行 |
a 所有(all) | = 直接赋予某权限并取消其 他所有权限 | - 无权限 |
举例:
1 | chmod u+rw myfile |
改变文件/目录属主或组
只有root用户才能改变文件的所有者
只有root用户或所有者才能改变文件所属的组
用 chown 命令改变属主 和/或 组
- chown [-R] <用户名[<.|:>组名]> <文件|目录>
chgrp 被用来改变所属组
- chgrp [-R] <组名> <文件|目录>
举例:
1 | chown soft myfile |
umask命令
查看当前 umask 值
- 格式:umask [-S]
修改当前 umask 值
格式:umask u1u2u3
u1表示的是不允许属主有的权限
u2表示的是不允许同组人有的权限
u3表示的是不允许其他人有的权限
RHEL/CentOS默认的 umask 值
普通用户的 umask 是 002
root用户的 umask 是 022
umask值与文件/目录权限
umask值 | 新建目录的访问权限 | 新建文件的访问权限 |
---|---|---|
022 | 777-022= 755 | 666-022= 644 |
027 | 777-027= 750 | 666-027= 640 |
002 | 777-002= 775 | 666-002= 664 |
006 | 777-006= 771 | 666-006= 660 |
007 | 777-007= 770 | 666-007= 660 |
su与sudo
su可用于在不注销的情况下切换到系统中的另一个用户。可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户 的身份做一些事情。普通用户使用这个命令时,必须有超级用户或者其他用户的密码口令,退出可使用exit。
sudo可以让用户以其他身份来执行指定的命令,默认的身份为root。在 /etc/sudoers中,设置了可执行sudo命令的用户。若其未经授权的用户企 图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先 输入密码,之后有5分钟的有效期限,超过期限则需要重新输入密码。 Sudo提供日志,忠实的记录每个用户使用sudo做了什么,并能将日志传 到中心主机或者日志服务器。
通过sudo能把有些超级权限有针对性的下放,并且不需要用户知道root密 码,所以sudo相对于权限无限制性的su来说还是比较安全的,所以sudo 也能被称为受限制的su,另外sudo时需要授权许可的。
执行流程:当前用户切换到root并执行完后,直接退回到当前用户,前提 时要通过sudo的配置文件/etc/sudoers进行授权。
语法:sudo [选项] command
选项 | 含义 |
---|---|
-b | 在后台执行命令 |
-H | 将HOME环境变量设为新身份的HOME环境变量 |
-k | 结束密码的有效期限,下次在执行sudo时需要输入密码 |
-l | 列出目前用户可执行与无法执行的命令,一般配置好 /etc/sudoers后,要用这个命令来查看和测试是否配置正确 |
-p | 改变询问密码的提示符号 |
-s | 执行指定的shell |
-u用户 | 以指定的用户作为新的身份,若不加上此参数,则默认以root 作为新的身份 |
-v | 显示用户的时间戳,如果用户运行sudo,输入用户密码后,在 段时间内可以不用输入口令,就可以直接进行sudo操作,用-v 可以跟踪最新的时间戳。 |
特殊权限
可执行文件的特殊权限
suid:使用命令的所属用户的权限来运行,而不是命令执行者的权 限 ,(对一个可执行文件,不是以发起者身份来获取资源,而是 以可执行文件的用户所有者身份来执行的)。
sgid:使用命令的组权限来运行目录的特殊权限,在设置了 sgid 权 限的目录中创建的文件会具备该目录的组权限。
sticky-bit:在带有粘滞位的目录中的文件只能被文件的所属用户 和root用户删除,不管该目录的写入权限是如何设置的
设置特殊权限
参数 | 作用 |
---|---|
u+s | 设置SUID权限 |
u-s | 取消SUID权限 |
g+s | 设置SGID权限 |
g-s | 取消SGID权限 |
o+t | 设置SBIT权限 |
o-t | 取消SBIT权限 |
特殊权限的文字表示方法
SUID和SGID用s表示;Sticky-bit用t表示
SUID是占用属主的x位置来表示
SGID是占用组的x位置来表示
sticky-bit是占用其他人的x位置来表示
例如
1 | -rwsr-xr-x 1 root root 23420 2019-08-11 /usr/bin/passwd |
特殊权限的数值表示方法
权限 | 对应数字 |
---|---|
SUID | 4 |
SGID | 2 |
Sticky-bit | 1 |
- | 0 |
举例:
1 | -rwsr-xr-x ——4755 |
使用chmod设置特殊权限
为程序 ~/bin/myapp 添加 SUID权限
- ```
#chmod u+s ~/bin/myapp #chmod 4755 ~/bin/myapp1
2
3
4
5
6
7
8
9
- 为目录 /home/groupspace 添加 SGID权限
- ```
#chmod g+s /home/groupspace
#chmod 2755 /home/groupspace
- ```
为目录 /home/share 添加 sticky-bit 权限
#chmod o+t /home/share #chmod 1755 /home/share
文件隐藏属性
- chattr命令
chattr命令用于设置文件的隐藏权限,英文全称为change attributes,语法格式为“chattr [参数] 文件名称”。
- lsattr命令
lsattr命令用于查看文件的隐藏权限,英文全称为“list attributes”,语法格式为“lsattr [参数] 文件名称”。
chattr命令中的参数及其作用
参数 | 作用 |
---|---|
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用零块填充原文件所在的硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(Atime) |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
x | 可以直接访问压缩文件中的内容 |
文件访问控制列表
- setfacl命令
setfacl命令用于管理文件的ACL权限规则,英文全称为“set files ACL”,
语法格式为“setfacl [参数] 文件名称”。
- getfacl命令
getfacl命令用于查看文件的ACL权限规则,英文全称为“get files ACL”,
语法格式为“getfacl [参数] 文件名称”。
参数 | 作用 |
---|---|
-m | 修改权限 |
-M | 从文件中读取权限 |
-x | 删除某个权限 |
-b | 删除全部权限 |
-R | 递归子目录 |
这点不做重点要求,若有同学有意向考证,则需掌握