[linux]八、用户和组管理(User and group management)-part1

目录

1、用户和用户组的关系

1.1、id

1.2、用户和组的用途

1.2.1、内核怎么识别用户是普通用户还是root用户呢(进程的组成)

1.3、进程的状态

1.3.1、使用命令"mkdir xxxx",这背后发生什么?

1.3.2、进程最基本的状态(三态或者五态)

1.4、cpu的调度问题

2、新建和删除用户

2.1、/etc/passwd文件介绍

2.2、用户的shell类型

2.2.1、更改用户的shell类型

2.3、小练习

2.4、用户的分类

2.4.1、修改uid

2.4.2、 /etc/passwd里是nologin的shell类型的用户

2.4.3、登录程序用户客户端

2.4.4、ftp命令

2.4.5、使用ftp与windows传东西

3、useradd 

3.1、useradd -g 和-G

3.2、userdel

3.2.1、userdel -r

3.2.2、文件系统

3.3、useradd -d、-u、-s和-c

4、usermod

4.1、usermod -U

4.2、usermod -L

4.2.1、如何知道一个用户是否设置密码?

4.2.2、 usermod -g + 用户组 + 用户名

 4.3、passwd

4.3.1、passwd -S + 用户名

4.3.2、passwd -d + 用户名

4.3.3、passwd -l + 用户名 和passwd -u + 用户名

4.4、passwd -l 和 usermod -L 的区别

4.5、用户和组的小练习

5、/etc/shadow

5.1、用户登录的时候,到底是如何验证用户名和密码的呢?

5.2、批量添加用户脚本(shell和python实现)

5.2.1、subprocess的返回值

6、组

6.1、有效组

6.2、gpasswd

 6.2.1、gpasswd -a和usermod -G的区别

6.3、/etc/login.defs 文件

6.4、总结练习


1、用户和用户组的关系

每个账户有一个唯一的UID;每个组也有一个唯一的GID,多个账户可以属于用一个组。

1.1、id

[root@fttsaxf menu]# id root
uid=0(root) gid=0(root) 组=0(root)

# uid是用户的id号,gid是组的id号。一个用户至少属于一个组,默认情况下用户组名和用户名同名

1.2、用户和组的用途

为linux系统里的资源管控服务的。资源管理:文件的访问、读取、执行等操作。

1.2.1、内核怎么识别用户是普通用户还是root用户呢(进程的组成)

进程=PCB+程序代码+程序产生的数据。

PCB是进程控制块(process control block),是一个数据结构,里边有pid号,ppid号、euid(有效的uid)、egid、程序代码在内存里的指针、优先级、程序的状态等信息。PCB是内核管控进程的唯一凭证。一般来说uid和euid是一样的。

 如上边这个例子中:cali用户若想要对"/lianxi/a.txt"做修改,并不会被允许。因为kernel会检查这个申请修改的用户的euid和egid号,看是否有对这个文件的修改权限。若是没有,就会拒绝这个用户的申请。用户的身份会嵌入到进程里,内核对进程进行限制。

1.3、进程的状态

进程:是正在运行的程序("活得"),存在内存中。

程序:存在在磁盘里的代码("死"的)

1.3.1、使用命令"mkdir xxxx",这背后发生什么?

首先bash在磁盘里找到"mkdir",然后加载到内存中,申请空间,存放程序代码。又因为内核是管理进程的,所以内核会特意在内存中开一个空间(PCB)在记录有哪里进程。

可以把pcb理解为一个字典

1.3.2、进程最基本的状态(三态或者五态)

就绪状态(sleeping)、运行状态(running)、阻塞状态(stopped)

 阻塞也是在内存中

在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。

1.4、cpu的调度问题

FIFO:先进先出

加权调度

 图片解释:左下角这些数字是权重

2、新建和删除用户

useradd,新建用户

userdel  -r  ,删除用户

