1.使用者标识符:UID和GID
Linux在登入的时候主机并不会直接认识你的【账号名称】,它仅认识ID(一组数字);账户对应的ID存储在etc/passwd中; 每个登入的使用者至少会取得两个ID,一个为使用者(User ID,简写UID),一个为群组ID(Group ID,简称GID)
2.使用者账号
[root@admin ~]# head -n 4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
范例:
root:x:0:0:root:/root:/bin/bash
- root:账号名称
- x:密码‘
- 0:uid
- 0:gid
- root:用户信息说明栏
- /root:家目录
- /bin/bash:shell
- /etc/shadow文件结构
密码有效日期为『更新日期(第3字段)』+『重新变更日期(第5字段)』
[root@admin ~]# head -n 1/etc/shadow
lisi:$1$dD3gZf7X$eSGOJ9KExPwuS80LGgKV2.:18828:0:99999:7:::
范例:
lisi:$1$dD3gZf7X$eSGOJ9KExPwuS80LGgKV2.:18828:0:99999:7:::
- 账号名称:list
- 密码:
1
1
1dD3gZf7X$eSGOJ9KExPwuS80LGgKV2
- 改动密码的日期:18828(从1970年1月1日到现在的天数)
- 密码不可更动的天数:0 (近一次被更改后需要经过几天才可以再被变更)
- 密码需要重新变更的天数:99999 (强制要求用户变更密码,必须在这个天数内更改自己密码)
必须要在这个天数内重新设定你的密码,否则这个账号的密码将会『变为过期特性』 - 密码需要变更期限前的警告天数:7
- 密码过期后账号的宽限时间:
如果密码过期了,你重新登录后需要重新设定密码才能继续使用 如果没有在宽限时间内更改密码,则这个账户的密码将会失效 - 账号失效的日期:使用1970年以来的总天数设定
账号在此字段规定的日期之后,将无法再使用(不论密码是否过期) 若直接写数字,则为密码后期后的几天后失效 例如:网易云年续费 - 保留(功能还没有做出来,以后待定)
例子:
dmtsai:$6$M4IphgNP2TmlXaSS$B418YFroYxxmm....:16559:5:60:7:5:16679:
————————————————————————————————————————————————————————————————————
dmtsai : 账号
$6$M4IphgNP2TmlXaSS$B418YFroYxxmm.... :密码
16559 : 密码变更的时间
5 :密码不可改变的天数
60 : 密码需要重新更改的天数
7 : 密码需要变更前的警告天数
5 : 密码过期后账号的宽限时间
16679 : 密码的失效日期
[root@study ~]# head -n 4 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
范例:
root:x:0:dmtsai,alex
组名:root 群组密码:x GID:0 此群组支持的账号名称:dmtsai;alex
3.账号管理
3.1.新增和移除用户:useradd,相关配置文件,passwd,usermod,userdel
[root@study ~]# useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM]\ > [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名
选项加参数:
- -u:后面接UID,一组数字。指定账户的UID
- -g:后面接组名设定初始群组(initial group);GID会放置到/etc/passwd第四个字段中
- -G:后面接组名,添加用户的附加群组,若单独添加会把之前所有附加群组覆盖,所以要配合-a使用
- -M:强制!不建立用户家目录(系统账号默认值)
- -m:强制!建立用户家目录(一般账号默认值)
- -c:后面接“说明文字”,再/etc/passswd的第5号字段
- -d:后面接家目录绝对路径,设置家目录(使用绝对路径)
- -r:建立一个系统账号
- -s:后面接一个shell,若没有设定便是/bin/bash
- -e:后面接一个日期[YYYY-MM–DD]此项目写入/etc/shadow第八个字段,设定账户的失效日期
- -f:密码过期后的宽限时间,或为密码是否会失效。0为立刻失效,-1为永远不失效(密码只会过期再在登录时强制修改)
范例: 添加一个新用户,使新用户的UID为1500,并将user1指定为他的初始群组: 使用grep 后面接关键字 搜索目录
[root@admin ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird2:x:1500:1004::/home/vbird2:/bin/bash
/etc/shadow:vbird2:!!:18835:0:99999:7:::
可以使用 useradd -D 查看参考文档
[root@admin ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
GROUP:新建账号的初始群组使用GID,但Centos创建时会创建一个与账户名相同的群组 私有群组: 系统会建立一个与账号一样的群组给使用者作为初始群组。 这种群组的设定机制会比较有保密性,这是因为使用者都有自己的群组,这个机制将不会参考GROUP=100这个参数
公有群组: 使得每个创建的账户都属于users这个群组
HOME=/home:用户家目录的基准目录(basedir) INACTIVE=-1:密码过期后是否会失效的设定值 EXPIRE=:账号失效的日期 /etc/shadow的第八字段 SHELL=/bin/bash:默认使用的 shell 程序文件名 SKEL=/etc/skel:用户家目录参考基准目录 用户在创建家目录时会参考的目录,再里面增添新目录/etc/skel/www之后创建的用户的家目录都会带着这个新目录就会有 www CREATE_MAIL_SPOOL=yes:建立使用者的 mailbox
passwd:更改账户的密码
写法: 第一种:
passwd [--stdin] [账号名称]
或
echo "123456" | passwd [--stdin] [账号名称]
第二种:
passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root 功能
选项与参数:
- –stdin:直接来修改账户的密码
- -l:是Lock的意思,会在/etc/passwd会在第二栏上加上!使密码失效
- -u:是Unlock
- -S :列出密码相关参数
- -n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
- -x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
- -w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
-i :后面接『日期』,shadow 的第 7 字段,密码失效日期 (密码过期后的宽限时间);或者写数字,为该数字天数后失效
范例1: 使用root管理员给vbird2密码:
[root@admin ~]# passwd vbird2
更改用户 vbird2 的密码 。
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
范例2: 切换到vbird2用户后使用passwd更改密码: 直接输入passwd后不接用户则为修改当前用户密码
[vbird2@admin root]$ passwd
更改用户 vbird2 的密码 。
为 vbird2 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 这个密码和原来的相同
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新
范例3: 使用–stdin设置密码: 方法一
[root@admin ~]# passwd --stdin vbird2
更改用户 vbird2 的密码 。
123456789
方法二:
[root@admin ~]# echo "BunnyDuudu" | passwd --stdin vbird2
更改用户 vbird2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建一个用户的流程:
- 使用useradd添加用户
- 再用passwd更改用户密码
chage:更详细的密码参数显示
写法: chage [-ldEImMW] 账号名 相关数据和参数: -l:列出账户详细的密码参数 -d:后面接日期,修改/etc/shadow(最近一次更改密码的日期)第三字段,格式YYYY-MM-DD -m:后面接天数,修改/etc/shadow第四字段,密码在该天数内不可更改 -M:后面接天数,修改/etc/shadow(密码多久需要必须进行变更,不然会过期)第五字段 -w:后面接天数,修改/etc/shadow(密码过期前的警告日期)第六个字段 -I:后面接天数,修改/etc/shadow(密码过期后的宽限日期)第七个字段 -E:后面接日期,修改/etc/shadow(账号失效日)第八个字段
范例1: 将账户vbird2的更改密码日期变为2021-07-26
[root@admin ~]# chage -d 2021-07-26 vbird2
[root@admin ~]# chage -l vbird2
最近一次密码修改时间 :7月 26, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
usermod:账号相关数据的微调
写法: usermod [-cdegGlsuLU] username 选项和参数: -c:后面接账号说明,即/etc/passwd的第五个字段 -d:后面接账号的家目录,即/etc/passwd的第六个字段 -e:后面接日期,YYYY–MM–DD,即/etc/shadow的制定失效日期字段(-1为永远不过期) -f:后面接天数,即/etc/shadow的第七个字段,密码过期后的宽限时间 -g:后面接初始群组,修改/etc/passwd的第四个字段GID -G:后面接附加群组,修改了/etc/group,修改这个使用者支持的群组,单独使用会把之前的所有附加组覆盖 -a:与-G混合使用,会把之前的群组保留 -l:后面接账号名称,即修改该账号的名称,/etc/passwd的第一字段 -s:后面接shell的实际文件,例如/bin/bash -u:后面接UID数字,即/etc/passwd第三栏账户ID(UID) -L:冻结用户 -U:解冻用户
范例1:更改vbird2用户的账号说明字段
[root@admin ~]# grep vbird2 /etc/passwd
vbird2:x:1500:1004::/home/vbird2:/bin/bash
[root@admin ~]# usermod -c "Bunny is best" vbird2
[root@admin ~]# grep vbird2 /etc/passwd
vbird2:x:1500:1004:Bunny is best:/home/vbird2:/bin/bash
范例2:将vbird2用户的账号设为2021-08-21号过期
[root@admin ~]# usermod -e 2021-08-20 vbird2
[root@admin ~]# chage -l vbird2
最近一次密码修改时间 :7月 26, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :8月 20, 2021
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
**userdel **:
写法: userdel [-r] username
选项和参数: -r:连同用户的家目录一起删除
范例1:删除vbird2的家目录和本身
[root@admin ~]# userdel -r vbird2
3.2使用者账号
id:id这个指令可以查询账户的相关信息
写法: id [username] 范例:
[root@admin ~]# id vbird2
uid=1500(vbird2) gid=1004(user1) 组=1004(user1)
chsh:改变账户的shell
写法: chsh [-ls]
选项与参数: -l:列出系统上可用的shell,其实就是/etc/shells的内容 -s:设定修改自己的shell
范例1:
[root@admin ~]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
范例2:
[root@admin ~]# chsh -s /bin/csh vbird2
Changing shell for vbird2.
Shell changed.
[root@admin ~]# grep vbird2 /etc/passwd
vbird2:x:1500:1004:Bunny is best:/home/vbird2:/bin/csh
3.3 新增和移除群组
groupadd:新增群组
写法: groupadd [-g GID] [-r] 组名
选项与参数: -g:后面接GID,用来直接给予账户GID -r:建立系统群组!
范例1: 创建群组,名称为group1
[root@admin ~]# groupadd group1
[root@admin ~]# grep group1 /etc/group
group1:x:1007:
groupmod:更改group当中的参数
写法: groupmod [-g gid] [-n group_name] 群组名
选项与参数: -g:修改现有的群组的GID数字 -n:修改群组的名字
范例1: 将现有群组group1更名为mygroup1,GID更为201
[root@admin ~]# groupmod -g 201 -n mygroup1 group1
[root@admin ~]# grep group1 /etc/group
mygroup1:x:201:
groupdel:将群组删除
写法: groupdel [groupname]
gpasswd:群组管理员功能
写法:
[root@study ~]# gpasswd groupname
[root@study ~]# gpasswd [-A user1,...] [-M user3,...] groupname
[root@study ~]# gpasswd [-rR] groupname
选项与参数: :没有任何参数时表示为groupname设一个密码(/etc/gshadow) -A:后面接user(用户),表示将groupname的控制权交给user -M:后面接user1,user2,表示将user1和user2放入groupname -r:将groupname的密码移除 -R:让groupname的密码栏失效
[someone@study ~]$ gpasswd [-ad] user groupname
选项与参数: -a:将某位成员加入到 groupname 这个群组当中 -d:将某位成员移除出groupname这个群组当中
范例1: 将vbird2作为群组mygroup1的另一个管理员
[root@admin ~]# gpasswd -A vbird2 mygroup1
[root@admin ~]# grep mygroup1 /etc/group /etc/gshadow
/etc/group:mygroup1:x:201:
/etc/gshadow:mygroup1:$6$VljPUTolOQiuiv2$q/tm6QFX6al7fNVSh4A93OZEpSc0sB8AyVAOyIH4/x3Y9cRwKlio/L/Nr7s24x9an3ShnFDV0TZrl3.A8KknD0:vbird2:
3.4 使用者身份切换
su:最简单的身份切换
写法: su [-lm] [-c 指令] [username]
范例一: 切换Danboard用户,再退出
[root@admin ~]# su Danboard
[Danboard@admin root]$ exit
exit
退出到的是切换前的用户
重点例题:
例题1: 例题2: 重点:如何让用户无法登入系统
- usermod -s /sbin/nologin 用户名
- 在/etc/passwd内第二字段,在密码前增加一个*号,账号就无法登入
- 在/etc/passwd的第八字段,设定一个小于目前日期的数字,便无法登入系统
例题3:在创建用户时自动在家目录中加入一个名称为www的子目录 例题4: 例题5: useradd -c :添加说明字段 useradd -g:添加初始群组 useradd -G:添加附加群组
|