• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
2022
博客园    首页    新随笔    联系   管理    订阅  订阅

用户相关命令

文章目录

  1. 什么是用户
  2. 用户跟系统的约定
  3. 用户相关的文件
  4. 用户管理命令
  5. 什么是用户
    能够正常登录系统的就是用户

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

Windows不支持多用户同时登陆

为什么要有用户?

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

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

#查看用户的基本信息

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

[root@qls ~]# id  nginx
uid=998(nginx) gid=996(nginx) groups=996(nginx)
``
**文章目录**

 - 用户管理命令
 - 用户创建相关的文件
 - 用户命令行故障
 - 用户的密码信息
 - 用户组的管理
 - 用户组的相关命令
 - 用户管理命令
 
 - useradd   ==   adduser       #创建用户 

选项:

	-u		#指定uid
	
	-g		#指定组 gid  前提需存在 
	
	-G		#指定附加组  多个用逗号分割 
	
	-d		#指定家目录  
	
	-c		#注释信息
	
	-s		#指定命令解释器 
	
	-r		#创建系统用户,默认不创建家目录  命令解释器是允许登录的
	
	-M		#不创建家目录  


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


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

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

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

[root@qls ~]# useradd   -M  -s  /sbin/nologin  user05
[root@qls ~]# tail -1  /etc/passwd
user05:x:1001:1002::/home/user05:/sbin/nologin
[root@qls ~]# 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@qls ~]# usermod  -u6666  -g 1001  -aG 665,664   -md  /opt/user01  -c "123"   -l user123  user01
[root@qls ~]# grep  'user01'  /etc/passwd
user123:x:6666:1001:123:/opt/user01:/bin/bash
[root@qls ~]# id  user123
uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04)

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

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

#修改密码

[root@qls ~]# 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@qls ~]$ 


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

选项:
	
	-r		#删除用户的时候,删除家目录及邮件相关信息  
		
[root@qls ~]# 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@qls ~]# userdel   user123
[root@qls ~]# 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@qls ~]# useradd   user06
[root@qls ~]# ll /home/
total 0
drwx------ 2 user06 user06 62 Jul 21 17:45 user06
[root@qls ~]# 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@qls ~]# userdel   -r  user06
[root@qls ~]# ll /home/
total 0
[root@qls ~]# 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@qls ~]# userdel  user02
userdel: user user02 is currently used by process 8333		#用户正在使用  
[root@qls ~]# 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@qls ~]# userdel  user02

4. 查看用户的命令  

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

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

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

[root@qls ~]# 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@qls ~]# who
root     pts/0        2020-07-21 17:49 (10.0.0.1)

[root@qls ~]# whoami
root

[root@qls ~]# 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@qls ~]# uptime
 09:59:49 up 22:14,  1 user,  load average: 0.00, 0.01, 0.05

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

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

[root@qls ~]# 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@qls ~]# 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	#创建邮件相关信息  

3. 用户命令行故障

[root@qls ~]# 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@qls ~]# 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@qls ~]# mkdir  -m  700  /home/test
[root@qls ~]# ll -d /home/test
drwx------ 2 root root 6 Jul 21 10:53 /home/test
[root@qls ~]# 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

4. 用户的密码信息

#如何设置密码 

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

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

[root@qls ~]# useradd    qls01

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

非交互式设置密码

--stdin

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

#如何设置随机密码  

#如何获得随机数 

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

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

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

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

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

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

	-a		#追加  
	

#设置更复杂的密码 

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

选项:

	-l		#指定的密码位数
	
	-d		#指定数字位数
	
	-c		#小写字母位数
	
	-C		#大小字母位数
	
	-s		#特殊字符位数
	
	
[root@qls ~]# mkpasswd  
gC}2atTf9
[root@qls ~]# mkpasswd  -l 24  -d 6 -c 6 -C 6 -s 6
sv_^WF85J@DF5Ng5|3{f3/ng
[root@qls ~]# mkpasswd  -l 24 
9px3Sesrx[ybtbvElubxxltj
[root@qls ~]# mkpasswd  -l 24 
uimYw\Z4amzffhti0eljucgg
[root@qls ~]# 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@qls ~]# mkpasswd  -l 24 -s 24 -d 0 -c 0 -C 0 
$.$}+?;-~]|)>(#_),[)!#@$

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

5. 用户组的管理

什么是用户组  

组分为两类


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

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


跟组相关的文件 


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

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

[root@qls ~]# cat /etc/group		#用户组的基本信息文件 
root:x:0:
bin:x:1:
daemon:x:2:
mail:x:12:postfix


第一列:	root		#组的名称 

第二列:	x			#组的密码占位符

第三列:	0			#组的GID  

第四列:				#用户名  哪些用户使用此组作为附加组  多个用逗号分割 

#用户组的组密码文件

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

[root@qls ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
mail:::postfix

第一列:	root		#组的名称  

第二列:	!或者空		#用户组的密码信息  空或者!是没有密码  

第三列:	空			#用户组的管理者  

第四列:	空			#用户名  哪些用户使用此组作为附加组  多个用逗号分割


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

6. 用户组的相关命令
1. 创建用户组的命令    groupadd

选项:

	-g		#指定组的ID  GID
	
	-r		#创建系统组  
	  

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


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


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



2. 修改用户组的命令	   groupmod

选项:

	-g		#修改用户组的ID  GID
	
	-n		#修改组的名称  



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

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

3. 删除用户组的命令	   groupdel

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

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

[root@qls ~]# groupdel  user01

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

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

解决:

	给这里面的用户重新找个基本组 
	
	把用户也一并删除掉 

[root@qls ~]# groupdel   user05
groupdel: cannot remove the primary group of user 'user05'
[root@qls ~]# usermod  -g  1003  user05
[root@qls ~]# id user05 
uid=1001(user05) gid=1003(test) groups=1003(test)
[root@qls ~]# groupdel   user05
posted @ 2021-03-13 22:33  博客之记  阅读(98)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3