一、3个配置文件
- /etc/passwd:记录Linux上所有的账户信息
- /etc/shadow:记录了账户对应密码信息
- /etc/group:记录了所有的组信息
其中,账户和组名是给人看的,UID和GID是给系统看的,通过id命令可以查看当前账号对应的uid和gid信息。
当使用ls-l命令查看文件时,系统会根据/etc/passwd和/etc/group文件的内容,找到uid和gid对应的账号名称和组名称进行显示。
如果随意修改了/etc/passwd和/etc/group下的uid和gid的时候会导致原本文件对应的uid和gid在配置文件中查找不到,那么通过ls-l命令查看的拥有者和所属组就会以uid和gid来显示.
通过id命令可以查看当前操作账号的uid和gid:
编辑/etc/passwd修改uid和编辑/etc/group修改gid后再次查看文件和目录显示拥有者和所属组此时显示的就是uid和gid了,因为uid=500在/etc/passwd中找不到对应关系,同理gid在/etc/gruop中也没有找到对应关系.
/etc/passwd
该配置文件记录每一条信息就是一个账户的信息,以root账户为例
根据分号划分,一共包含7部分:
- root:用户名
- x:早期这个部分放的是用户的登录密码,现在密码放入了/etc/shadow中了
- UID:0表示系统管理员,1-999保留给系统使用的id,1000以上给一般使用者
- GID:0表示系统管理员,1-999保留给系统使用的id,1000以上给一般使用者.
- root:使用者的信息说明
- /root:用户的家目录,普通账户默认是在/home目录下的
- /bin/bash:该账户可以使用shell,如果不能使用shell,则会显示/sbin/nologin
/etc/shadow
该配置文件记录的是账户的密码信息,以root账户为例
根据分号划分,一共包含9部分:
-
root:用户名
-
一大串字符:经过加密后的密码
-
最近更改过密码的天数:17804,此天数是从1970年1月1日起累计的
-
密码不能修改的天数:0表示随时都可以修改
-
密码重置的天数:99999天后需要重置密码,修改该值,可以强制用户修改密码
-
密码需要变更的的警告天数:7表示7天内系统会向用户发出警告
-
密码到期后,账号还可以继续使用的天数
-
账号失效的日期:也是从1970年1月1日起累计,到时间后,无论密码是否过期,该账户都不能使用
-
保留
/etc/group
改配置文件保存的是用户组的信息,以guest组为例
根据分号一共分为4部分: -
guest:组名
-
x:组密码,一般不需要
-
600:GID
-
包含的账户
通过对配置文件的修改可以达到用户管理的效果,但是操作起来比较麻烦,容易出错,不建议这样做,通常都是使用命令的方式来操作的。
二、3个命令操作用户的增删改
- useradd:增加账号
- usermod:修改账号
- userdel:删除账号
useradd
- -u:设置UID
- -g:设置主要组,如果不设置,系统则会创建一个跟用户同名的组
- -G:设置附加组
- -c:设置用户说明
- -m : 自动创建用户家目录
- -d:指定用户家目录
- -s:指定shell
- -e:账号失效日期,格式为:YYYY-MM-DD
- -f:指定密码是否失效,0表示立即失效,1表示永远不失效
如果不使用上面的任何参数的话,使用useradd命令默认会执行以下操作
- 在/etc/passwd下建立相关资料
- 在/etc/shadow下建立相关资料
- 在/etc/group中写入和账号名一样的组
- 在/home下创建和账号名一样的家目录
例如:
useradd test01 -u 1001 -g root -G guest -c 测试账号01 -d /home/test01 -s /bin/hash -e 2018-12-12 -f 0
usermod
- -c:修改账号说明
- -d:修改家目录
- -g:修改主要组
- -G:修改附加组
- -a:与-G一起使用,增加附属组
- -l:修改用户名
- -u:修改UID
- -L:冻结账号
- -U:解冻账号
例如:
usermod -L test01
如果要通过-G指定多个附属组,则需要同逗号来分割多个组,例如下面是将tom账户同时添加sudo和dev作为附属组的操作
userdel
删一个账号,默认会删除/etc/passwd、/etc/group、/etc/shadown中的对应信息,但是如果要连同家目录和邮箱目录(/var/spool/mail/username)一起删除,则需要使用-r参数,例如:
userdel -r test01
三、密码操作
passwd
用于设置与账号密码相关的操作
- -l:锁住该账号,在/etc/shadow中放密码的位置前加个!符号.
- -u:解锁
- -S:显示账号的密码参数
- -n:接天数,设置多久内不能修改密码,0表示随时可以修改
- -x:接天数,设置多久后必须要修改密码(密码重置的天数)
- -w:接天数,设置密码过期前警告的天数
- -i:接天数,设置密码过期后还可以继续使用的天数
上面通过参数设置的天数,最终是对应到/etc/shadow文件里面显示的天数的
chage
用于修改和密码有关的时间参数
- -m:设置多久内不能修改密码。0代表任何时候都可以更改密码。
- -M:设置多久后必须要修改密码(密码重置的天数)
- -W:用户密码到期前,提前收到警告信息的天数。
- -E:帐号到期的日期。过了这天,此帐号将不可用。
- -d:上一次更改的日期。
- -I(大写的i):停滞时期(密码过期后还可以继续使用的天数)。如果一个密码已过期这些天,那么此密码将失效。
- -l(小写的L):例出当前的设置。
查看详情
修改最近一次更改密码的时间和账号失效时间
其中,密码失效时间和密码重置时间会根据上一次修改密码的时间来变化。账号失效时间不受影响。
修改密码过期后5天密码失效:
四、组管理
- groupadd : 添加组
- groupdel : 删除组
- chgrp : 修改组
添加和删除命令都是在后面加组名称即可,例如:
添加一个dev的组
删除dev组
修改组
格式 : chgrp [参数] 组名 目录/文件名
例如当前桌面上有个test文件,所属组及其子文件的所属组都是python这个组
如果要将其修改为dev组 ,可以这么操作 ,首先得创建dev这个组,然后再修改test目录的所属组
这样test目录的所属组就改成了dev了, 如果我还想将test目录内的所有文件的所属组都一起改了也是可以的,通过参数 -R 来完成,例如
五、查看用户信息
- id :查看用户的UID和GID信息, 直接输入id命令查看的就是当前登录的账户的,如果是查看其他账户,则在id后输入账户名
- whoami: 查看当前登录用户的账户名
- who :查看当前所有登录的用户列表
例如:
who命令查看到的日期是该账户最近一次登录的日期,括号内如果是:0则表示在当前系统登录, 如果是ip地址就说明是通过其他终端登录的.