? 用户指的是能够正常登陆linux或windows系统,例登陆QQ的用户、登陆荣耀的用户等
a.系统上的每一个进程(运行的程序),都需要一个特定的用户运行,如同windows上任务管理器里用户选项下各种不同的用户
b.通常在公司是使用普通用户管理服务器,因为root曲线过大,容易造成故障
a.系统对用户有一个约定
b.用户都有特定的UID
0代表超级管理员,有最高权限,有极强的破坏能力 rm -rf /*(删除根下的所有文件,会造成系统奔溃)
1~200 系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行用户安装的程序;所以此类用户无需登录系统
1000+ 普通用户,正常可以登录的用户,权限比较小,能执行的任务有限
a.使用id命令查询当前登录用户的信息
[root@node: ~]#id   #查询当前登录用户的信息
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
id name
[root@node: ~]#id xu #查看其他用户的信息
uid=1001(xu) gid=1001(xu) groups=1001(xu)
当我们创建一个新的用户,系统会将用户的信息存放在/etc/passwd中,而密码单独存储在/etc/shadow中也就是说这两个文件非常的重要,不要轻易删除与修改
a./etc/passwd 配置文件解释如下,或者使用命令 man 5 passwd 获取帮助
[root@node: ~]#head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash  以:作为分隔符,总共七列
第一列 root 用户名称
第二列 x 密码占位符
第三列 0 用户UID
第四列 0 组GID
第五列 root 注释信息
第六列 /root 用户家目录
第七列 /bin/bash 登录shell的类型
/etc/shadow 配置文件解释如下,或者使用命令 man 5 shadow获取帮助
[root@node: ~]#tail -2 /etc/shadow | grep "jake"
jake:!!:18817:0:99999:7:::   以:为分隔符,共九列
第一列:jake 用户名称
第二列:!! 密码为一长串字符,(*|!!)则表示无密码
第三列:18817,最近一次变更密码,从1970年到现在,过了多少天,大概多少年计算(18817/365+1970)
第四列:0 密码最少使用天数,0=无限制
第五列:99999密码最长使用天数,默认99999不过期
第六列:7 系统会在密码到期前7天提醒变更密码
第七列:0 密码到期后,密码过期后强制提示变更用户密码
第八列 : 账户失效时间,从1970年起,账户在这个日期前可以使用,到期失效(没有代表没设置)
useradd + name #即可创建用户
若需要添加linux
系统普通用户,可使用useradd命令,只有root组用户可以添加系统普通用户
选项:
    -u 指定要创建用户的UID,不允许冲突
    
    -g 指定要创建用户基本组
     
    -G 指定要创建用户附加组,逗号隔开可以添加多个附加组
    
    -d 指定要创建用户家目录
    
    -s 指定要创建用户的bash shell
    
    -c 指定要创建用户注释信息
    
    -M 给创建的用户不创建家目录
    
    -r 创建系统账户,默认家目录
?
?			groupadd
?			
?
	    指定GID:-g
		 
语法格式:groupadd group_name -g GID
?			groupmod + 组名称
?			
?
?
		groupdel Group_name 
?
?
?    需求:a  用户id为6969
?               b  基本组为ops,附加组dev
?               c   注释信息 2000 new student,登录
?                     shell : /bin/bash
[root@node: ~]#groupadd ops   #添加用户组ops
[root@node: ~]#groupadd dev   #添加用户组dev
[root@node: ~]#useradd -u 6969 -g ops -G dev -c "2000 new student" -s /bin/bash kafka 
useradd -u 6969             #指定UID 6969     
-g ops                      #指定基本组为ops
-G dev                      #附加组dev
-c "2000 new student"       #添加注释 2000 new student, 
-s /bin/bash                #指定登录的bash shell 
kafka                       #用户名称
[root@node: ~]#su kafka     #登录kafke用户
[kafka@node root]$ su       #切换到管理员
Password:                   #输入root密码
[root@node: ~]#id kafka     #查看kafka用户信息
uid=6969(kafka) gid=1002(ops) groups=1002(ops),1003(dev)
[root@node: ~]#tail -1 /etc/passwd  #查看/etc/passwd下最后一行信息
kafka:x:6969:1002:2000 new student:/home/kafka:/bin/bash        
最后输出详情看1.5.1 passwd文件
需求:创建一个mysql系统用户[201~999]
? 该用户不需要家目录
? 该用户不需要登录系统
[root@node: ~]#useradd -r mysql -M -s /sbin/nologin
[root@node: ~]tail -1 /etc/passwdn
mysql:x:998:996::/home/mysql:/sbin/nologin
若想修改linux系统普通用户,可使用usermod命令,使用root登录后可以修改系统普通用户了
选项
修改xu用户
? UID为5008
? 基本组为network,附加组为ops,dev,sa
? 注释信息为student,登录名称为oldxu
[root@node: ~]#usermod xu -u 5008 -g network -G ops,dev,sa -c "student" -l oldxu[root@node: ~]#tail -1 /etc/passwdoldxu:x:5008:1004:student:/home/xu:/bin/bash
如果运行  usermod xu -u 5008 -g network -G ops,dev,sa -c "student" -l oldxu
报错:
usermod: user xu is currently used by process 1572  #这是因为有进程在占用着用户,导致无法删除,解决办法就是找出占用的进程,kill掉之后在执行删除命令。具体如下使用命令 ps -u +用户名  的命令查看占用的进程以及进程的pid,如下[root@node: ~]#ps -u xu   PID TTY          TIME CMD  1572 ?        00:00:00 sshd  1573 pts/2    00:00:00 bash看到第一行的pid,使用kill命令杀掉进程即可[root@node: ~]#kill 1572[root@node: ~]#ps -u xu   PID TTY          TIME CMD
修改oldxu用户
? 为oldxu配置密码
? 锁定改用户,然后测试远程连接登录
? 解锁该用户后再次测试远程连接登录
    [root@node: ~]# echo "123" | passwd --stdin oldxu  #为oldxu设定密码为123    [root@node: ~]#usermod -L oldxu                     #锁定oldxu        [root@node: ~]#usermod -U oldxu                     #给oldxu解锁
若想删除系统普通用户,可以使用userdel命令,使用root用户登录之后就可以删除系统普通用户了
例如 删除过户oldxu 用户,连同家目录一起删除
[root@node: ~]#userdel -r oldxu
例2 批量删除系统中此前创建过得所有无用的用户
? 使用awk提取无用的用户名称
? 使用sed凭借删除用户的命令
? 调用userdel命令,连同家目录一起全部删除
   [root@node: ~]#awk -F ‘:‘ ‘$3>1000{print $1}‘ /etc/passwd | sed -r ‘s#(.*)#userdel \1#g‘| bash
?         创建用户后,如需要使用该用户进行远程登录系统则需要为普通用户设定密码,设定密码使用passwd
?              1.普通用户不可以变更系统的状态;(权限不够)
?              2.如果将【软件|系统】的权限分配给该普通用户,普通用户才可以变更相应配置信息
通过交互式为用户设定密码
[root@node: ~]#passwd  #给当前用户修改密码[root@node: ~]#passwd root  #给root用户修改密码[root@node: ~]#passwd oldxu #给oldxu用户修改密码,普通用户只能修改自己的密码,管理员可以修改所有用户的密码
[root@node: ~]#echo "12345" | passwd --stdin oldxu
非交互式设定随机密码
yum install -y expect[root@node: ~]#echo $(mkpasswd -l 10 -d 2 -c 2 -c 2 -s 4) | tee pass.txt \> | passwd --stdin oldxu
创建用户流程:
		系统在创建用户时参考以下两个配置文件:			/etc/login.defs				定义了创建用户时 `UID` 划分规则,密码加密类型,是否创建家目录等			/etc/default/useradd		家目录的位置、环境变量从哪里复制;是否创建邮箱;						默认的创建用户的规则和选项:					默认创建用户:			1.分配UID;			1.添加passwd 记录;			2.在/home目录下创建一个与名称相同的家目录;			3.拷贝/etc/skel/ 环境变量文件;			4.创建邮箱;
?
		注意:			使用useradd 的选项优先级要比默认的配置高;
原文:https://www.cnblogs.com/smallxu/p/15004083.html