第二十章 用户管理(一)

一、用户基本概述

1.什么是用户?

定义:能够正常登录系统的就是用户

区别:

Linux系统支持多用户同时登陆 互相管理不冲突

Windows不支持多用户同时登陆


2.为什么要有用户?

1)系统的程序进程需要指定的用户进行运行

2)root管理系统权限太大,需要普通用户进行管理


3.id #查看用户的基本信息

[root@jindada ~]# id #默认查看当前登录的用户的信息
uid=0(root) gid=0(root) groups=0(root)

[root@jindada ~]# id nginx
uid=998(nginx) gid=996(nginx) groups=996(nginx)

 

二、用户跟系统的约定

在CentOS-7中,UID为:

0 --- 超级管理员用户 权限最大

1-200 --- 系统用户,系统默认创建好的 不能登录系统的用户 用来运行系统中的程序和进程

201-1000 --- 系统用户 用户自定义的 运行一些软件程序

1000+ --- 普通用户 可以正常登录系统 但是权限很低


在CentOS-6中,UID为:

1-500 系统用户

500+ 普通用户

 

 三、用户相关的文件

#用户的基本信息存放在这个文件里面

[root@jindada ~]# ll /etc/passwd
-rw-r--r-- 1 root root 860 Jul 20 19:50 /etc/passwd

#以冒号为分隔符,分为7列

 

 

#用户的密码信息及账号信息

[root@jindada ~]# ll /etc/shadow
---------- 1 root root 584 Jul 20 19:50 /etc/shadow

#以冒号为分隔符,分为9列

 

 

 

 

四、用户相关命令


1. useradd == adduser #创建用户

选项:

-u #指定uid

-g #指定组 gid 前提需存在

-G #指定附加组 多个用逗号分割

-d #指定家目录

-c #注释信息

-s #指定命令解释器

-r #创建系统用户,默认不创建家目录 命令解释器是允许登录的

-M #不创建家目录


[root@jindada ~]# useradd user01
[root@jindada ~]# tail -1 /etc/passwd
user01:x:1000:1000::/home/user01:/bin/bash
[root@jindada ~]# tail -1 /etc/shadow
user01:!!:18464:0:99999:7:::


[root@jindada ~]# useradd -u666 -d /opt/user02 -c "test" user02
[root@jindada ~]# tail -1 /etc/passwd
user02:x:666:1001:test:/opt/user02:/bin/bash
[root@jindada ~]# ll /opt/
drwx------ 2 user02 user02 62 Jul 21 16:47 user02

