linux4-用户的管理

文章详细介绍了Linux系统中用户和组的相关文件,包括/etc/passwd、/etc/shadow和/etc/group的内容,以及用户ID(UID)、组ID(GID)的作用。此外,还阐述了如何添加、修改和删除用户,以及如何管理用户密码和账户有效期。同时提到了用户管理的相关命令,如useradd、passwd、usermod和groupadd等。
摘要由CSDN通过智能技术生成

内容不全正在学习ing...........

1.用户相关文件

1)用户信息文件

/etc/passwd

注:系统以ID号来识别用户的

root:x:0:0:root:/root:/bin/bash      

用户名:x:uid:gid:描述:HOME:shell


第一列: 用户名

第二列: 密码位(标记)//即密码占位符,具体内容不在这里

第三列: 用户 ID

0 超级用户 UID。如果用户 UID 为 0,代表这个账号是管理员账号。那 Linux 中 如何把普通用户升级成为管理员呢?就是把其他用户的 UID 修改为 0 就可以了。

1-499 系统用户(伪用户)UID。这些 UID 账号是系统保留给系统用户的 UID,也就是 说 UID 是 1-499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中 1-99 是系统保留的账号,系统自动创建。100-499 是预留给用户创建系统账号的。

500-65535 普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 65535。这些用户足够使用了,但是如果不够也不用害怕,2.6.x 内核以后的 Linux 系统用户 UID 已经 可以支持 2^32这么多了。(但是目前1-499系统用户不够用了,默认500-1000也给了系统用户,现在普通用户是从1000开始的了)

第四列:组 ID GID 添加用户时,如果不指定用户所属的初始组,那么会建立和用户名相同的组

第五列: 用户说明,就是一个用户名的描述

第六列: 用户家目录 ~

第七列: 登录 shell /bin/bash,命令解释器     (shell  相当于一个壳就是个工具 用来控制系统做事情的工具 没有壳就没法和系统交流了这像是bashell的迎宾,你发送正确的命令它能够回复你)

注:默认用户(系统用户)不能删除,删除则对应服务起不来

2) 密码文件

/etc/shadow

root(1):$1$KhnBfFyK$0G/sKHf50fT9fEHA9zr2f0(2):(3):0(4):99999(5):7(6):(7):(8):(9)

第一列: 用户名

第二列: 加密密码 我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用户无法登陆,达到暂时禁止用户登录的效果。

注意:所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录。

第三列: 密码最近更改时间, 从1970 年 1 月 1 日算起到你最近更改密码的日子,按天来算,我的为空,代表创建后就没改过密码。

# 日期转换成时间戳
~]# echo $(( $(date --date="2022-01-01" +%s)/86400+1 ))
18993
​
# 时间戳转换成日期
~]# date -d "1970-01-01 18993 days"

第四列: 两次密码的修改间隔时间,为0代表没有限制。(和第 3 字段相比)//0代表当天可以改密码,如果是5那么必须过5天才能改

第五例: 密码有效期(和第 3 字段相比)//即密码最久要多久改一次,比如电信14天必须改一次密码

第六列: 密码修改到期前的警告天数(和第 5 字段相比)

第七列: 密码过期后的宽限天数(和第 5 字段相比)//也就是所谓的不活动时间,如20即帮你保存20天,20天后系统就给你删除了

第八列: 密码失效时间,这里同样要写时间戳,也就是用 1970 年 1 月 1 日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效无法使用了//也就是比如30,那就是30天体验时间。时间一到账号就不能用了,所谓的体验账号,临时账号

第九列: 保留,还没设计出来,将来可能出来
 

3)组信息文件

/etc/group

root:x:0:root 


第一列: 组名

第二列: 组密码位(不建议添加密码)

第三列: GID//纯数字

第四列: 此组中支持的其他用户.附加组是此组的用户

初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为 初始组

附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组
 

2.用户管理命令

原则:Linux一个用户必须至少属于一个组

唯一标识:UID(编号从0开始的编号,默认最大60000)管理员root的UID:永远为0;普通用户的UID:默认从1000开始

1 )添加用户

手工删除用户

手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。

# 创建一个用户会在一下文件中生成信息
# /etc/passwd  (用户)    
# /etc/shadow (用户密码)  
#/etc/group    (组)
#/etc/gshadow  (组密码)  
#/home/        (用户家目录) /var/spool/mail/  (用户邮箱) 
# 创建用户
~]# useradd ceshi
​
# 查看文件中的用户信息
~]#grep ceshi /etc/passwd  /etc/shadow /etc/group /etc/gshadow
/etc/passwd:ceshi:x:1000:1000::/home/ceshi:/bin/bash
/etc/shadow:ceshi:!!:18993:0:99999:7:::
/etc/group:ceshi:x:1000:
/etc/gshadow:ceshi:!::
~]# ls /home/ /var/spool/mail/
/home/:
ceshi
​
/var/spool/mail/:
ceshi
​
# 删除文件中的用户信息与家目录,和邮件文件
~]# vim -O /etc/passwd  /etc/shadow /etc/group /etc/gshadow
dd 删除ceshi
:wq! 强制保存退出
~]# rm -rf /home/ceshi /var/spool/mail/ceshi 
​
# 测试是否删除(或useradd直接创建成功则成功)
~]# su - ceshi
su: user ceshi does not exist

