用户、组与权限
一、操作系统用户分类
1.1 用户分类
管理员用户: root,拥有整个系统下最高权限
普通用户:拥有个人用户的最高权限
傀儡用户: 只为了运行程序而存在,不能登录
2.2 系统中用户分类表示
root
0
傀儡用户
1-999
普通用户
1000+
二、用户相关的配置文件
2.1 用户信息 passwd
root:x:0:0:root:/root:/bin/bash第1列:用户名
第2列:密码占位符(shadow文件)
第3列:UID
第4列:GID
第5列:用户别名
第6列:家目录
第7列:命令解释器
2.2 用户组信息 group
第1列:组名
第2列:组密码
第3列:GID
第4列:组成员列表,不含组主用户
三、用户相关的目录
3.1 用户家模板 skel
创建用户的流程:
useradd sliman命令创建用户将
/etc/skel/目录下的所有隐藏文件拷贝到sliman的家目录修改文件属主和属组
::: tip 面试题:如果命令行左侧变成bash版本号怎么办?{#interviewQuestion01}
注释掉
/etc/profile中的PS1赋值行(如有)删除/备份家目录下的
.bash_profile和.bashrc命令
cp /etc/skel/.* .拷贝skel目录下的所有文件到家目录重新进入会话 :::
四、用户相关命令
4.1 创建用户 - useradd
语法格式:
参数:
-s:指定命令解释器-u:指定UID-g:指定GID-M: 不创建家目录-G:附加组
案例:
4.2 删除用户 - userdel
4.3 创建组 - groupadd
4.4 删除组 - groupdel
4.5 查看用户ID - id
4.6 设置密码 - passwd
方法一:交互式设置密码
方法二:免交互式设置密码
PS:Linux 不允许未设置密码的用户登录
4.7 修改文件属主属组 - chown
语法格式:
-R:递归修改目录及其子目录下的所有文件属主 属组
案例:
4.8 修改文件权限 - chmod
语法格式:
-R:递归对当前目录下所有子文件和目录进行权限变更
五、sudo 提权
普通用户下可以通过sudo命令来获取部分root的权限。
-i:模拟初始登录,加载目标用户的环境-l:列出当前用户可执行的sudo命令-k:撤销sudo凭据缓存
修改sudo配置:
方法一:visudo 命令(推荐)visudo命令支持语法检查
方法二:手动编辑 /etc/sudoers 文件
跳转至100行,使用如下格式添加所有权限
例:
六、权限位说明
6.1 最佳实践
企业中对于普通文件的最高权限为:644,即:rw-r--r--
6.2 权限对目录的作用
r:什么也干不了w:什么也干不了x:只能进目录r-x:可以正常对目录进行查看,和对目录下的文件进行写入操作rwx:可以对目录进行所有操作,创建、移动、删除等
6.3 默认权限控制 UMASK
mask 控制着 Linux 中文件和目录的默认权限
文件默认权限 = 666 - mask
系统默认权限 = 777 - mask
[!NOTE] 如果UMASK值中含有奇数,则文件的最终权限要在相减后在奇数位 +1
::: tip 笔试题:如果默认创建000属性的文件请问UMASK值是多少?{#interviewQuestion02} 答:是 666。 :::
6.4 隐藏权限
查看隐藏权限
设置隐藏权限
i:不可变,谁也无法对文件进行任何改动a:也不可变,但是可以追加内容
6.5 特殊权限位
特殊权限位是 12 个权限位中的前 3 位,可以通过 stat 命令查看,设置方法与普通权限相同。
suid:4,给文件添加 s 权限后,所有使用这个命令的用户都拥有该命令主人的权限。针对二进制命令或程序,不能作用在脚本上。sgid:2,基本和suid相同,所有使用这个命令的用户都拥有命令主人所属组的权限。sticky:1,粘滞位,每个用户只能管理自己的文件(默认情况下能否删除一个文件看的是上级目录的权限,不看文件权限),例如 /tmp 目录。
最后更新于