[root@jindada ~]# useradd -r user03
[root@jindada ~]# tail -1 /etc/passwd
user03:x:665:665::/home/user03:/bin/bash
[root@jindada ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01

[root@jindada ~]# useradd -r -s /sbin/nologin user04
[root@jindada ~]# tail -1 /etc/passwd
user04:x:664:664::/home/user04:/sbin/nologin
[root@jindada ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01

[root@jindada ~]# useradd -M -s /sbin/nologin user05
[root@jindada ~]# tail -1 /etc/passwd
user05:x:1001:1002::/home/user05:/sbin/nologin
[root@jindada ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01


2. usermod #修改用户信息的


选项:

-u #修改用户的uid

-g #修改用户的gid

-a #追加 添加附加组 需跟-G配合使用

-G #修改附加组,默认会覆盖原来的所有附加组 -aG 追加

-m #迁移家目录

-d #修改家目录

-c #修改注释信息

-s #修改命令解释器

-l #修改用户的名称

-L #锁定用户

-U #解锁用户


[root@jindada ~]# usermod -u6666 -g 1001 -aG 665,664 -md /opt/user01 -c "123" -l user123 user01
[root@jindada ~]# grep 'user01' /etc/passwd
user123:x:6666:1001:123:/opt/user01:/bin/bash
[root@jindada ~]# id user123
uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04)


[root@jindada ~]# usermod -s /bin/bash user05
[root@jindada ~]# grep 'user05' /etc/passwd
user05:x:1001:1002::/home/user05:/bin/bash


[root@jindada ~]# usermod -L user02
[root@jindada ~]# usermod -U user02

#修改密码

[root@jindada ~]# passwd user02
Changing password for user user02.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.

#远程登录

[C:\~]$ ssh user02@10.0.0.100


Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last failed login: Tue Jul 21 17:22:10 CST 2020 from 10.0.0.1 on ssh:notty
There were 4 failed login attempts since the last successful login.
Last login: Tue Jul 21 17:20:45 2020 from 10.0.0.1
[user02@jindada ~]$


3. userdel #删除用户 默认不删除家目录及邮件信息

选项:

-r #删除用户的时候,删除家目录及邮件相关信息


[root@jindada ~]# ll /opt/
total 1016
drwx------ 2 user123 user02 62 Jul 21 16:40 user01
drwx------ 2 user02 user02 62 Jul 21 16:47 user02
[root@jindada ~]# userdel user123
[root@jindada ~]# ll /opt/
total 1016
drwx------ 2 6666 user02 62 Jul 21 16:40 user01
drwx------ 2 user02 user02 62 Jul 21 16:47 user02

 

[root@jindada ~]# useradd user06
[root@jindada ~]# ll /home/
total 0
drwx------ 2 user06 user06 62 Jul 21 17:45 user06
[root@jindada ~]# ll /var/mail/
total 0
-rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
-rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
-rw-rw---- 1 user06 mail 0 Jul 21 17:45 user06
-rw-rw---- 1 6666 mail 0 Jul 21 16:40 user123
[root@jindada ~]# userdel -r user06
[root@jindada ~]# ll /home/
total 0
[root@jindada ~]# ll /var/mail/
total 0
-rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
-rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
-rw-rw---- 1 6666 mail 0 Jul 21 16:40 user123

[root@jindada ~]# userdel user02
userdel: user user02 is currently used by process 8333 #用户正在使用
[root@jindada ~]# ps aux |grep 8333
user02 8333 0.0 0.1 161364 2348 ? S 17:42 0:00 sshd: user02@pts/1
root 8389 0.0 0.0 112708 976 pts/0 R+ 17:46 0:00 grep --color=auto 8333
[root@jindada ~]# userdel user02


4. 查看用户的命令

#查看用忽的id及组的相关信息

[root@jindada ~]# id root
uid=0(root) gid=0(root) groups=0(root)


[root@jindada ~]# yum install -y finger

[root@jindada ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Tue Jul 21 17:49 (CST) on pts/0 from 10.0.0.1
7 seconds idle
No mail.
No Plan.


[root@jindada ~]# who
root pts/0 2020-07-21 17:49 (10.0.0.1)

[root@jindada ~]# whoami
root

[root@jindada ~]# w
09:59:15 up 22:14, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 17:49 ? 0.02s 0.00s w


[root@jindada ~]# uptime
09:59:49 up 22:14, 1 user, load average: 0.00, 0.01, 0.05

 

五、用户创建的相关文件


创建用户的时候,没有指定相关信息,系统创建用户是根据两个文件进行创建的

[root@jindada ~]# ll /etc/login.defs
-rw-r--r--. 1 root root 2028 Oct 30 2018 /etc/login.defs
[root@jindada ~]# ll /etc/default/useradd
-rw-r--r--. 1 root root 119 Oct 30 2018 /etc/default/useradd

 


[root@jindada ~]# grep -Ev '^$|^#' /etc/login.defs
MAIL_DIR /var/spool/mail     #接收邮件的目录
PASS_MAX_DAYS 99999     #密码最大的有效期天数
PASS_MIN_DAYS 0            #密码最小的有效期
PASS_MIN_LEN 5            #密码最小的长度 不起作用 root用户限制不了 普通用户最少8位
PASS_WARN_AGE 7        #密码到期前的告警时间
UID_MIN 1000                 #普通用户最小的UID
UID_MAX 60000             #普通用户最大的UID
SYS_UID_MIN 201         #系统用户的最小UID
SYS_UID_MAX 999        #系统用户的最大UID
GID_MIN 1000                #普通用户的组的最小GID
GID_MAX 60000               #普通用户的组的最大GID
SYS_GID_MIN 201         #系统用户的组的最小GID
SYS_GID_MAX 999        #系统用户的组的最大GID
CREATE_HOME yes      #创建用户的时候默认创建家目录
UMASK 077               #默认创建用户的家目录的权限 umask为077 777-077=700
USERGROUPS_ENAB yes       #创建或删除用户的时候,没有指定组,默认创建或删除跟用户相同名称的组
ENCRYPT_METHOD SHA512    #密码的加密规则


[root@jindada ~]# cat /etc/default/useradd
GROUP=100   #当创建用户没有指定组,并且USERGROUPS_ENAB为no的时候,这个选项生效
HOME=/home    #创建用户的家目录的位置
INACTIVE=-1    #跟shadow文件的第七列 密码到期后的宽恕时间 -1 密码永不失效 不启用
EXPIRE=      #跟shadow文件第八列 账号密码的失效时间 时间戳 空则表示没有失效时间
SHELL=/bin/bash   #默认的命令解释器
SKEL=/etc/skel   #默认创建家目录的模板
CREATE_MAIL_SPOOL=yes   #创建邮件相关信息

 

六、用户命令行故障

[root@jindada ~]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@jindada ~]# rm -f /home/test/.bash*

 

#家目录里面的环境变量配置文件不存在

-bash-4.2$
-bash-4.2$

#解决

-bash-4.2$ pwd
/home/test
-bash-4.2$ cp -a /etc/skel/.bash* ./


Permission denied #权限不足

[root@jindada ~]# mkdir -m 700 /home/test
[root@jindada ~]# ll -d /home/test
drwx------ 2 root root 6 Jul 21 10:53 /home/test
[root@jindada ~]# chown -R test.test /home/test

 

-bash-4.2$ cd /home/test
-bash-4.2$ pwd
/home/test
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ logout

 

七、用户的密码信息 

#如何设置密码

管理员可以给任何用户设置密码 密码的长度没有限制

普通用户只能给自己设置密码 且是无规律的8位以上的密码

 

[root@jindada ~]# useradd jindada01

[root@jindada ~]# passwd #默认给当前用户设置密码
Changing password for user root.
New password:
[root@jindada ~]# passwd jindada01 #给指定的用户设置密码
Changing password for user jindada01.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@jindada ~]#

 

非交互式设置密码

--stdin

[root@jindada ~]# echo '2' | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.


#如何设置随机密码

#如何获得随机数

[root@jindada ~]# echo $RANDOM
28241
[root@jindada ~]# echo $RANDOM | md5sum
6c8a1df9e12e9c553d0f9a397b860f4e -
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
64091f6823
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
df0676f775

#密码设置成功,但是不知道密码

[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.

 

[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt
b676039b3f


[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
[root@jindada ~]# cat pass.txt
7d53328b61


tee #重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份

-a #追加

#设置更复杂的密码

[root@jindada ~]# yum install -y expect

选项:

-l #指定的密码位数

-d #指定数字位数

-c #小写字母位数

-C #大小字母位数

-s #特殊字符位数


[root@jindada ~]# mkpasswd
gC}2atTf9
[root@jindada ~]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6
sv_^WF85J@DF5Ng5|3{f3/ng
[root@jindada ~]# mkpasswd -l 24
9px3Sesrx[ybtbvElubxxltj
[root@jindada ~]# mkpasswd -l 24
uimYw\Z4amzffhti0eljucgg
[root@jindada ~]# mkpasswd -l 24 -s 24
impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2 uppercase letters and 24 special characters.
[root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0
$.$}+?;-~]|)>(#_),[)!#@$

[root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0 | tee pass.txt | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
[root@jindada ~]# cat pass.txt
:{]~"/'%[,+"^*%??%,'?}~$

 

八、用户组的管理

什么是用户组

组分为两类


基本组 #一个用户只能拥有一个基本组

附加组 #当基本组的权限不够用户使用的,就出现了附加组 一个用户允许拥有多个附加组


跟组相关的文件


[root@jindada ~]# ll /etc/group
-rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group
[root@jindada ~]# ll /etc/gshadow
---------- 1 root root 449 Jul 21 11:04 /etc/gshadow
[root@jindada ~]#

#以冒号为分隔符 分为4列

 

 

#用户组的组密码文件

#以冒号为分隔符 分为四列

[root@jindada ~]# usermod -aG user05,user03,user01 jindada01
[root@jindada ~]# grep 'jindada01' /etc/group
user01:x:1000:jindada01
user03:x:665:jindada01
user05:x:1002:jindada01
jindada01:x:1006:
[root@jindada ~]# grep 'jindada01' /etc/gshadow
user01:!::jindada01
user03:!::jindada01
user05:!::jindada01
jindada01:!::

 

九、用户组的相关命令


1. 创建用户组的命令 groupadd

选项:

-g #指定组的ID GID

-r #创建系统组

[root@jindada ~]# groupadd user_group01
[root@jindada ~]# tail -1 /etc/group
user_group01:x:1007:


[root@jindada ~]# groupadd -g 666 user_group02
[root@jindada ~]# tail -1 /etc/group
user_group02:x:666:


[root@jindada ~]# groupadd -r user_group03
[root@jindada ~]# tail -1 /etc/group
user_group03:x:664:

 

2. 修改用户组的命令 groupmod

选项:

-g #修改用户组的ID GID

-n #修改组的名称

 

[root@jindada ~]# groupmod -g 6666 user_group01
[root@jindada ~]# grep 'user_group01' /etc/group
user_group01:x:6666:

[root@jindada ~]# groupmod -n new_group user_group01
[root@jindada ~]# grep 'new_group' /etc/group
new_group:x:6666:

 

3. 删除用户组的命令 groupdel


[root@jindada ~]# groupdel new_group
[root@jindada ~]# grep 'new_group' /etc/group

#删除作为某个用户的附加组的用户组 删除没有影响

[root@jindada ~]# groupdel user01

 


[root@jindada ~]# grep '1002' /etc/group
user05:x:1002:jindada01
[root@jindada ~]# grep '1002' /etc/passwd
user05:x:1001:1002::/home/user05:/bin/bash
test:x:1002:1003::/home/test:/bin/bash
[root@jindada ~]# id user05
uid=1001(user05) gid=1002(user05) groups=1002(user05)


#删除一个组作为某个用户的基本组 是不能删除的

解决:

给这里面的用户重新找个基本组

把用户也一并删除掉

[root@jindada ~]# groupdel user05
groupdel: cannot remove the primary group of user 'user05'
[root@jindada ~]# usermod -g 1003 user05
[root@jindada ~]# id user05
uid=1001(user05) gid=1003(test) groups=1003(test)
[root@jindada ~]# groupdel user05

原文地址:https://www.cnblogs.com/jhno1/p/13368073.html