useradd 命令

~]# useradd 选项 用户名
选项:
-u 550 指定 UID
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组,把当前用户添加到某一个用户的附加组中。
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s 指定shell,如 -s /bin/bash
​
# 直接创建用户
~]# useradd ceshi
# 注:如果时伪用户则不需要创建密码,反之则需创建密码才能登录

useradd 默认值

 

useradd 添加用户时参考的默认值文件主要有两个,分别是/etc/default/useradd 和 /etc/login.defs

1)/etc/default/useradd文件

~]# vim  /etc/default/useradd
# useradd defaults file
GROUP=100 #这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。
HOME=/home #用户家目录
INACTIVE=-1 #这个选项就是密码过期后的宽限天数,也就是/etc/shadow 文件的第七个字段。如果是天数,比 如 10 代表密码过期后 10 天后失效;如果是 0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。
EXPIRE=  #这个选项是密码失效时间,也就是/etc/shadow 文件的第八个字段。也就说用户到达这个日期后 就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效。
SHELL=/bin/bash   # 用户启动程序
SKEL=/etc/skel    # 用户模板位置
CREATE_MAIL_SPOOL=yes  #默认创建邮箱

2)/etc/login.defs

# 这个文件有些注释,把注释 删除掉,文件内容就变成下面这个样子了 
MAIL_DIR        /var/spool/mail 
 
PASS_MAX_DAYS   99999    PASS_MIN_DAYS   0     PASS_MIN_LEN   5    PASS_WARN_AGE   7
# 密码最长有效期            最小有效期               最小长度              最大长度
 
UID_MIN        500        UID_MAX           60000 
# 普通最小用户id            普通最大用户id
 
GID_MIN        500        GID_MAX           60000 
#普通最小组id               普通最大组id
 
CREATE_HOME     yes
# 是否自动创建用户家目录 
 
UMASK           077 
# 这行指定的是建立的用户家目录的默认权限 
 
USERGROUPS_ENAB yes 
# 这行指定的是使用命令 userdel 删除用户时,是否删除用户的初始组,默认是删除
 
ENCRYPT_METHOD SHA512
# 密码加密方式

2)设定密码

passwd命令

设置密码与修改自身密码一致

注:root可以修改任意用户的密码,而其他用户只能修改自己的

# 直接执行passwd,再输入两次密码就行。两次密码必须一致(#交互式设置)
~]# useradd ceshi
~]# passwd ceshi
Changing password for user ceshi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
 
-l :锁定用户,仅root用户可用
-u :解锁,仅root用户可用
--stdin: 可以管道符输出的数据作为用户的密码,主要在批量用户是使用
 
# 示例
~]# ]# passwd -l ceshi
Locking password for user ceshi.
passwd: Success
# 与直接进入配置文件修改一致
~]# cat /etc/shadow
....
ceshi:!!$1$4Y4TYBX6$BXdlIkv0lZCAGXhwsNOh71:18994:0:99999:7:::
 
~]# echo "123" | passwd --stdin ceshi
Changing password for user ceshi.
passwd: all authentication tokens updated successfully.
 
# 用户登录即修改密码
~]# chage -d 0 lamp
# 把密码修改日期归零(shadow第3字段)

 

3 用户信息修改命令

~]#usermod [选项] 用户名 
选项:  
-u UID:  修改用户的 UID  
-d 家目录:  修改用户的家目录。家目录必须写绝对路径  
-c 用户说明: 修改用户的说明信息,就是/etc/passwd 文件的第五个字段  
-g 组名:  修改用户的初始组,就是/etc/passwd 文件的第四个字段  
-G 组名:  修改用户的附加组,其实就是把用户加入其他用户组  
-s shell:  修改用户的登录 Shell。默认是/bin/bash  
-e 日期:  修改用户的失效日期,格式为“YYYY-MM-DD”。/etc/passwd文件的第八个字段  
-L:   临时锁定用户(Lock)  
-U:   解锁用户(Unlock)
-l: 改名     格式    usermod -l newname oldname 
~]# usermod -l 新名 旧名
# 注:linux不建议修改用户名,建议删除用户在创建用户,因为用户修改了但组名及等一些配置是不会改的,及容易把自己绕晕

4 删除用户

~]# userdel [-r] 用户名 
选项:  
-r: 在删除用户的同时删除用户的家目录 
# 注:不加-r则不会删除家目录文件

 

5 切换用户身份与查看用户

 