[root@fttsaxf ~]# ls /etc/passwd*
/etc/passwd  /etc/passwd-
[root@fttsaxf ~]# ls /etc/shadow*
/etc/shadow  /etc/shadow-
[root@fttsaxf ~]# diff /etc/passwd /etc/passwd-
36d35
< dfjalsk:x:1013:1013::/home/dfjalsk:/bin/bash

# /etc/passwd,用来存放用户信息的;/etc/shadow,用来存放用户密码的。passwd和passwd-是有差别的。

/etc/shadow-  和 /etc/passwd-  是passwd和shadow的备份文件,总是和原文件少一次操作(可以是新建也可以是删除)

[root@fttsaxf ~]# userdel -r dfjalsk
[root@fttsaxf ~]# diff /etc/passwd /etc/passwd-
35a36
> dfjalsk:x:1013:1013::/home/dfjalsk:/bin/bash

2.1、/etc/passwd文件介绍

用途:用来保存用户账号的基本信息。

每一行对应一个用户的账号

[root@fttsaxf ~]# id fja
uid=1011(fja) gid=1011(fja) 组=1011(fja)
[root@fttsaxf ~]# cat /etc/passwd|tail -1
fja:x:1011:1011::/home/fja:/bin/bash  # ":",这个是分隔符

# 默认情况下新建一个用户,会新建一个同名的组。uid和gid会在前一个用户的基础上+1,所以这个号码不会重复

 小练习

# 查找出linux系统里的用户的uid大于1000的用户,显示出它的名字、uid、家目录和shell
[root@fttsaxf ~]# cat /etc/passwd|awk -F ":"  '$3>1000 {print $1,$3,$6,$7}'
bangyou 1002 /home/bangyou /bin/bash
fdd 1003 /home/fdd /bin/bash

2.2、用户的shell类型

/sbin/nologin  ,这个用户是不能够登录系统的,也就是说不能够用ssh登录
/bin/bash  ,默认的用户shell,这个是正常的shell
/sbin/halt ,登录就关机
/bin/sync ,是将内存里的缓存刷新到磁盘里的
/sbin/shutdown,登陆就关机

2.2.1、更改用户的shell类型

useradd  -s,指定新建用户的shell类型

usermod -s,更改已存在用户的shell类型

[root@fttsaxf ~]# useradd -s /sbin/nologin  liuxing
[root@fttsaxf ~]# cat /etc/passwd | grep liuxing
liuxing:x:1012:1012::/home/liuxing:/sbin/nologin
[root@fttsaxf ~]# echo 123456|passwd liuxing  --stdin # 给liuxing设置密码为123456
更改用户 liuxing 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@fttsaxf ~]# su - liuxing
上一次登录:三 2月 23 16:34:24 CST 2022pts/0 上
This account is currently not available.
[root@fttsaxf network-scripts]# cat /etc/passwd|grep xiaohui
xiaohui:x:7798:7797::/home/xiaohui:/sbin/nologin
[root@fttsaxf network-scripts]# usermod -s /bin/bash xiaohui
[root@fttsaxf network-scripts]# cat /etc/passwd|grep xiaohui
xiaohui:x:7798:7797::/home/xiaohui:/bin/bash

在另一台机子里使用

[root@fttsaxf ~]# ssh  liuxing@xxx.xxx.xxx.xxx  # 用另外一台机子登录liuxing用户
liuxing@xxx.xxx.xxx.xxx's password:
此账户目前不可用
Connection to xxx.xxx.xxx.xxx closed.

以上验证了,当一个用户的shell是/sbin/nologin的时候,是不能够登录系统的,su(本地切换登录)和ssh(远程登录)都不行。每次新建一个用户,其实就会在/etc/passwd文件的末尾追加一行用户的信息(一切皆文件的思想)

2.3、小练习

 

