用户管理
linux中用户介绍
什么是用户?
用户其实就是相当于权限的化身,
处于安全考虑
所以,我们在进入系统之前都需要登录,根据用户给相应权限
Linux系统中用户角色
uid : Linux系统当中用户ID(相当于身份证号)
gid : ANTA20163307
用户组其实是统一某一类用户权限
需求:
大项目 :
开发者:a b c d
运维 : e f
测试:g
共同的权限:
超级用户
linux当中的老大(皇帝): root
Windows当中的老大:administrator
用户与组相关的文件
- /etc/passwd
- /etc/shadow(影子文件,将/etc/passwd加密写入到这里)
- /etc/group
- /etc/gshadow
1、/etc/passwd
#以:为分隔符,7列
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
root | x | 0 | 0 | root | /root | /bin/bash |
---|---|---|---|---|---|---|
用户名称 | 密码占位符 | 用户UID | 用户GID | 注释信息 | 用户家目录 | 登录shell |
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 |
2、/etc/shadow
#以:为分隔符,9列
dbus:!!:18689::::::
polkitd:!!:18689::::::
tss:!!:18689::::::
abrt:!!:18689::::::
sshd:!!:18689::::::
postfix:!!:18689::::::
dbus | !! | 18689 | 0 | 99999 | 7 | 10 | 202991231 | |
---|---|---|---|---|---|---|---|---|
用户名 | 密码 | 最近一次变更密码 | 密码最少使用天数 | 密码最长使用天数 | 密码过期预警天数 | 密码过期的宽恕时间 | 账号失效日期 | 保留 |
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 | 第八列 | 第九列 |
3、/etc/group
#以:为分隔符,4列
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
root | x | 0 | |
---|---|---|---|
用户组名称 | 用户组密码占位符 | 用户组的,ID,GID | 附加组 |
第一列 | 第二列 | 第三列 | 第四列 |
4、/etc/gshadow
#以:为分隔符。4列
stapusr:!::
stapsys:!::
stapdev:!::
utmp:!::
utempter:!::
root | |||
---|---|---|---|
用户组的名称 | 用户组的密码 | 用户组的管理者 | 用户组的附加组 |
第一列 | 第二列 | 第三列 | 第四列 |
用户管理命令
创建用户
[root@localhost ~]# useradd user1
查看用户
[root@localhost ~]# id user1
uid=1002(user1) gid=1003(user1) 组=1003(user1)
[root@localhost ~]# who # 查看所有登录的⽤户信息
[root@localhost ~]# whoami # 查看当前登录的⽤户名
删除用户
[root@localhost ~]# userdel user1 # 删除⽤户user1,但不删除⽤户家⽬录和mail
[root@localhost ~]# userdel -r user1 # 要想删彻底,加-r选项
参数详解
#怎样在Linux系统中添加⼀个新的⽤户账户
1) 掌握useradd命令的功能:新增⼀个⽤户。
2) 了解useradd命令的常⽤选项:
3) –u:指定⽤户的UID
4) –g:指定⽤户所属的主群
–G:指定⽤户所属的附加群
5) –d:指定⽤户的家⽬录
6) –c:指定⽤户的备注信息
7) –s:指定⽤户所⽤的shell
8) -e:修改过期时间
9) -M: 不创建家⽬录
10) -r: 创建系统账户,uid处于系统⽤户范围内,默认就没有家⽬录
#灵活应⽤useradd命令的举例:
例如:在系统中新增⼀个fox(狐狸)⽤户的命令:useradd fox
b) 例如:在系统中新增⼀个⽤户user01,属组为police以及uid为600的命令:
useradd –u 600 –g police user01
手动创建用户
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
- 创建⽤户家⽬录,并⽤⽤户⽼家的模板/etc/skel/ 装修⼀下,注意权限
- 6、/var/spool/mail/xxx ⽤户邮箱⽂件
修改用户信息(usermod)
修改用户信息最主要的命令是usermod命令,其参数跟useradd基本一致。
参数
-c<备注> | 修改用户账号的备注文字 |
---|---|
-d<登入目录> | 修改用户登入时的目录 |
-e<有效期限> | 修改账号的有效期限 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该账号 |
-g<群组> | 修改用户所属的群组 |
-G<群组> | 修改用户所属的附加群组 |
-l<账号名称> | 修改用户账号名称 |
-L | 锁定用户密码,使密码无效 |
-s |
修改用户登入后所使用的shell |
-u |
修改用户ID |
-U | 解除密码锁定 |
-
修改UID usermod -u
[root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2002:2002::/home/xiaoyu:/bin/bash [root@localhost ~]# usermod -u 2302 xiaoyu [root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2002::/home/xiaoyu:/bin/bash
-
修改基本组及附加组 usermod -g(-G)
# 基本组 : 一个用户必须拥有的哪个组 [root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2002::/home/xiaoyu:/bin/bash [root@localhost ~]# id xiaoyu uid=2302(xiaoyu) gid=2002(xiaoyu) groups=2002(xiaoyu) [root@localhost ~]# usermod -g group1 xiaoyu [root@localhost ~]# id xiaoyu uid=2302(xiaoyu) gid=2003(group1) groups=2003(group1) [root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2003::/home/xiaoyu:/bin/bash [root@localhost ~]# # 附加组 : 用户加入的其他用户组 [root@localhost ~]# groupadd group1 [root@localhost ~]# id uid=0(root) gid=0(root) groups=0(root),1000(oldboy),1001(sssssssssssssssssssssss),1002(test) [root@localhost ~]# usermod -G group1 root [root@localhost ~]# vim /etc/group [root@localhost ~]# tail -1 /etc/group group1:x:2003:root
-
修改家目录 usermod -d
[root@localhost ~]# usermod -d /home/xiaoyu123 xiaoyu # 注:修改家目录仅仅修改了配置,而原来的家目录文件没有迁移
-
修改用户描述信息 usermod -c
[root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2003::/home/xiaoyu123:/bin/bash [root@localhost ~]# usermod -c "这是一个甩锅" xiaoyu [root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/bash
-
修改用户默认解析器 usermod -s
[root@localhost ~]# usermod -s /bin/sh xiaoyu [root@localhost ~]# tail -1 /etc/passwd xiaoyu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/sh
-
锁定与解锁
[root@localhost home]# usermod -L xiaoyu [root@localhost home]# usermod -U xiaoyu
-
修改登录名称 usermod -l
[root@localhost home]# usermod -l dayu xiaoyu [root@localhost home]# tail -1 /etc/passwd dayu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/bash
-
追加组 usermod -a -G
[root@localhost home]# id dayu uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy) [root@localhost home]# usermod -G root dayu [root@localhost home]# id dayu uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root) [root@localhost home]# usermod -G oldboy dayu [root@localhost home]# id dayu uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy) [root@localhost home]# usermod -a -G root dayu [root@localhost home]# id dayu uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root),1000(oldboy)
密码(passwd)
修改或添加Linux普通用户的密码。直接影响的文件是/etc/shadow
参数
-d | 删除密码 |
---|---|
-l | 锁定用户密码,无法被用户自行修改 |
-u | 解开已锁定用户密码,允许用户自行修改 |
-e | 密码立即过期,下次登陆强制修改密码 |
-k | 保留即将过期的用户在期满后能仍能使用 |
-S | 查询密码状态 |
-
增加或修改密码
当用户密码不存在的时候即为增加密码,当用户密码存在时即为修改密码。
[root@localhost home]# useradd password [root@localhost home]# tail -1 /etc/passwd password:x:2303:2303::/home/password:/bin/bash [root@localhost home]# tail -1 /etc/shadow password:!!:18701:0:99999:7::: [root@localhost home]# passwd password Changing password for user password. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully. [root@localhost home]# tail -1 /etc/passwd password:x:2303:2303::/home/password:/bin/bash [root@localhost home]# tail -1 /etc/shadow password:$6$.EmM.4Bl$f.LimfvMsxxFZq6yFklfyk08JKQORdQovlk2a2dtrpkP31lAMLQpezFqLheBYOTm4Sur9aAqZlC/6MN6wHFBM1:18701:0:99999:7::: [root@localhost home]#
-
免交互修改密码
[root@localhost home]# echo "123" | passwd --stdin dayu Changing password for user dayu. passwd: all authentication tokens updated successfully.
用户组
就类似于班级,是某个同权限用户的集合。
创建组
groupadd
-g | 指定新建工作组的id |
---|---|
-r | 创建系统工作组,系统工作组的组ID小于1000 |
-K | 覆盖配置文件“/ect/login.defs” |
-o | 允许添加组ID号不唯一的工作组 |
[root@localhost home]# groupadd group2
[root@localhost home]# tail -1 /etc/group
group2:x:2304:
[root@localhost home]#
- 指定gid
[root@localhost home]# groupadd -g 2204 group3
[root@localhost home]# tail -1 /etc/group
group3:x:2204:
- 创建系统组
[root@localhost home]# groupadd -r group4
[root@localhost home]# tail -1 /etc/group
group4:x:996:
修改组
groupmod
-g | 设置欲使用的群组识别码 |
---|---|
-o | 重复使用群组识别码 |
-n | 设置欲使用的群组名称 |
-
修改名称
[root@localhost home]# tail -8 /etc/group girl:x:2001: [root@localhost home]# groupmod -n boy girl [root@localhost home]# tail -8 /etc/group boy:x:2001:
-
修改gid
[root@localhost home]# groupmod -g 2021 boy [root@localhost home]# tail -8 /etc/group boy:x:2021:
删除组
用户组在系统中删除,如果一个组被用户占用则不能删除。
[root@localhost home]# groupdel group4
[root@localhost home]# tail -8 /etc/group
dajige:x:1003:
abc:x:2000:
xiaoyu:x:2002:
group1:x:2003:root
password:x:2303:
group2:x:2304:
group3:x:2204:
boy:x:2021:
[root@localhost home]#
# 注:用户被删除,用户基本组也会被删除
[root@localhost home]# useradd test-group-del
[root@localhost home]# tail -1 /etc/passwd
test-group-del:x:2304:2305::/home/test-group-del:/bin/bash
[root@localhost home]# tail -1 /etc/group
test-group-del:x:2305:
[root@localhost home]# userdel -r test-group-del
[root@localhost home]# tail -1 /etc/passwd
password:x:2303:2303::/home/password:/bin/bash
[root@localhost home]# tail -1 /etc/group
boy:x:2021:
[root@localhost home]#
组成员管理
gpasswd
-a | 添加用户到组 |
---|---|
-d | 从组删除用户 |
-A | 指定管理员 |
-M | 指定组成员和-A的用途差不多 |
-r | 删除密码 |
-R | 限制用户登入组,只有组中的成员才可以用newgrp加入该组 |
# 添加一个组到用户
[root@localhost home]# useradd gtest
[root@localhost home]# vim /etc/group
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2204(group3)
[root@localhost home]# gpasswd -a gtest group2
Adding user gtest to group group2
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2304(group2),2204(group3)
# 添加多个组到用户
[root@localhost home]# gpasswd -M gtest,root,dayu group
gpasswd: group 'group' does not exist in /etc/group
[root@localhost home]# gpasswd -M gtest,root,dayu group3
[root@localhost home]# id root
uid=0(root) gid=0(root) groups=0(root),2000(abc),2003(group1),2204(group3)
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root),1000(oldboy),2204(group3)
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2304(group2),2204(group3)
# 为一个组添加组长(组长有权限向组内添加用户,其他用户[除root外]没有权限添加用户到该组)
[root@localhost ~]# gpasswd -A dayu group3
[root@localhost ~]# cat /etc/gshadow
group3:!:dayu:gtest,dayu,oldboy
# 组权限
[root@localhost ~]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy),2204(group3)
[root@localhost ~]# chown .group3 /tmp/12.txt
[root@localhost ~]# ls -l /tmp/12.txt
-rw-r--r-- 1 root group3 4 Mar 15 11:35 /tmp/12.txt
[root@localhost ~]# chmod g+w /tmp/12.txt
[root@localhost ~]# ls -l /tmp/12.txt
-rw-rw-r-- 1 root group3 4 Mar 15 11:35 /tmp/12.txt
[root@localhost ~]# su - dayu
Last login: Mon Mar 15 11:37:05 CST 2021 on pts/3
[dayu@localhost ~]$ echo "456" > /tmp/12.txt
[dayu@localhost ~]$ cat /tmp/12.txt
456
[dayu@localhost ~]$