今天给伙伴们分享一下Linux 用户和组管理,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
一、Linux用户和组的意义
-
Linux的一大特性:多用户、多任务。
-
所谓多用户多任务就是指可以在同一时间,有多个用户登录同一个系统执行不同的任务而互不影响。
-
假设现在有三个用户:root、lbb、mvv,三个用户同一时间登录了同一个系统,root去修改配置文件了,lbb去创建目录了,mvv去访问数据库了,每个用户互不干扰的独立执行自己的任务,并且每个用户不能够越线去访问其他用户正在操作的目录或执行其他用户下的任务,由此可见,不同的用户是拥有各自不同的权限的,Linux通过权限的划分和管理来实现多用户、多任务的运行机制。
Linux中的用户及其角色划分
按照角色来划分Linux中所有创建的用户,可以分为三种类型的角色:
-
超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0
-
普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统,UID>=500(最好用户id大于1024)
-
系统用户:别称“伪用户”,无法登录系统,一般系统默认持有如bin,nobody等,其主要作用是支撑系统运行,方便系统管理,UID为1-1000(闭区间)
二、用户管理
1、查看账户
[[email protected] ~]# id 查看的是当前登录账户的id信息,identify
uid=0(root) gid=0(root) 组=0(root)
主属组
附属组
uid 系统用来识别账户的user identify
gid 系统用来识别组的group identify
[[email protected] ~]# id user1 查看user1这个账户的id信息
[[email protected] ~]# whoami 查看我现在所使用的账户
2、新建账户
[[email protected] ~]# useradd [参数] ... 用户名称
-d 指定家目录
[[email protected] ~]# useradd -d /user3 user3
[[email protected] ~]# cat /etc/passwd | grep user3
user3:x:502:502::/user3:/bin/bash
-u 指定uid
-o 允许uid重复使用,配合-u选项,不检查UID的唯一性
[root@qianfeng ~]# useradd -u 2000 user100
[root@qianfeng ~]# id user100
uid=2000(user100) gid=2000(user100) 组=2000(user100)
[root@qianfeng ~]# useradd -o -u 2000 user101
[root@qianfeng ~]# id user101
uid=2000(user100) gid=2000(user100) 组=2000(user100)
[root@qianfeng ~]# id user100
uid=2000(user100) gid=2000(user100) 组=2000(user100)
-g 指定主属组
[[email protected] ~]# useradd -g 1000 user5
[[email protected] ~]# id user5
uid=1001(user5) gid=1000(user4) 组=1000(user4)
-c 指定描述字段
[[email protected] ~]# useradd -c qq-28282828 user6
[[email protected] ~]# cat /etc/passwd | grep user6
user6:x:1002:1002:qq-28282828:/home/user6:/bin/bash
-s 指定登录shell
查看系统现在所支持的shell
[[email protected] ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[[email protected] ~]# useradd -s /sbin/nologin user7
[[email protected] ~]# cat /etc/passwd | grep user7
user7:x:1003:1003::/home/user7:/sbin/nologin
3、修改账户
1、修改passwd文件
-
此文件里面除了密码字段能删除不能直接修改之外,其他字段全部都能直接修改
-
[[email protected] ~]# cat /etc/passwd
账户的基本信息都在这个文件内
-
用户名:代表密码:uid:gid:账户的描述信息:家目录:登录shell
2、使用命令usermod
用法:usermod [选项] 用户名
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
1、修改用户的UID
1、创建测试用户
[[email protected] ~]# useradd edenluo
[[email protected] ~]# id edenluo
uid=1002(edenluo) gid=1002(edenluo) 组=1002(edenluo)
2、修改用户的UID
[[email protected] ~]# usermod -u 1111 edenluo
[[email protected] ~]# id edenluo
uid=1111(edenluo) gid=1002(edenluo) 组=1002(edenluo)
2、修改shell
查看edenluo用户原来的shell
[[email protected] ~]# grep edenluo /etc/passwd
edenluo:x:1111:1002::/home/edenluo:/bin/bash
## 修改shell
[[email protected] ~]# usermod -s /sbin/nologin edenluo
[[email protected] ~]# !grep
grep edenluo /etc/passwd
edenluo:x:1111:1002::/home/edenluo:/sbin/nologin
2、更改用户主目录
先登录到用户家目录创建一个文件便于测试
[[email protected] ~]# cd /home/edenluo/
[[email protected] edenluo]# touch a.txt
可以看到刚刚创建的文件
[[email protected] edenluo]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月 18 20:03 a.txt
使用-d参数移动家目录
[[email protected] edenluo]# usermod -m -d /tmp/demo edenluo
[[email protected] edenluo]# cd /tmp/demo
可以看到家目录已经移动过来了
[[email protected] demo]# ls
a.txt
这里的 -m选项会自动创建新目录并且移到内容到新目录里面
3、添加说明信息
查看没有添加之前的信息
[[email protected] demo]# grep edenluo /etc/passwd
edenluo:x:1111:1002::/tmp/demo:/sbin/nologin
使用-c参数添加
[[email protected] demo]# usermod -c "i am demo" edenluo
## 查看添加之后的信息
[[email protected] demo]# grep edenluo /etc/passwd
edenluo:x:1111:1002:i am demo:/tmp/demo:/sbin/nologin
4、修改用户名为zhangsan
[[email protected] demo]# usermod -l zhangsan edenluo
[[email protected] demo]# id zhangsan
uid=1111(zhangsan) gid=1002(edenluo) 组=1002(edenluo)
# 可以看到原来的用户没有了
[[email protected] demo]# id edenluo
id: edenluo: no such user
- 此处需要注意,把edenluo 改为zhangsan
- 语法为:
- usermod -l 新用户 要修改的用户名
5、 锁定用户demo
- 账号锁定之后,普通用户无法su,root 可以su
[[email protected] demo]# usermod -L demo
6、 解锁用户demo
[[email protected] demo]# usermod -U demo
7、添加新的附加组
[[email protected] demo]# usermod -aG 组名 用户名
- 注意: 组名在前面,用户在后面
8、指定帐号过期日期
[[email protected] demo]# usermod -e 2023/11/11 demo
查看过期时间
[[email protected] demo]# chage -l demo
最近一次密码修改时间 :1月 18, 2023
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :11月 11, 2023
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
9、指定用户帐号密码过期多少天后,禁用该帐号
## 先查看lisi用户的账号信息
[[email protected] demo]# sed -n '$p' /etc/shadow tail -1 /etc/shadow
lisi:!!:19375:0:99999:7:::
## 使用 -f 参数进行修改
[[email protected] demo]# usermod -f 30 lisi
[[email protected] demo]# !sed
sed -n '$p' /etc/shadow
lisi:!!:19375:0:99999:7:30::
- 可以看到实效的时间已经变成了30天
4、账户密码操作
1、给账户设置密码
[[email protected] ~]# passwd 并且默认密码符合复杂度, 大写,小写,数字,特殊符号, 8
只适用于root账户
[[email protected] ~]# passwd 用户名称 passwd 后面要跟用户名,必须root用户
2、锁定密码,不允许修改密码
[[email protected] ~]# passwd -l 账户名称
[[email protected] ~]# passwd -l user10 同时普通用户也无法切换到密码suo
锁定用户 user10 的密码 。
passwd: 操作成功
3、解锁密码,允许修改密码
[[email protected] ~]# passwd -u 账户名称
[[email protected] ~]# passwd -u user10
解锁用户 user10 的密码 。
passwd: 操作成功
4、查看密码状态
[[email protected] ~]# passwd -S 账户名称
[[email protected] ~]# passwd -S user10
user10 PS 2013-11-21 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[[email protected] ~]# passwd -S user10
user10 LK 2013-11-21 0 99999 7 -1 (密码已被锁定。)
5、强制指定的用户在下次登陆时必须重置其密码
[[email protected] ~]# passwd -e user10
Expiring password for user user10.
passwd: Success
6、删除指定用户的密码值:
[[email protected] ~]# passwd -d user10
Removing password for user user10.
passwd: Success
7、静默设置密码
[[email protected] ~]# echo ‘123’ | passwd --stdin user10
8、/etc/shadow 又称他为影子文件
[[email protected] ~]# man 5 shadow
eden:$6$Qxq1sIXL$3dG7NNqtwFAj/etKKs3dZ9NzQS0NES42cDn78go/5s8ijGh9fIsEQnqRf2eGtV29eWIcy.mvZdX7asaiafkj00:19590:7:90:7:7::
- 用户名
- 密码密文,由3部分组成,其中第一部分表示加密方式:
1 1 1 表示 MD5
5 5 5 表示 SHA-256
6 6 6 表示 SHA-512
2 a 2a 2a 和 2 y 2y 2y表示Blowfish算法 - 最后一次更改密码的日期 .(从1970年1月1日开始计算,到修改密码时的天数)
- 两次修改密码间隔的最小天数,如果是0,表示随时可以修改密码。
- 两次修改密码间隔的最大天数,超过这个天数,密码将失效(密码有效期)。默认值99999表示永不失效。
- 密码警告期限(密码失效前多少天提醒用户修改密码)。默认提前一周通知用户修改密码(登录系统时,系统提示修改密码)。
- 密码禁用期限,密码过期之后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)
- 账户过期期限,从1970年1月1日开始计算,超过这个日期,帐户将无法使用。空字段表示账户永不过期。
- 保留字段
5、删除账户
[[email protected] ~]# userdel -r 用户名称
-r 连带个人信息(家目录,个人邮箱)一起删除
6、切换账户
[[email protected] ~]# su - 账户 - 完全切换(包括所在路劲切换到用户家目录,bash) 不加- 是不完整切换 bash 保留所在路径
[[email protected] ~]# su -l 账户 -l login
三、组管理
1、创建组
[[email protected] ~]# groupadd 组名
[[email protected] ~]# groupadd -g gid 组名
[[email protected] ~]# groupadd -g gid -o 组名
2、查看组
[[email protected] ~]# cat /etc/group
- 组名:代表组密码:gid:组员
3、查看一个用户的所属组
[[email protected] ~]# groups 用户名称
4、修改组
[[email protected] ~]# groupmod 参数 组名
- -g 修改组id
- -n 设置群组名称
- -o 允许重复使用组id
[[email protected] ~]# groupmod -g 2000 grp1
[[email protected] ~]# groupmod -n grp3 grp1
5、给组设置密码
[[email protected] ~]# gpasswd 参数 组名
[[email protected] ~]# gpasswd grp2
组密码作用:临时切换当前登陆账户组身份,让这个账户暂时拥有所切换组的权限
例子:用户tingting临时切换到1802组,
tingting是不属于1802组的
[tingting@wing ~]$ ll /a
-rw-r----- 1 root 1802 0 Jun 27 10:00 /a
[tingting@wing ~]$ cat /a
cat: /a: Permission denied
[tingting@wing ~]$ newgrp 1802
Password:
[tingting@wing ~]$ cat /a
[tingting@wing ~]$
6、给组添加账户
[[email protected] ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
- 同时添加多个用户到组:
[[email protected] ~]# gpasswd -M jim,tom,wing 组名
7、从组删除账户
[[email protected] ~]# gpasswd -d user10 grp2
8、指定组管理员
[[email protected] ~]# gpasswd -A user12 grp2
9、组密码文件
[[email protected] ~]# cat /etc/gshadow
组名:密码:组管理员:组员
10、删除组
[[email protected] ~]# groupdel 组名
用户的主属组不能删除
标签:demo,edenluo,用户,密码,详细,Linux,root,com From: https://blog.csdn.net/mohuanfenghuang/article/details/141835480如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。