# 第一题
[root@fttsaxf ~]# cat /etc/passwd|awk -F ":" '$3>1000 && $1 ~ /ca/ && $7 ~ /bash/{print $1,$3,$7}'
caohx 1005 /bin/bash
califeng 1008 /bin/bash
cali123 1009 /bin/bash
# ~,内容匹配,模糊匹配

[root@fttsaxf ~]# cat /etc/passwd|egrep ".*ca.*bash"|awk -F ":" '$3>1000{print $1,$3,$7}'
caohx 1005 /bin/bash
califeng 1008 /bin/bash
cali123 1009 /bin/bash
# .*  在正则表达中代表任意字符

#第四题
ps aux ,静态查看
top,动态查看,q退出

2.4、用户的分类

 

 只有UID为0的用户才是root用户,并不是看名字的。

普通用户就是我们用useradd建立的用户。超级用户是系统安装好就有的,不需要新建,默认只有一个超级用户。 程序用户:用来启动程序或者登陆程序的用户,用来实现功能的。

现在我们用的centos7,超级用户的UID为0、程序用户(System accounts)的UID为201~999、普通用户的UID大于等于1000。login.defs,这个文件中可以看到。

2.4.1、修改uid

在/etc/passwd中修改用户的uid为0

2.4.2、 /etc/passwd里是nologin的shell类型的用户

是不能够用ssh远程登陆系统的,但是并不代表不能够登录服务。

ssh方式登录的时候会去/etc/passwd文件里检查用户的shell,如果是nologin就不允许登录。ftp方式登陆的时候也会去/etc/passwd文件里检查用户,但是只是检查是否存在,不看shell是否是nologin

2.4.3、登录程序用户客户端

第一步:安装启动vsftpd服务

[root@fttsaxf ~]# yum install vsftpd -y

第二步:重启vsftpd服务 

 当出现拒绝连接的时候,使用"service vsftpd restart",重新启动这个服务就可以了。

 第三步:安装客服端命令

[root@fttsaxf ~]# yum install ftp lftp -y

第四步: 清除防火墙规则

[root@fttsaxf ~]# iptables -F  # 消除规则
[root@fttsaxf ~]# service firewalld stop  停止防火墙服务

第五步:登录 

[root@fttsaxf ~]# cat /etc/passwd | grep ftp  # 查看ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@fttsaxf ~]# ls /var/ftp
pub

2.4.4、ftp命令

 其实大部分和linux命令是一样的,若是你不知道有哪些命令可以使用help

ftp ,这个用户是匿名用户,不需要输入密码的,就可以登录。可以不用本地用户。

本地用户:useradd新建的用户,登录需要密码

centos8里vsftp服务器默认不允许匿名登录(ftp登录),但是可以本地用户登录

若是想要在centos8中允许匿名用户登录的配置,该怎么做

第一步:修改配置文件

