Linux 用户和组及权限管理
基本命令
文件
/etc/passwd 存储用户信息的文件
/etc/shadow 存储用户密码信息文件
/etc/group 存储了组信息
/etc/sudoers sudo 命令配置文件
组
-
添加组
groupadd 添加组 -g 指定组ID
-
修改组属性
groupmod 修改组的属性
-
删除组
groupdel 删除组
用户
-
添加
useradd 添加用户 -u 指定uid 号 -g 指定基本组 -G 指定附加组 -s 指定用户登录的命令解释器 -s /sbin/nologin -s /bin/bash -M 不创建家目录
-
更新用户信息
usermod 更新用户信息
-
删除用户
userdel 删除用户 -r 删除用户时,同时删除家目录
-
用户密码/锁定
passwd 修改用户密码 -S 查看用户密码状态 -l 锁定用户 -u 解锁用户 chage 修改密码过期时间 -M 修改密码最长有效期为多少天
-
root
sudo 以其他用户身份执行命令 su 切换用户
-
查看系统进程及所属的 user 等信息
ps aux
文件/权限
ln -s /tmp/ajest.txt /root/Desktop/ajest.txt
将/tmp/ajest.txt 文件创建快捷方式到/root/Desktop/ajest.txt
chmod 修改文件或者目录的权限
u-r 撤销读权限
u-w 撤销写权限
o=--- 其他用户权限全部撤销
o-r 撤销其他用户列出目录的权限
o=rwx 修改其他用户的权限
g=--- 修改所属组的权限
chmod 1777 /tmp/ 对目录设置粘滞位
chmod 2777 /tmp/rootDir 对目录设置sgid 标识
chown root /tmp/ajestDir/ajest.txt
修改文件所属者为root
ls -ld /tmp/rootDir/ 查看目录的权限
用户和组
基本原理
-
计算机使用者(人,正常用户,黑客)扮演 账户(用户,角色)拥有 权限
执行程序或打开文件,都必须以某一个用户的身份,以某一个权限来动作 -
用户必须属于某一个组
-
加密
-
对称加密
DES、3DES、AES
-
非对称加密
RSA
-
hash 单向散列
md5、sha-256、sha-512
-
用户分类
用户分类 | UID |
---|---|
普通用户 | > 1000 |
程序用户 | 1 - 1000 |
超级管理员用户 | 0 |
-
程序用户
程序用户不可登录,专门用于运行程序或服务的用户账户,具有较低的权限,只能访问和执行与其任务相关的文件和资源
程序用户的作用是提供一种安全、隔离和可管理的环境来运行程序,以确保系统的稳定性、安全性和性能
如
root 启动了apache httpd 服务,为了安全, root 会将进程转交给 daemon 用户
组
-
分为基本组和附加组
-
先有组,再有用户:
- 用户必须有且只有一个基本组。
- 当创建一个用户时,如果没有指定基本组,会先创建一个与该用户同名的组,再创建用户。
-
一个用户可以有多个附加组
-
基本组内没有任何用户时才可以被删除
/etc/passwd 文件
-
存放用户名和其他信息
-
7 个字段
冒号
:
隔开root x 0 0 root /root /user/bin/zsh(或/usr/sbin/nologin) 用户名 口令,x 为占位符(为空则代表无密码) UID GID(组id) 备注 家目录 登录shell/命令解释器(命令或 shell (/bin/bash) 的绝对路径) -
超级管理员 UID=0,系统用户 UID 1-999,普通用户 UID 1000以后
-
普通用户 UID 改为 0 后即可获得 root 权限
-
shell
- /bin/bash
- /bin/sh
- zsh
echo $0
查看命令解释器
/etc/shadow 文件
-
存放密码信息
-
9 个字段
-
格式
root:$y$j9T$jOd7E6DLFdmgM3x6gciyA/$KHsDhTVufiVEc0ACIUAcrk9N8pPJpYv5ZGPOMtI3mY9:19404:0:99999:7::: #用户名:!!代表这个用户没有密码 #用户名:*代表这个用户的密码是被锁定的 # $算法$盐值$密码密文
root y y yj9T~3mY9 19404 3 90 7 10 用户名 密码密文 上次密码修改日期 密码最短有效期 密码的最长有效期 密码过期时间 密码的不活跃期 账户失效时间 保留参数 hash 加密 $算法$盐值$密码密文
距1970.1.1多少天 修改密码后不可再次修改的时间 99999 表示不到期 有效期前提醒的天数 0表示过期后立即失效 自1970 年 1 月 1 日以来的总天数作为账户失效时间,在此规定时间之外,无论过期与否,账号均无法使用。 | 正常登录系统 | 仍然可以登录系统 | 无法登录 0 用户不能修改密码 3 用户可以修改密码 83 提示修改密码 90 登录 100 密码锁定 |----------------------|------------------|---------------|----------|--------------> ^ ^ ^ ^ ^ 密码修改时间 密码最短有效期 密码过期时间 密码最长有效期 密码不活跃期
显示出具体日期
date -d "1970-01-01 <数字> days"
/etc/group 文件
-
存放组信息
-
格式
gjl:x:1000:gjl
gjl x 1000 gjl 组名 密码 GID 群组用户 用户组的名称,由字母或数字构成。 x 是密码标识,
组密码默认保存在 /etc/gshadow 文件中。Group ID
用户和组管理
创建组和用户
-
创建用户
useradd <用户名> -u <uid>,指定uid 号 -g <gid>或<组名>,指定基本组 -G <gid>或<组名>,指定附加组 -s,指定用户登录的命令解释器,如-s /sbin/nologin,-s /bin/bash -M,不创建家目录
查看日志
tail -10 /var/log/secure -f 查看变动 # 先自动创建组,再创建用户
-
创建组
groupadd 组名 -g <gid> # -g 指定组 id
创建组后可直接查询组文件的最后一行
tail -1 /etc/group
删除组和用户
-
删除用户
userdel <用户名> -r # -r 同时删除家目录
-
删除组
groupdel 组名
修改组和用户
-
修改用户
usermod -u <uid> 修改uid
-
修改组信息
groupmod # 如 将 bk2304 组 id 修改为2000 groupmod bk2304 -g 2000
密码管理
-
查看用户密码状态
passwd -S <用户名>
用户名 密码状态 密码最后一次修改时间 密码最短有效期 最长有效期 警告时间 失效时间 root PS 1969-12-31 0 99999 7 -1 LK,密码锁定
NP,没有密码
PS,有可用密码创建时间
密码最近一次修改时间密码过期前7 天警告 -1 表示没有失效时间 -
删除用户密码
passwd -d <用户名>
-
设定用户密码
passwd <用户名> # 根据提示输入密码和确认密码
-
用户锁定
passwd -l <用户名> # 用户密码状态显示 LK,/etc/shadow 中密码显示为 "!!"
-
解锁用户
passwd -u <用户名>
-
修改密码最长有效期
passwd -x <用户名>