内容不全正在学习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加密)