[root@fttsaxf ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=yes   #  将no修改为yes

 第二步:刷新服务

[root@fttsaxf ~]#  service vsftpd restart

2.4.5、使用ftp与windows传东西

 我们可以在浏览器或者计算机里输入下面的地址

ftp://(你自己的ip地址)/

使用上边这个命令的时候一定要把"2.4.3、登录程序用户客户端",这些步骤都弄完才能在计算机里边输入这个命令。要把防火墙关闭,不然就会出现这种情况

下边是在计算机输入ftp的操作

 

 

 

3、useradd 

3.1、useradd -g 和-G

-g  主要组(主业)
-G 次要组(副业)

3.2、userdel

删除用户

3.2.1、userdel -r

删除用户的时候,把用户的家目录和邮箱都删除。邮箱在"/var/spool/mail"里边

若是不使用"-r",则会出现如下结果

图片解释:主目录就是家目录。因为新建用户的时候,会在"/home/你的用户名"中存入你的用户名的一个文件夹和"/var/spool/mail/你的用户名"中存入你这个用户的邮件地址。所以直接只用userdel只是会把"/etc/passwd"中你要删除的这个用户的基本信息删除,并不会再"/home"和
"/var/spool/mail"中进行操作。所以再次新建这个用户名的普通用户的时候,就会提醒已经存在这个用户了。但是图中这个"hutianying"这个普通用户是之前创建的,我们后来又创建了一些用户的。所以就会出现再次新建这个用户的时候,提示用户已经存在。若是我们直接新建,然后再用userdel删除,再新建就不会有这个提示了。这一切都是与uid和gid有联系的。下面会讲到

例如,图片中的a.txt,在新建的时候会在磁盘上开辟一块空间存放在用户的属性信息。

当"hutianying"这个用户创建了a.txt这个文件的时候,a.txt这个文件就会显示,这个文件是1100的uid用户创建的,当把"hutianying"删掉之后,再创建一个用户,又把"1100"分配到新用户"cali",那么就会认为这个a.txt文件是Cali创建的。操作系统中只认UID

 那么是否会删除这个用户在其他目录里新建的文件或者文件夹?

答案是不会的

 图片解释:"zhangwuji6"是这个文件的创建者,当使用"userdel -r"命令后,这个用户就不存在了。但是这个在其他目录下的文件会残留下来,所以这个"3355"是"zhangwuji6"的UID号

3.2.2、文件系统

文件由目录项、inode、block组成。目录项由文件名和inode组成。用户的UID和GID等信息就存放在"inode" 里边。"inode"会根据UID去"/etc/passwd"里边查找是否有该UID的用户名,若是查到了,这个文件就会显示这个UID的用户名,若是没有查到,这个文件就会显示这个用户之前的UID。

3.3、useradd -d、-u、-s和-c

指定家目录、UID号、登录的shell和用户注释的描述信息

passwd里边放置的是主要组 

4、usermod

格式:usermod  [选项]...用户名

常用命令选项

4.1、usermod -U

修改用户UID。其实就是把"/etc/passwd"这个文件修改。

4.2、usermod -L

-L,lock。禁用用户,不能够使用ssh登录linux系统

 其本质就是修改了"/etc/shadow"文件

4.2.1、如何知道一个用户是否设置密码?

"/etc/shadow"用于保存密码子串、密码有效期等信息。每一行对应一个用户的密码记录。

"!!","*",说明没有设置密码,要是后边有密文,就是说明该用户设置了密码。

图片解释:"*",是程序用户 

 使用usermod -L后,其实就是在密码字段前边加一个"!"。我们也可以自己去"/etc/shadow"里边手动修改

[root@fttsaxf ~]# cat /etc/shadow|grep fzt|awk -F ":" '{print $2}'
!$6$2kWPED2M$Qlfoo36Rd1EcGwc7rc0c7ro7Sx2SuPeLwPd1JXehYkLKIeDd/cFDyuoLPbZuHXO.QGLj7C4N8CUxzV.5Ddqcr1

4.2.2、 usermod -g + 用户组 + 用户名

更改用户的gid

 4.3、passwd

 

 图片解释:直接使用passwd + 用户名,这是交互式设密码。因为有密码复杂度检测,所以输入"12345",会提示密码少于8个字符,但是重新输入"12345",又可以设置成功。因为我们是root用户,仍然可以强制设置成功。

 这是非交互式设置密码,写脚本使用比较好。

4.3.1、passwd -S + 用户名

查看账号密码状态

[root@fttsaxf ~]# useradd fdd
[root@fttsaxf ~]# cat /etc/shadow|tail -1
fdd:!!:19049:0:99999:7:::
[root@fttsaxf ~]# echo 123456|passwd fdd --stdin
更改用户 fdd 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@fttsaxf ~]# cat /etc/shadow|tail -1
fdd:$6$OkiM036g$7k6BcEjQJOungiVDKBYy0D4BsZx43MI.QL76nDlKauCpn2tt.6kAqOTP0KederI1C62OROlt7/GZ54IEgdnM91:19049:0:99999:7:::
[root@fttsaxf ~]# passwd -S fdd
fdd PS 2022-02-26 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@fttsaxf ~]# usermod -L fdd
[root@fttsaxf ~]# passwd -S fdd
fdd LK 2022-02-26 0 99999 7 -1 (密码已被锁定。)

