Linux自娱—5.用户管理
配置文件
1、用户信息文件 /etc/passwd
[root@wg ~]# man 5 passwd // 查看帮助
[root@wg ~]# cat /etc/passwd
- 文件说明:每一行代表一个用户 7个字段各自含义,用冒号分割
| 1.用户名称
| 2.密码标志 密码文件其实是shadow passwd中x表示用户有密码
| 3.用户ID就是UID root 0 普通用户500 500以内系统用户
| 4.用户初始组ID GID
- 初始组就是用户一登录就立刻拥有这个用户组的相关权限
- 每个用户的初始组只能有1个 一般是和这个用户的用户名相同的组名作为这个用户的初始组
- 附加组是指用户可以加入多个其他的用户组 并拥有这些组的权限 附加组可以有多个
| 5.用户说明
| 6.家目录
| 7.登陆以后的shell 就是命令解释器 在passwd中,除了标准shell是/bin/bash之外,还可以写如/sbin/nologin
- root用户和普通用户是标准shell
- 伪用户的解释器 /sbin/nologin
- 理论上shell可以有多个 可以更改
- 简单说所有用户都必须写成/bin/bash 写到nologin下用户就失效
2、影子文件 /etc/shadow
- shadow文件权限是000;它有9个字段
| 1.用户名
| 2.经过加密后的真正密码
- sha512散列加密
- !!或者*表示没有密码 不能登陆
- 密码前边加一个感叹号 可以临时禁用密码
| 3.密码最后一次修改日期 事件戳表示
| 4.两次密码修改间隔 如果写10 表示10天后才能改密码
| 5.密码有效期
| 6.密码修改到期前的警告天数
| 7.密码过期后的宽限天数
- 0 代表密码过期后立即失效
- -1 代表密码永远不会失效
| 8.账号失效时间 要用时间戳表示
- 把日期换算成时间戳 echo $(($(date --date="2020/01/01" +%s)/86400+1))
- 把事件戳换算成日期 date -d "2020-01-01 15600 days"
| 9.保留字段
3、组信息文件 /etc/group
- 1.组名 默认情况下每个用户都有一个跟自己名字相同的组
- 2.组密码标志
- 3.GID groupid 靠组ID识别用户
- 4.组中附加用户
4、组密码文件 /etc/gshadow
- 1.组名
- 2.组密码
- 3.组管理员用户名
- 4.组中附加用户
5、用户家目录
- 普通用户 /home/用户名/ 所有者和所属组都是此用户 权限700
- 超级用户 /root/ 所有者和所属组都是root用户 权限是550
- 更改权限的话 是把用户权限改成对应的用户权限 就是修改的UID 用户家目录不会变
6、系统会给用户在 /var/spool/mail/下创建同名邮箱文件
7、用户模板目录
- /etc/skel/
- 进入 /home/用户名 文件夹下 ls -a 有隐藏文件 是从模板里导入到这里的
- 如果在/etc/skel/下创建文件 会在/home/用户名 下出现这个文件
用户管理命令
1、实际功效
- 处理用户的两个文件;
- 组的两个文件;
- 家目录里的用户模板以及邮箱
2、添加用户 useradd
-常用选项
| -u 手工指定用户的UID
| -d 家目录
| -c 用户说明
| -g 组名 手工指定用户的初始组
| -G 组名 指定用户的附加组
| -s shell 手工指定用户的登陆shell 默认是/bin/bash
usradd -u 555 -G root,bin -c "test user" -d /smitty -s /bin/bash smitty
# 1.不要用g加组,尤其是root组,不会创建相应目录 会很麻烦
- 我日,我这个脑子,我的实际操作好像都用了g
# 2.可以直接放在根目录下
# 3.如果指定shell 不要写错了
3、用户默认值文件
- /etc/default/useradd
- GROUP=100 用户默认组
- HOME=/home 用户家目录
- INACTIVE=-1 密码过期宽限天数(shadow文件第7字段)
- EXPIRE= 密码失效时间(8)
- SHELL=/bin/bash 默认shell
- SKEL=/etc/skel 模板目录
- CREATE_MAIL_SPOOL=yes 是否建立邮箱
4、在/etc/login.defs下有其他东西
5、密码命令
passwd -S 用户名 // 查看用户密码信息
passwd -l 用户名 //锁定用户 -u解锁用户
echo "mima" | passwd --stdin 用户名 // 手工设置用户密码 主要是用来shell编程的时候使用
6、修改用户信息
- usermod和useradd选项是一样的,这个是给已存在用户操作的
- usermod是用L和U锁定和解锁用户的
- chage 【选项】 用户名
| -l 列出用户的详细密码状态
| -d 修改密码最后一次更改日期
| -m 两次密码修改间隔
| -M 密码有效期
| -W 密码过期前警告天数
| -I 密码过后宽限天数
| -E 账号失效时间
- chage 最经常用就是 chage -d 0 用户名 意思就是让用户登陆先修改密码
7、删除用户userdel
- -r 删除用户的同时删除用户家目录
- 删除用户相当于执行了下边6个操作
| /etc/passwd
| /etc/shadow
| /etc/group
| /etc/gshadow
| rm -rf /var/spool/mail/用户名
| rm -rf /home/用户名
8、id 用户名 查看用户id
9、sudo切root
- 环境变量不会换;必须用 su - root ;用env查看
- su - root -c useradd user3 // 用管理员身份执行一条命令
用户管理命令
- useradd -d 路径 username 创建指定用户家目录用户
- userdel -r username 删除用户及文件夹 彻底删除
- usermod -s /sbin/nologin username 让一个用户不登录 属性其实可以写任意东西
- -g 是设置用户的基本组 -G 是设置用户的附加组
- /etc/passwd 可以查看的是用户的基本组
- /etc/group 可以查看用户的附加组
- usermod -a -G GroupName UserName 添加附加组
| -G修改当前次要组
| -G -a是增加新的次要组
用户组管理命令
1、groupadd
- groupadd 【选项】 组名
| -g GID 指定组ID
| -n 新组名 老组名 改名
2、groupdel
- groupdel 组名
- 如果有初始用户 删不了组
- 如果没有初始用户 可以删组
3、已有用户添加到组或删除
- 是作为附加用户添加的
- gpasswd -a 用户名 用户 // 把用户加入组
- gpasswd -d 用户名 用户 // 把用户从组删除
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律