Linux用户和组管理

Linux用户原理

# id  # 查看当前用户
# id egon  # 查看egon用户
# who  # 查看所有登录的用户
# whoami  # 查看当前登录的用户名
# ps aux |grep [s]sh  # 每一个进程都有其用户
# uid与gid
1. UID (User Identify)用户ID,唯一标识一个系统用户的帐号,uid在系统中是唯一的。uid相当于一个人的身份证,用户名就相当于这个人的名字
2. GID (Group Identify)组ID,如果把一个操作系统当成一家公司,uid相当于这个人的员工号,gid相当于他的部门编号。
​```

centos7系统约定:

0       超级管理员,最高权限,有着极强的破坏能力
1~200   系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行安装的程序,所以此类用户无需登录系统
1000+   普通用户,正常可以登录系统的用户,权限比较小,能执行的任务有限
    
# 用户和组的关系:
一对一,多对一,一对多,多对多

Linux用户原理(手动添加用户)

	1、增加用户组/etc/group
	2、增加用户组密码/etc/gshadow
	3、增加用户  /etc/passwd
	4、增加用户密码 /etc/shadow 
	5、创建家目录 mkdir /home/wqy1
	6、复制基础配置文件到家目录中  cp复制  /etc/skel/ 用户老家的模板  /home/wqy1  
	7、登录测试

设定密码

	1、交互式
	passwd [用户名]
	2、非交互式
	echo "1" | passwd --stdin ⽤户名

3、Linux用户相关命令

useradd        #添加用户  -u:指定uid   -s:指定shell   -g:指定组名 -d:指定家目录
userdel        #删除用户,但不删除用户家目录和mail, # 要想删彻底,加-r选项
usermod        #修改用户信息  -u:指定uid   -s:指定shell   -g:指定组名 -d:指定家目录 -l指定要修改用户的登陆名
               -L #指定要锁定的用户    -U #指定要解锁的用户
whoami         # 查看当前登录的用户名

组管理命令汇总

groupadd   #创建基本组, 不指定gid   -g:指定gid   -r:创建系统组,gid从201-999
​groupmod  -n:修改组名称   -g 修改gid
​groupdel   如果一个组是一个用户的主组,那么该组不能被删除,删掉用户会默认一起删掉他的主组
​gpasswd  # 设置组密码
​newgrp  # 切换主组

useradd命令详解:创建用户的同时指定选项

#怎样在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处于系统用户范围内,默认就没有家目录

usermod命令

同useradd参数基一致,只不过useradd是添加,usermod是修改
-u         #指定要修改用户的UID
​-g         #指定要修改用户基本组
​-a        #将用户添加到补充组。仅与-G选项一起使用
​-G        #指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组
​-d         #指定要修改用户家目录
​-c         #指定要修改用户注释信息
​-s         #指定要修改用户的bash shell
​[root@root ~]# usermod -e 2013-02-11 user1000  # 修改过期时间
[root@root ~]# usermod -g group1 jj # 修改主组
[root@root ~]# usermod -a -G group2 jj # 修改附加组,-a添加,不加-a代表覆盖
​其他选项
-m        #将用户主目录的内容移动到新位置。如果当前主目录不存在,则不会创建新的主目录
​-l         #指定要修改用户的登陆名
​-L         #指定要锁定的用户
​-U         #指定要解锁的用户

设定与修改密码

passwd  # 默认给当前用户设定密码
passwd 用户名  # root用户可以给自己以及所有其他用户设定密码,普通用户只能设定自己的密码
echo "密码" | passwd --stdin 用户名  # 非交互式
​
# 补充:可以利用系统内置变量生成随机字符串来充当密码
[root@aliyum ~]# echo $RANDOM|md5sum|cut -c 1-10
70ba11a74b
==密码锁定,解锁==
[root@root ~]# useradd user1000
[root@root ~]# passwd user1000
[root@root ~]# grep 'user1000' /etc/shadow
user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
[root@root ~]# usermod -L user1000  # 锁住用户
[root@root ~]# grep 'user1000' /etc/shadow
user1000:$6$WLHLI8zV$0jVjYsQig.jPNrcikI.R8GsgXPaSnlzslEmsRV1Nyb7FUr9Ls6RosWtHsf3LPio7PgM80raOqlWzd/lGn5fN71:18484:0:99999:7:::
登录测试
[root@root ~]# usermod -U user1000  # 解锁用户
[root@root ~]# grep 'user1000' /etc/shadow
user1000:$6$WLHLI8zV$0jVjYsQig.jPNrcikI.R8GsgXPaSnlzslEmsRV1Nyb7FUr9Ls6RosWtHsf3LPio7PgM80raOqlWzd/lGn5fN71:18484:0:99999:7:::
登录测试
==设置账号过期==
[root@root ~]# date
Mon Aug 10 22:49:12 CST 2020
[root@root ~]# usermod -e 2020-11-11 user1000
[root@root ~]# grep 'user1000' /etc/shadow
user1000:$6$WLHLI8zV$0jVjYsQig.jPNrcikI.R8GsgXPaSnlzslEmsRV1Nyb7FUr9Ls6RosWtHsf3LPio7PgM80raOqlWzd/lGn5fN71:18484:0:99999:7::18577:
登录测试
​```
​```
==useradd 命令参考的文件==
1. /etc/login.defs
2. /etc/default/useradd         # 可以使用命令 useradd -D查看
3. /etc/skel/*                  # 用户的初始配置文件
useradd创建用户时,对于未指定的选项(-u、-g等等),会以/etc/login.defs、/etc/default/useradd两个配置文件中的配置作为参照物
​
#配置文件/etc/login.defs详解
[root@egon ~]# grep -Ev "^#|^$" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999        #密码最大有效期
PASS_MIN_DAYS 0            #两次修改密码的最小间隔时间
PASS_MIN_LEN 5            #密码最小长度,对于root无效
PASS_WARN_AGE 7            #密码过期前多少天开始提示
UID_MIN 1000            #用户ID的最小值
UID_MAX 60000            #用户ID的最大值
SYS_UID_MIN 201            #系统用户ID的最小值
SYS_UID_MAX 999            #系统用户ID的最大值
GID_MIN 1000            #组ID的最小值
GID_MAX 60000            #组ID的最大值
SYS_GID_MIN 201            #系统用户组ID的最小值
SYS_GID_MAX 999            #系统用户组ID的最大值
CREATE_HOME yes            #使用useradd的时候是可以创建用户家目录
UMASK 077                #创建家目录时umask的默认控制权限
USERGROUPS_ENAB yes        #删除用户的时候是否同时删除用户组
ENCRYPT_METHOD SHA512    #密码加密规则
​
#配置文件/etc/default/useradd详解
[root@egon ~]# cat /etc/default/useradd
GROUP=100                #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为no,则在此处控制
HOME=/home                 #把用户的家目录建在/home中。
INACTIVE=-1             #是否启用账号过期停权,-1表示不启用。
EXPIRE=                 #账号终止日期,不设置表示不启用。
SHELL=/bin/bash         #新用户默认所有的shell类型。
SKEL=/etc/skel             #配置新用户家目录的默认文件存放路径。
CREATE_MAIL_SPOOL=yes     #创建mail文件。
​
​
当使用useradd创建用户时,创建的用户家目录下会存在.bash_* 环境变量相关的文件,这些环境变量文件默认
从/etc/skel目录中拷贝。这个默认拷贝环境变量位置是由/etc/default/useradd配置文件中定义的。
​
​
#故障案例,在当前用户家目录下执行了rm -rf .*命令,下次登录系统时出现-bash-4.1$,如何解决!
-bash-4.1$ cp -a /etc/skel/.bash* ./
-bash-4.1$ exit
[root@egon ~]#         #重新连接即可恢复
posted @ 2021-07-01 13:48  小丶凡  阅读(60)  评论(0编辑  收藏  举报
1