4.3.2、passwd -d + 用户名

清除密码,本质上就是在"shadow"文件里删除密码字段的内容

 另外,空密码是不允许远程ssh登录的,但是可以本地登录。下图为本地登录(使用"exit"命令之后出现的画面)

下边是ssh登录尝试(不允许登录)

 建议不要把用户密码清空

4.3.3、passwd -l + 用户名 和passwd -u + 用户名

[root@fttsaxf ~]# passwd -l fzt  # 禁用
锁定用户 fzt 的密码 。
passwd: 操作成功
[root@fttsaxf ~]# cat /etc/shadow|grep fzt
fzt:!!$6$2kWPED2M$Qlfoo36Rd1EcGwc7rc0c7ro7Sx2SuPeLwPd1JXehYkLKIeDd/cFDyuoLPbZuHXO.QGLj7C4N8CUxzV.5Ddqcr1:19049:0:99999:7:::
[root@fttsaxf ~]# passwd -u fzt  # 启用
解锁用户 fzt 的密码。
passwd: 操作成功
[root@fttsaxf ~]# cat /etc/shadow|grep fzt
fzt:$6$2kWPED2M$Qlfoo36Rd1EcGwc7rc0c7ro7Sx2SuPeLwPd1JXehYkLKIeDd/cFDyuoLPbZuHXO.QGLj7C4N8CUxzV.5Ddqcr1:19049:0:99999:7:::

4.4、passwd -l 和 usermod -L 的区别

在这个用户设置密码的前提下,"passwd -l"是在这个用户的密文的前边加个"!";"usermod -L"是在这个用户的密文的前边加个"!"。被禁用的用户不能够登录系统

4.5、用户和组的小练习

# 第一题
[root@fttsaxf ~]# groupadd nongda
[root@fttsaxf ~]# groupadd gongda
[root@fttsaxf ~]# groupadd wenli
# 第二题
[root@fttsaxf ~]# useradd -d /home/yueyang -s /sbin/nologin -u 7788 -g wenli -c "sanchuang student" chenlin
# 三四题以此类推
# 第五题
[root@fttsaxf ~]# echo 123456abc|passwd chenlin --stdin
更改用户 chenlin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
# 第六题
[root@fttsaxf ~]# cat /etc/passwd|grep chenlin
chenlin:x:7788:1016:sanchuang student:/home/yueyang:/sbin/nologin
[root@fttsaxf ~]# id chenlin
uid=7788(chenlin) gid=1016(wenli) 组=1016(wenli)
# 第七题
[root@fttsaxf ~]# usermod -s /sbin/nologin zhangcz  # 或者直接修改/etc/passwd文件,且只有root用户能够修改这个文件
# 第八题
[root@fttsaxf ~]# usermod -u 9900 -g gongda huangtao
# 第九题
[root@fttsaxf ~]# userdel -r zhangcz
# 第十题
[root@fttsaxf ~]# groupdel gongda  
groupdell:  不能够移除用户"huangtao"的主组
# 如果某个用户的主要组属于gongda,这个组是不能够被删除的,除非没有用户属于gongda组,就可以删除。所以我们可以改变"huangtao"这个用户的主要组

5、/etc/shadow

/etc/passwd是用来存放用户信息的;/etc/shadow是用来存放密码的。

图片解释:

