用户和用户组管理
切换用户 su - user
退出 logout或exit或快捷键ctrl+d
linux支持多用户、多任务的操作系统:
1、用户的分类
超级用户 root user id =>uid 0
普通用户:
系统用户:应用程序运行时,必然是以某个用户的身份在系统上运行的
。 1~499
真实用户:在系统上创建的用户。tom 500~2^32
shell 应用程序
www.baidu.com -->shell--->kernel(内核)
在系统上每创建一个用户,会同时创建一个群组(群组名称同用户名称)
2、存放用户信息的文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin(非交互式shell)
tom:x:500:500::/home/tom:/bin/bash
danny:x:501:501::/home/danny:/bin/bash
第一列:用户名
第二列:密码占位符
第三列:用户id号,uid
第四列:群组id号,gid group
第五列:用户描述信息 comment(描述;注释)
第六列:用户的家目录
第七列:用户使用的shell
交互式shell
非交互式shell :不允许用户登陆系统 /sbin/nologin
3、增加用户(创建用户)
useradd [选项] 用户名
-u 指定uid
-g 指定gid
-G 指定附加组 group
-r 创建一个系统账户
-d 指定家目录
-s 指定shell
-c 指定描述信息
用户的主要群组 创建用户时默认创建的那个群组即用户的主要群组
用户的附加群组 可以让某个用户除了属于其主要群组外,还可以让其属于其他的群组
#例:useradd -s /sbin/nologin -d /data/user/danny danny
4、存放群组信息的文件 /etc/group
root:x:0:
bin:x:1:bin,daemon
bd:x:1000:
第一列:群组名称
第二列:群组密码占位符
第三列:群组id gid
第四列:群组成员(用户)
5、增加群组groupadd
groupadd Danny
-g 指定群组id号
6、修改用户、群组信息
usermod [选项] 用户名
-u 指定uid
-g 指定gid
-G 指定附加组 group
-d 指定家目录
-s 指定shell
-c 指定描述信息
示例:
[root@mysql_b2 ~]# usermod -u 2000 -s /bin/bash bd
[root@mysql_b2 ~]# usermod -G Danny bd
[root@mysql_b2 ~]# tail /etc/group
tcpdump:x:72:
slocate:x:21:
dhcpd:x:177:
wireshark:x:492:
mysql:x:27:
tom:x:500:
xz:x:501:
bd:x:1000:
Danny:x:1001:bd //成员
Groupname:x:1005:
groupmod:
[root@mysql_b2 ~]# groupmod -g 1008 Groupname
7、删除用户、群组
userdel
[root@mysql_b2 mail]# userdel -r tom //删除用户所有信息
groupdel
groupdel Groupname
需注意:系统限制,不能删除某个用户的主要群组
用户信息分别放在多个文件中: /etc/passwd /etc/group /etc/shadow
/home /var/spool/mail/-->/etc/defult/useradd
grep 过滤含有字符串的那些行
[root@mysql_b2 mail]# grep 'abc' abc
abc
abcd
[root@localhost opt]# grep "i686" /root/install.log
-i:不区分大小写
-v:取反
[root@localhost opt]# grep -v "i686" /root/install.log //过滤
出不含有I686关键字的那些行
| 管道符
作用:将前面命令的输出作为后面命令的输入
cat /etc/passwd | grep "tom"
查看系统中有没有某个用户:
[root@mysql_b2 mail]# id tom
uid=503(tom) gid=503(tom) 组=503(tom)
passwd 设置密码
root可以给任何用户设置密码,不收长度、复杂度限制
普通用户只能给自己设密码,而且需要设置复杂、长度有要求
passwd -l 用户名 //锁定用户密码,即不允许用户登陆 lock
unlock(解锁)
-u
[root@mysql_b2 ~]# passwd -S tom //status 状态
8、群组管理gpasswd
gpasswd
-a 添加群组成员
-d 删除群组成员
-A 指定群组的管理员,只能root来指定群组管理员
-M 指定群组成员(批量指定,注:会覆盖原来的成员) 例:
gpasswd -M chenglong,danny china(将chenglong和danny加入china组)
/etc/group 文件可以查看群组成员都有谁:
9、用户密码文件、chage命令
用户密码存放文件:/etc/shadow
ost opt]# cat /etc/shadow
root:$6$IFHz9lNbq3YFCJ2K
$zVtGIe5DYfUUpz4rWpvCQqzFn/CB0jnZ/1lzzOuNR70suTuUd0MnvTArL3vEkcRnKtBcsTlO2.iLS6
aEG4hfi0:17336:0:99999:7:::
第一列:用户名
第二列:密码(加密) sha512 MD5 hash算法一种
第三列:数字(天数)。从计算机元年一直数到最近一次修改密码的天数。
第四列:表示两次密码修改间隔的最小天数(0,没有时间间隔)
第五列:表示两次修改密码间隔的最大天数(99999表示无限制),如果过了该天数没有修
改密码,密码过期
第六列:密码过期前提请时间(在密码过期前7天登陆系统后,会收到善意的提醒)
第七列:密码宽限期(inactive)。意思说如果用户在宽限期之内仍然可以登陆,如果过
了宽限期,密码失效。
第八列:账号过期时间。超过这个时间,系统删除该账号(用户)
第九列:保留
chage 查看和修改用户密码信息
-l list,列出用户密码信息
-m 两次修改密码的最小天数 n
-M ....最大天数
-W 密码过期前警告天数
-E 账号过期日期format YYYY-MM-DD
-I 宽限期 inaction
设置tom用户的密码,10天之内不允许修改密码,密码超过30天不修改则过期,过期前5天
警告,宽限期为7天,账号到2017、11、11过期
[root@localhost opt]# chage -m 10 -M 30 -W 5 -I 7 -E 2017-11-11 tom
[root@localhost opt]# date 072112122017(月日时分年)
date
10、添加用户参考文件/etc/login.defs /etc/default/useradd 默认添加用
户的默认信息参考文件
vim /etc/default/useradd
GROUP=100 //兼容其他Linux发行版的用户-群组管理机制
HOME=/home //指定用户的家目录为/home目录
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
enable 启用
disable 禁用
/etc/login.defs
11、关于用户群组的几个概念
主要群组 初始群组:创建用户时自动创建的与用户名同名的群组
附加群组 次要群组:之后通过-G选项指定的用户群组 useradd -G
usermod -G
有效群组:
用户在系统上活动时,以哪个群组的身份活动(主要群组-->有效群组)
[xz@localhost ~]$ groups //查看当前用户的群组信息
xz test
[xz@localhost ~]$ newgrp jeck //切换自己的有效群组为jeck
[xz@localhost ~]$
[xz@localhost ~]$ groups
jeck xm //前面的群组为有效群组,后面的为次要群组
重点:
用户和群组的增删改查:
useradd groupadd
userdel groupdel
usermod groupmod
id username cat /etc/group
密码设置:
passwd danny
查看用户密码详细信息:
chage -l danny
锁定密码:
passwd -l danny
默认参考文件 /etc/default/useradd(shell语言、指定家目录等)
/etc/login.defs(密码时间设置等)
主要群组、次要群组、有效群组的概念
| grep tail -1 groups newgrp gpasswd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了