目录
Linux用户管理
用户类型
用户 | 说明 |
root | 管理员(超级用户) |
普通用户 | 能登录系统,/sbin下的命令不能用 |
程序用户 | 一般不能登录系统,给程序用的 |
组 | 说明 |
基本组 | 每个用户都有基本组,但最多只能有一个基本组 |
附加组 | 每个用户可以有多个附加组 |
- 每一个用户和组都有自己的唯一标识:id
- 用户:UID(user id)
- 组:GID(group id)
-
用户和组相关路径
路径 | 说明 |
/etc/passwd | 该文件是Linux系统存储用户账户信息 |
/etc/group | 该文件用于存储和管理用户组信息 |
/etc/shadow | 该文件为只读文件,用于存储系统中用户的密码 |
passwd文件解析
# 示例
useradd zhangsan # 创建一个普通用户
cat /etc/passwd # 查看存储用户信息的文件
# 结果:
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
# 每个数据以列显示,列与列之间以:隔开
#结构:用户名:密码:UID:GID:描述:该用户的家目录:登录时的默认Shell程序
# 密码-x:这个字段通常显示为 x,因为用户的加密密码实际上存储在 /etc/shadow 文件中。/etc/passwd 文件只保留一个占位符
# 描述:用户的全名或描述(GECOS field)
可以看到普通用户的UID是从1000开始分配的
从CentOS 7 往后开始的版本从1000开始,之前的系统从500开始
用户范围
用户 | 范围 |
root | 固定为0 |
系统内置程序用户 | 1 ~ 999 |
普通用户 | 1000 ~ 60000 |
当用户被删除时,id会被释放,按序分配给下一个新建的用户
shadow文件解析
# 示例 zhangsan:$6$Wj4AkIEd$D61H31XsJgy/Axa6glMwgi7knKkYNQFMYyLXyVn6B8cSHnrTPL3n/OqnOw0N0uVVmQsKhhvEQPivbZ0NDa4SS/:19869:0:99999:7:::
# 结构:
# 用户名 : 密码 : 上次修改密码的时间 : 密码最短有效期限 : 最长密码的有效天数 : 提示天数 : 宽限天数 : 失效时间 : 保留字段
# 密码:表示被加密后的密码,如果显示为!!则表示该用户未激活密码,如果显示为空则表示该用户没有密码 # 上次修改密码的时间:从1970年1月1日开始计算,单位为天数(1970.1.1是unix第一版发布的时间)
# 密码最短有效期限:为0时不限制有效期限,假如为30,代表在30天内不能改密码
# 最长密码的有效天数:假如设为60,60天后必须修改密码
# 提示天数:密码到期前的警告天数
# 宽限天数:表示在密码过期后,用户仍然可以登录的天数。如果此字段为空,那么密码过期后用户将不能登录。
# 失效时间:如果此字段设置了,那么在到期日期之后,用户将不能登录。 # 保留字段:这里有两个空字段,通常用于未来扩展或特定于系统的实现。
创建、删除用户相关命令
命令 | 说明 |
logout | 注销用户(重新登录) |
useradd 用户名 | 创建一个普通用户 在创建用户时,系统会自动创建一个跟用户同名的组 |
useradd -M 用户名 -s /sbin/nologin | 创建一个程序用户,指定用户使用Shell的路径 -M或--no-create-home:不创建家目录 -s或--shell:指定新用户登录的Shell /sbin/nologin:是一个特殊的 shell,它不允许用户登录系统 |
useradd -u 2000 -g 2001 用户名 | -u:指定新用户的UID -g:将用户指定到一个基本组(组要提前存在) -G:将用户指定到一个附加组(组要提前存在) |
useradd -e 2025-01-01 用户名 | 创建用户时指定该用户失效时间 -e或--expiredate:用户失效时间 |
userdel -r 用户名 | 删除一个用户并且删除对应家目录 |
密码相关命令
命令 | 说明 |
passwd 用户名 | 添加、修改该用户登录系统的密码 |
passwd -d 用户名 | -d或--delete:清除该用户的密码 |
passwd -l 用户名 | -l或--lock:锁定该用户,不能登录 |
passwd -u 用户名 | -u或--unlock:解锁该用户 |
passwd -S 用户名 | -S--status:查询该用户的密码状态 |
chage -d 0 用户名 | 强制修改该用户密码失效,登录时输入旧密码修改密码 |
修改现有用户属性相关命令
命令 | 说明 |
usermod -L 用户名 | usermod:User Modify -L或--lock:锁定该用户 |
usermod -U 用户名 | -U或--unlock:解锁该用户 |
usermod -l 修改后用户名 用户名 | -l或--login:修改用户的登录名 |
usermod -d 目标路径 用户名 | -d或--home:修改该用户的家目录路径 |
usermod -g 组名 用户名 | -g:修改用户的基本组(组必须存在) |
usermod -a -G 组1,组2 用户名 | -G:修改用户的附加组(组必须存在) -a:为该用户追加附加组 不加-a就是替换原有的附加组 |
组相关命令
命令 | 说明 |
groupadd 组名 | 创建一个新组 |
groupdel 组名 | 删除一个组 如果要删除的组是某个用户的基本组是不能删除的 |
groupadd -g 1001 组名 | 创建一个新组,并指定其GID为1001 -g或--gid:指定GID |
gpasswd -a 用户名 组名 | -a或--add:添加 将用户添加到一个组(附加组) |
gpasswd -d 用户名 组名 | -d或--delete:删除 将用户从这个组删除 |
gpasswd -M user1,user2,user3 group1 | 设置组1的成员为user1,user2,user3 -M或--members:指定组的成员列表 |
查看用户相关信息
命令 | 说明 |
id 用户名 | 查看用户信息 uid=1007(zhaoliu) gid=1008(zhaoliu) 组=1008(zhaoliu) |
groups 用户名 | 查看用户所属的组信息 zhangsan : 基本组 附加组 |
users | 显示当前登录到系统的用户列表 |
w | 比who命令更详细的显示当前系统信息 |
who | 显示当前登录到系统的用户列表 |
权限管理
ll命令文件和目录的信息
示例:drwxr-xr-x. 2 root root 6 4月 22 10:52 文件名
第一段(drwxr-xr-x)
第一个字母:文件类型
文件类型 | 说明 |
d | 目录 |
- | 普通文件 |
l | 链接文件 |
b | 块设备文件(存储文件) |
c | 字符文件 |
文件权限
后面的字母每三个为一组
- rwx:属主,这是文件所有者的权限
- r-x:属组,这是与文件所有者同组的用户的权限
- r-x:其他,这是其他用户的权限
安全上下文
drwxr-xr-x.(文件权限后面的点)
- 叫做:安全上下文
- 由内核安全机制赋予的权限,内核安全机制默认打开
- 代表该文件
- 在实际部署一些服务时,如果不关闭内核安全机制的话,有些服务就不能正常运行
- 永久关闭内核安全机制
- vim /etc/sysconfig/selinux;将SELINUX修改为disabled。重启生效
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection. SELINUXTYPE=targeted
临时关闭内核安全机制
- setenforce 0
第二段(2)
- 这是该文件的硬链接数量。或目录内的文件数量
第三段(root root)
- 第一个 root 是文件或目录的所有者用户名。
- 第二个 root 是文件或目录所属的组名。在这个例子中,文件或目录的所有者和所属组都是 root。
第四段(6)
- 这是目录本身的大小,以字节为单位。如果是目录的话,它只包含目录文件的元数据,而不包含其目录里文件数据的总和大小。
第五段(4月22 10:52)
- 这是该文件或目录的最后修改时间。
第六段(文件名)
- 这是该文件或目录的名称
修改权限相关命令
属主、属组、其他用u、g、o来表示,也可以用a(all)来一起表示这三个权限
示例:rwx r-x r-x 代表三个权限组
权限类别 | rwx | r-x | r-x |
说明 | 通常是创建该文件的用户 该用户对于当前文件的权限 | 除了属主之外,文件还关联了一个用户组。这个组内的成员对于当前文件的权限 | 属主和属组中的用户之外,所有其他用户都被视为“其他”用户 |
关联概念 | 属主 | 属组 | 其他 |
对应符号 | u | g | o |
权限 | 说明 |
r | read(读) |
w | write(写) |
x | execute(执行) |
命令 | 说明 |
chmod u+x 文件名 | 给文件或目录的所有者添加执行权限。 u+x:u对应属主,表示操作的对象;x对应execute(执行),表示要为该添加执行的权限 所以u+x表示 对创建该文件的用户添加 |
chmod ug-rw | 给文件所有者和文件关联组(u和g)减少读写(rw)的权限 |
chmod -R a+x 目录名 | 给目录和该目录下的所有子目录和文件 增加 给ugo的执行权限 |
chown 属主名:属组名 文件名 | 更改该文件的属主和属组 |
chown :属组名 文件名 | 只更改该文件的属组 |
chown 属主名: 文件名 | 只更改文件的属主 |
八进制模式设置权限
使用八进制模式来设置权限。在这种模式下,每个权限位都有一个数字值(读=4,写=2,执行=1),通过将这些值相加来设置特定的权限组合。
例如,chmod 755 文件名 将设置所有者的权限为读/写/执行(7=4+2+1),组的权限为读/执行(5=4+1),其他用户的权限也为读/执行(5=4+1)。
角色 | 对应数字 |
目录的默认权限 | 755 |
文件的默认权限 | 644 |
目录umask | 044 |
目录的权限基数 | 777 |
文件umask | 044 |
文件的权限基数 | 666 |