序号皆为对应的字段

  1. 用户名。
  2. 密码密文,如果为空表示不能使用密码登录系统。密文字段:$加密算法id$盐值$真正的密文
  3. 上次修改密码的天数(从1970年1月1日开始计算,到修改密码时的天数)
  4. 修改密码时间间隔的最短天数,在这段时间内不允许修改密码,如果是0,表示可以随时修改密码。
  5. 修改密码时间间隔的最长天数,超过这个天数后密码失效,系统将强制用户修改密码。例如,99999表示最长可以99999天不修改密码。
  6. 密码失效前多少天提示用户需要修改密码,上面例子中7表示密码失效前7天开始提示用户需要修改密码。
  7. 密码过期后多少天帐户将会被禁用。
  8. 帐户失效的日期,从1970年1月1日开始计算,超过这个日期,帐户将无法使用。
  9. 最后一项为保留字段,还没有被使用。

使用"chage + 用户名"可以修改指定用户的最短修改密码间隔、最长密码有效期、密码失效天数等信息。例如:

[root@fttsaxf ~]# chage fzt
正在为 fzt 修改年龄信息
请输入新值,或直接敲回车键以使用默认值

	最小密码年龄 [0]: 
	最大密码年龄 [99999]: 
	最近一次密码修改时间 (YYYY-MM-DD) [2022-02-26]: 
	密码过期警告 [7]: 
	密码失效 [-1]: 
	帐户过期时间 (YYYY-MM-DD) [-1]: 

5.1、用户登录的时候,到底是如何验证用户名和密码的呢?

 

登录的时候输入密码,经过SHA512加密之后得到密文,然后与"/etc/shadow"里这个用户的密文作比较,如果一样就是登录成功。 光得到密文并不能够得到这个用户的密码。

# SHA512这是centos7里的哈希加密算法,用来的密码字符串
[root@fttsaxf ~]# cat /etc/login.defs |grep ENCRYPT
ENCRYPT_METHOD SHA512

Hash,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变成固定长度的输出,该输出就是散列值。

密码字段:$加密算法id$盐值$真正的密文,加密底层使用内核的crypt函数实现

5.2、批量添加用户脚本(shell和python实现)

"""
编写一个脚本,批量添加20个用户,用户名例如:user01到user20,用户名的密码是user+5个随机的字符,将用户名和密码保存到一个文件,文件为/lianxi/username_passwd.txt,保存格式如下:
    user01 --》userabcd3
    user02 --》userhjcd9
"""

###########随机取数的模块(python)实现################
>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
######################

#!/bin/bash

>username_passwd.txt

# 20个用户
for i in $(seq -w 20)
do
	if id user$i >/dev/null ;then
		echo "user$1 exists"
	else
		# 新家用户
		useradd user$1
		# 获得密码
		r_strings=echo user$1|md5sum|cut -c -5
		# 拼接密码字符串,然后给用户设置密码
		echo user$r_strings|passwd user$i --stdin  &>/dev/null
		echo "user$i   user$r_strings "   >>username_passwd.txt
	fi
done

############################
# python中实现运行shell命令的代码
import subprocess 
import random
# 我们可以核心代码用shell写,然后用python来运行
subprocess.run("bash creat_userv2.sh",shell=True)


#####随机生成一串字符,并且随机取n个数###########

>>> import string
>>> str = string.printable
>>> import random
>>> random.choices(str,k=5)
['t', '1', '2', 'v', '#']
>>> ''.join(random.choices(str,k=5))
'c(z]f'

######################在linux中使用python的代码
import subprocess
import random
import string

def add_user(num):
	#输入判断
	if (isinstance(num, str) and num.isdigit()) or isinstance(num, int):
		num = int(num)
	else:
		raise ValueError('num参数必须是合法整数!')
	with open('username_passwd','a+',encoding='utf-8') as f:
		for i in range(num):
			username = f"user{i}"
			# 随机从字符串中取5个字符,然后拼接
			passwd = f'user{"".join(random.choices(string.printable, k=5))}'
			subprocess.run('useradd %s &>/dev/null' % username,shell=True)
			subprocess.run('echo %s | passwd --stdin %s &>/dev/null' % (passwd,username), shell=True)
			f.write(f'用户:{username}  密码:{passwd}\n')
