一、Linux下用户管理
1、用户概念及作用
用户:指的是Linux操作系统中用于管理系统或者服务的人
注意:Linux下一切皆文件,所以用户管理管理的是相应的文件
如何管理文件?
1.文件基本管理:文件的创建、删除、复制、查找、打包压缩等;文件权限的改变等;
2.文件高级管理:程序文件的安装、卸载、配置等。终极目的是对外提供稳定的服务。
2、用户的基本管理
1.创建用户(useradd)
(1)基本语法和选项
useradd [选项] 用户名
常用选项:
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户默认shell
查看系统支持的shell(命令解释器)
[root@heima ~]# cat /etc/shells
/bin/sh 软连接文件
/bin/bash 系统默认的解释器
/usr/bin/sh 软连接文件
/usr/bin/bash 系统默认的解释器
其他shell:
/sbin/nologin 不能登录操作系统,也叫非交互式shell
/bin/dash
/bin/tcsh
/bin/csh
(2)代码实例
1)创建默认用户
创建一个用户stu1
[root@heima ~]# useradd stu1
查看用户信息
[root@heima ~]# id stu1
uid=501(stu1) gid=501(stu1) groups=501(stu1)
注意:当创建一个默认用户时,系统会给该用户以下东西,以stu1为例说明
1)用户的UID(唯一标识) 501(系统自动分配)
2)用户的默认组(主组) stu1组,默认跟该用户的用户名一致;组ID(501),默认和用户UID一致
3)用户的家目录 /home/stu1
4)拷贝相应的文件到用户的家里
[root@heima ~]# su - stu1
[stu1@localhost ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla 这些相当于stu1用户家里的家具
2)根据需求创建用户
1. 创建用户stu2,但是不能登录操作系统
注意:-s 指定用户的默认shell,/sbin/nologin表示不能登录系统,也叫非交互
[root@heima ~]# useradd -s /sbin/nologin stu2
验证:
[root@heima ~]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
切换用户失败,说明该用户不能登录系统
[root@heima ~]# su - stu2
This account is currently not available.
2. 创建用户stu2,同时指定该用户的家目录为/rhome/stu2
注意:-d 指定用户的家目录,前提该用户家目录的上一级目录/rhome必须存在
[root@heima ~]# mkdir /rhome
[root@heima ~]# useradd -d /rhome/stu2 stu2
[root@heima ~]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
说明:指定stu2家目录/rhome/stu2时,只需要/rhome存在即可,系统会默认在/rhome下创建stu2目录
2.用户密码设置
passwd 用户名 表示给指定用户修改密码
passwd 直接回车 表示给当前用户修改密码
[root@heima ~]# passwd stu1
Changing password for user stu1.
New password: 密码不显示
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: 密码不显示
passwd: all authentication tokens updated successfully.
说明:
1.管理员root可以给任何用户修改密码 ,而且密码复杂度可以不符合要求
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范
[root@heima ~]# echo 123|passwd --stdin stu2
更改用户 stu2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
说明:使用这种方法不用交互可以直接设置成功,一般用于脚本中。
1)保存用户信息的文件
1. 用户信息保存文件/etc/passwd
了解相关配置文件内容,可以通过求man文档解决,即 man 5 passwd
以冒号:分割为7列,如下:
account --> stu1 用户名称
password --> x 密码,将密码单独存放在另外一个文件中
UID --> 501 用户ID
GID --> 501 组ID
GECOS --> 用户自定义,描述说明
directory --> /home/stu1 用户的家目录
shell --> /bin/bash用户的默认shell,其中/sbin/nologin表示非交互,不能登录系统
2. 用户密码信息保存文件/etc/shadow
了解相关配置文件内容,可以通过求man文档解决,即 man 5 shadow
以冒号:分隔为9列,如下:
login name 登录的用户名
encrypted password 加密后的密码;!!表示没有设置密码
date of last password change 最后一次更改密码的天数(距离1970年的1月1日到现在的天数)
minimum password age 密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码
maximum password age 密码的最大生存周期;如果30表示每隔30天需要更新一次密码
password warning period 密码过期前几天发出警告;7表示过期前7天开始警告
password inactivity period 密码的宽限期;如果3表示允许密码过期3天,3天内还能登录系统,但是要求修改密码。3天后(密码过期3天后账户被封锁, 需要联系管理员)
account expiration date 账户过期的时间,账户过期的用户不能登录;密码过期用户不能用原来的密码登录。以1970年1月1日算起。 reserved field 保留
2)更改用户的账号信息
chage --help
-d 修改用户最后一次更改密码的时间
-m 修改密码的最小存活期(几天后才能修改密码)
-M 修改密码的最大存活期(每隔多少天更新一次密码)
-W 修改密码过期前警告(过期前几天发出警告)
-I 修改允许密码过期几天
-E 修改账户过期时间
-l 列出账户的信息
举例说明:
查看用户账号的相关信息命令:chage -l stu1
[root@heima ~]# chage -l stu1
Last password change : Mar 04, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
修改用户账号的过期时间:2020-03-10过期
[root@heima ~]# chage -E '2019-03-10' stu1
[root@heima ~]# chage -l stu1
Last password change : Mar 04, 2019
Password expires : never
Password inactive : never
Account expires : Mar 10, 2020
Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 修改用户账号的过期时间为10天以后:
[root@heima ~]# chage -E $(date +%F -d '+10days') stu1
3.修改用户信息
1)基本语法及选项
usermod [选项] 用户名
常用选项: -u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户默认shell
-m 移动用户家目录,和-d一起使用
2)代码实例
1. 修改stu3用户的UID为1100
[root@heima ~]# usermod -u 1100 stu3
[root@heima ~]# tail -5 /etc/passwd yunwei:x:1001:1001::/home/yunwei:/sbin/nologin stu1:x:1002:1002::/home/stu1:/bin/bash stu2:x:1003:1003::/rhome/stu2:/bin/bash stu3:x:1100:1004::/rhome/stu3:/bin/bash stu4:x:1005:1005::/home/stu4:/sbin/nologin
2.修改stu4用户的默认shell为可登录系统
[root@heima ~]# su - stu4 This account is currently not available.
[root@heima ~]# usermod -s /bin/sh stu4
[root@heima ~]# tail -5 /etc/passwd
yunwei:x:1001:1001::/home/yunwei:/sbin/nologin stu1:x:1002:1002::/home/stu1:/bin/bash stu2:x:1003:1003::/rhome/stu2:/bin/bash stu3:x:1100:1004::/rhome/stu3:/bin/bash stu4:x:1005:1005::/home/stu4:/bin/sh
3.修改stu5用户的家目录
[root@heima ~]# useradd -d /rhome/stu5 stu5
[root@heima ~]# usermod -md /home/stu5 stu5
4.删除用户
1)基本语法及选项
userdel [选项] 用户名
常用选项:
-r 删除用户并且移除其家目录和邮箱
-f 强制删除正在登录的用户
2)代码实例
说明:
创建完用户后,家目录默认在/home/用户名下;用户的邮箱在/var/spool/mail/用户名
1. 删除stu4用户以及家目录
[root@heima ~]# userdel -r stu4
[root@heima ~]# id stu4
id: stu4: No such user
2.强制删除一个正在登录的用户
[root@heima ~]# userdel -r stu5
userdel: user stu5 is currently used by process 7998 [root@heima ~]# id stu5
uid=1101(stu5) gid=1101(stu5) 组=1101(stu5)
[root@heima ~]# userdel -rf stu5
userdel: user stu5 is currently used by process 7998 [root@heima ~]# id stu5
id: “stu5”:无此用户
3. 只删除用户user02,不删除其家目录
[root@heima ~]# userdel stu1
3、总结
1.创建用户(useradd)
1)useradd 用户名——>家目录/home/用户名、邮箱、UID、默认组(GID)[用户主组]
2)useradd [选项] 用户名字——>常用选项:-d/-s/-u/-g/-G
2.设置用户密码(passwd)
1)passwd 用户名——>给指定的用户(管理员可以给任何人设置任何密码)
2)echo 密码|passwd --stdin 用户名——>非交互式(也就是直接修改,用于脚本中)
3)用户基本信息和用户密码信息保存文件——>/etc/passwd和/etc/shadow
4)扩展chage命令——>用来修改用户密码信息(账号过期时间、密码最小生存周期等)
3.修改用户信息(usermod)
- usermod [选项] 用户名——>修改用户组信息、shell。家目录等
4.删除用户(userdel)
1)userdel 用户名——>只删除用户,不删除用户家目录、邮箱等信息
2)userdel -r 用户名——>删除用户以及用户其他信息
3)userdel -f 用户名——>强制删除用户(删除正在登录的用户)
二、Linux下组管理
1、组和用户的关系
借用传智的图来说明:
组的目的是为了方便管理用户
- 用户是操作系统上管理维护系统或服务的人
- 组是用户的一个属性信息
- 任何一个用户默认都会有一个主组(默认组)
- 一个用户除了主组也可以有多个其他组(附加组)
注意:
用户的主组和附加组没有半毛钱关系
2、组的管理
1.创建组(groupadd)
1)基本语法
groupadd [选项] 组名
常用选项: -g 指定组的GID(编号),默认唯一
2)代码实例
1.创建一个组admin
[root@heima ~]# groupadd admin
2.查看组信息
[root@heima ~]# tail -1 /etc/group
admin:x:1005:
说明:关于/etc/group配置文件说明,可以man 5 group找帮助
3.创建一个组sysadmin,指定组的GID为1111
[root@heima ~]# groupadd -g 1111 sysadmin
[root@heima ~]# tail -1 /etc/group
admin:x:1005:
sysadmin:x:1111
2.删除组(groupdel)
1)基本语法
groupdel 组名
2)代码实例
[root@heima ~]# groupdel admin
[root@heima ~]# groupdel stu2
groupdel: cannot remove the primary group of user 'stu2'
注意:以上信息说明不能删除属于其他用户的主组
注意:不能删除属于其他用户的主组
3.组成员管理(gpasswd)
1)基本语法
gpasswd [选项] 组名
常见选项:
-a 添加用户到组
-d 从组中删除成员
-A 指定管理员
-M 指定组成员,可以批量添加用户到组中
-r 删除密码
gpasswd 组名 给组设置密码
2)代码实例
- 添加用户到组里
1. 创建3个用户user01~user03
2. 将user01添加到sysadmin组里
方法:1:指定user01用户的附加组为sysadmin(站在用户角度)
# usermod -G sysadmin user01
方法2:使用gpasswd命令添加用户到组里 (站在组的角度)
# gpasswd -a user01 sysadmin
-a选项:表示往组里追加用户
# gpasswd -M user02,user03 sysadmin 设置sysadmin组成员为user02,user03
-M选项:表示覆盖设置组成员(会覆盖原来的成员列表)
- 删除组成员
将user03用户从组sysadmin里移除
# gpasswd -d user03 sysadmin
3、总结
1.创建组(groupadd)
- 组的信息保存文件——>/etc/group和/etc/gshadow
2.删除组(groupdel)
- 不能删除属于其他用户的主组
3.管理组成员(gpasswd)
1)添加用户到组里——>gpasswd -a user1 组名 或 gpasswd -M user1,user2,... 组名
2)从组里移除用户——>gpasswd -d user 组名
Q.E.D.