~]# su [选项] 用户名 
选项:  
-:       选项只使用“-”代表连带用户的环境变量一起切换  
-c 命令: 仅执行一次命令,而不切换用户身份
# 查看是否存在该用户
~]# id 用户
 
# 查看当前用户
~]# whoami

6.组管理命令

作用:方便管理用户

唯一标识:GID(编号从0开始的编号,默认最大60000)组账户的分类:基本组:系统创建与用户同名附加组(从属组):由管理员创建,由管理员进行加入

1 )添加用户组命令

groupadd

~]# groupadd [选项] 组名 
选项:  
-g GID: 指定组 ID 

2 )删除用户组

groupdel

~]#groupdel 组名

3 )把用户添加进组或从组中删除

gpasswd

~]# gpasswd [选项] 组名 
选项:  
-a 用户名: 把用户加入组  
-d 用户名: 把用户从组中删除
-M: 定义组成员用户列表,可设置多个
-A: 定义组管理员列表(把某个用户加入到某个组里当管理)
# 例如:把用户love2添加到love1组中。与usermod类似记一个就好
~]# gpasswd -a love2 love1
Adding user love2 to group love1

4)改变有效组

newgrp

更改当前用户的有效组

举个例子,我们已经有了普通用户 user1,默认会建立 user1 用户组,user1 组是 user1 用户的初始组。我们再把 user1 用户加入 group1 组,那么 group1 组就是 user1 用户的附加组。当 user1 用 户创建文件test1时,test1文件的属组是user1组,因为user1组是user1用户的有效组。通过newgrp 命令就可以把 user1 用户的有效组变成 group1 组,当 user1 用户创建文件 test2 时,就会发现 test2 文件的属组就是 group1 组。 如下

~]# groupadd group1 # 添加组 group1 
~]# gpasswd -a user1 group1 # 把 user1 用户加入 group1 组
Adding user user1 to group group1  
 
~]# su – user1 # 切换成 user1 身份
~]$ touch test1 # 创建文件 test1 
~]$ ll test1 
-rw-rw-r-- 1 user1 user1 0 1 月  14 05:43 test1 #test1 文件的默认属组是 user1 组 
 
~]$ newgrp group1 # 切换 user1 用户的有效组为group1组 
~]$ touch test2 # 创建文件 test2 
~]$ ll test2 
-rw-r--r-- 1 user1 group1 0 1 月  14 05:44 test2 
 
#test2 文件的默认属组是 group1 组
#其实 newgrp 就是切换用户的组身份。

7.设置账户有效期。

1)chage命令的语法格式:

#查看账户信息
chage -l 账户名称
 
 
#修改账户有效期
chage -E  时间  账户名称

2)chage命令示例

## 测试失效
#创建账户
~]# useradd zhangsan
#设置密码
~]# passwd zhangsan
设置账户过期时间 
~]# chage-E 2017-12-31 zhangsan
# 尝试以用户zhangsan重新登录,输入正确的用户名、密码后直接闪退,返回登录页,说明此帐号已失效。

测试是否设置时间成功

# 重设用户zhangsan的属性,将失效时间设为2019-12-31
~]chage -E 2019-12-31 zhangsan
#查看账户年龄信息
~]# chage -l zhangsan
Last password change :May 15,2017
Password expires     :never
Password inactive    :never
Account expires      :Dec
31,2019
Minimum number of days between password change:0
Maximum number of days between password change:99999
Number of days of warning before password expires:7

重设用户zhangsan的属性,将失效时间设为永不过期(数字1为永不过期)

~]# chage -E -1 zhangsan

定义默认有效期(/etc/login.defs这个配置文件,决定了账户密码的默认有效期) 

~]# cat /etc/login.defs
PASS_MAX_DAYS   99999 #密码最长有效期
PASS_MIN_DAYS   0     #密码最短有效期(root可以随便改,0:当天随便改,1:一天之后才能改)
PASS_MIN_LEN    5     #密码最短长度
PASS_WARN_AGE   7     #密码过期前几天提示警告信息
UID_MIN         1000  #UID最小值
UID_MAX         60000 #UID最大值

临时锁定用户zhangsan的账户,使其无法登录,验证效果后解除锁定

## 锁定用户账号
#使用passwd或usermod命令将用户zhangsan的账户锁定。
~]# passwd -l zhangsan #锁定用户账号(lock)
passwd:                # 输入密码无法登录
Login incorrect
 
#查看状态(status)
~]# passwd -S zhangsan
zhangsan LK 2018-02-22 0 99999 7 -1 (密码已被锁定)
 
# 解除对用户zhangsan的锁定
~]# passwd -u zhangsan  # 解锁用户账号(unlock)
passwd:                  #操作成功
 
#查看状态
~]# passwd -S zhangsan
zhangsan PS 2018-08-14 0 99999 7 -1  (密码已设置,使用SHA512加密)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值