num = input('请输入需要的数量:')
add_user(num)

#####################

5.2.1、subprocess的返回值

>>> a = subprocess.run('mkdir abc',shell=True)
>>> a.returncode
0
>>> a = subprocess.run('mkdir abc',shell=True)
mkdir: 无法创建目录"abc": 文件已存在
>>> a.returncode
1

6、组

存放在"/etc/group"

组账号:1、主要组(私有组),放在"/etc/passwd"文件的第四个字段定义;2、次要组(附属组),放在"/etc/group"文件的第四个字段

 图片解释:-G,指定次要组

6.1、有效组

有效组:新建文件或者文件夹的时候使用的gid,gid使用的哪个组,哪个组就是有效组。

切换有效组(newgrp),用户只有属于多个组才能够切换,且用户只能够有一个有效组,gid对应的组。

🍓[查看组中有哪些成员]🍓

[root@fttsaxf script]# cat group_member.sh 
#!/bin/bash

group_name=$1
# $3和$4这个组的gid和它为附属组的成员
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
group_lst=($group_msg)
group_id=${group_lst[0]}
group_user_1=${group_lst[1]}
group_user_2=`awk -F: -v group_id=$group_id '$4==group_id{print $1}' /etc/passwd| tr "\n" ","`
echo $group_user_2$group_user_1

6.2、gpasswd

 6.2.1、gpasswd -a和usermod -G的区别

 gpasswd可以将一个用户添加到很多组里,usermod只能是一个次要组,不能很多次要组

6.3、/etc/login.defs 文件

对帐户初始的属性设置,设置普通用户的UID和GID范围等

了解即可,一般不用修改这个文件。

# 下面是挑选出一些内容进行讲解
#QMAIL_DIR  Maildir  # 定义用户的邮箱位置
MAIL_DIR    /var/spool/mail

"""
定义了一些东西,定义了邮箱,密码日期,长度等;是否创建家目录;密码加密的算法;删除用户的时候,如果对应的组没有成员了,将这个组也删除。
"""

6.4、总结练习

#第一题:
[root@fttsaxf ~]# groupadd mingjiao
[root@fttsaxf ~]# groupadd tiandihui

#第二题:
[root@fttsaxf ~]# gpasswd -a zhangwuji mingjiao
正在将用户“zhangwuji”加入到“mingjiao”组中
[root@fttsaxf ~]# id zhangwuji
uid=7789(zhangwuji) gid=7789(zhangwuji) 组=7789(zhangwuji),1017(mingjiao)
#第三题:

#第四题:
[root@fttsaxf ~]# useradd linghuchong -g mingjiao -G tiandihui
[root@fttsaxf ~]# id linghuchong
uid=7790(linghuchong) gid=1017(mingjiao) 组=1017(mingjiao),1018(tiandihui)

#第五题:
#⭐⭐任何字符串在单引号中都是只是一个符号,没有特殊作用,"!"有特殊作用。
[root@fttsaxf ~]# echo '123!@cali' | passwd  linghuchong --stdin
更改用户 linghuchong 的密码 。
passwd:所有的身份验证令牌已经成功更新。

#第六题:
#第七题:
/etc/shadow第二个字段前边加"!";或者修改/etc/passwd为文件,将这个用户的shell改为/sbin/nologin
#第八题:
#第九题:
#第十题:
#直接修改/etc/passwd文件,或者usermod —U
#第十一题:
id()
#第十二题:
# 首先需要新建gaibnag组,指定gid为600 ————》group -g 600 gaibang
# 还要新建 mkdir /hongqigong 父目录,因为taohuadao需要新建在这个目录下,如果父目录不存在会报错,导致新建的用户没有家目录
[root@fttsaxf ~]# useradd qiaofeng -c "qiaobang master" -s 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值