passwd文件
/etc/passwd 存放着用户的GID,UID,家目录的路径,注释信息,以及使用的对应的shell
该文件的每一行都代表着一个系统存在的用户
Root用户的UID为:0
系统的用户账号的UID:1--999
普通用户的UID:1000--60000
与UID类似,GID的号码分配与UID也是一样的。同样分为Root组,系统组,普通组,器各自的号码分配也是一样。
cat /etc/shell 可以查看系统提供的shell
用户相关细节
默认用户创建的时候,就会创建对应用户名的用户组。且该用户的基本组即为该组
id 用户名:可以查看该用户的UID,GID,以及附加组的ID
当我们将passwd中的用户使用的shell修改为/sbin/nologin或者/usr/sbin/nologin将用户的shell改为不可登录的shell的时候,就不能使用该用户进行服务器的登录
shadow文件
里面存放着用户的密码信息,但是其密码都是根据加密算法进行加密,然后进行存放。
echo ‘111’|md5sum:可以将111使用md5算法进行加密并输出
在shadow里面的用户密码信息时使用sha512算法,如:
$6$yUYLFmzpSnSNSPRP$2QQCOG4dIm/FnM3B/Lktt9dShtzjXWenWiX.HEbFHCJuqCepDoqhB8eag4Ka3KRmuo8g9W/agYA7QkDY4lpv3
其密码结构使用$符号隔开,第一个部分是6,代表该加密算法是sha512,第二部分是在以用户密码为基础,加上一些随机的数字,并进行sha512进行加密,这就使得即使用户的密码相同,其在shadow中密码信息也是不会相同。
密码信息后面的一个部分是密码被修改的时间,但是它是以从1970年到现在,以其修改密码的日期与1970年相差的天数作为记录。
shadow文件的每一列的格式
用户名 | 密码 | 最后的修改时间 | 最小的修改时间间隔 | 密码有效期 | 密码需要变更前的警告天数 | 密码过期后的宽限天数 | 账号失效时间 |
用户创建
在用户创建之后,会在passwd文件中添加该用户的相关信息,同时也会在shadow中添加该用户的相关信息。
我们在家目录下,也会创建对应用户名的家目录,以及与用户名相同的组,组信息存放在/etc/group的文件中。gshadow是存放组的密码的文本文件。
/ect/skel目录是所有家目录的模板,家目录的目录就是将模板目录复制过来。
用户创建的相关命令(useradd)
useradd name 创建指定用户
-u UID 指定用户的UID
-d 路径 指定用户的家目录,但是这个家目录事先不能存在,如果该目录以及存在,则/ect/skel模板将不会复制到该目录中。即该用户的家目录是空的。
-g 指定用户的基本组,一但在创建用户的时候,指定用户的基本组,则我们就不会创建于该用户名同名的组。
-G 指定用户的附加组,若仅仅指定附加组,创建用户之后,依然会创建对应用户名的组
-e xxxx-xx-xx 指定账户的失效时间,当我们设置了失效时间之后,在shadow文件中关于该用户的结尾会出现一个数值,其代表着账户的失效日期到1970年的天数。
caca:!!:18858:0:99999:7::18910:
如上的18910,18858是账户的创建时间,而18910是失效时间,因为我设置的是2021年10月10日失效,而创建该用户的日期是2021年8月19日,总共差距是52天,加上18858刚好是18910.
-M 表示不创建该用户的家目录
-s /sbin/nologin 指定用户的shell
一般来说-M和-s选项是于ftp相结合,ftp用户不能登录服务器,也创建对应的家目录,但是只需要通过ftp的验证可以上传下载文件即可。
密码设置的命令(passwd命令)
linux不允许空密码登录
passwd 用户名: 代表设置用户的密码,只有root用户才能设置其他用户的密码。普通用户只能设置自己的密码。普通用户输入passwd即可修改自己的密码,普通用户修i该密码的时候必须严格符合linux的密码要求,而root用户设置密码却没有这么多的要求。
passwd -d 用户名 :代表删除用户的密码。我们同样可以在shadow文件中将用户对应的密码信息删除,即可清除密码。
passwd -l 用户名 将用户锁定。该命令其实是在shadow文件中在用户的密码信息的头部加上两个感叹号,以此来表示该用户已被锁定
passwd -u 用户名 将用户解锁,该命令于-l 选项做的是相反的操作
passwd -n number 用户名 设置用户修改密码的最短时长,也就是最短需要多少天才能修改密码
passwd -x number 用户名 设置用户密码的失效时长
passwd -w number 用户名 设置距离失效日期多久发出警告
passwd -i number 用户名 设置账户还有多久会被禁用
echo 111 | passwd --stdin 用户名 表示用户创建的密码不使用键盘的标准输入。采用左边的那种形式创建用户就可以减少用户的交互,实现自动化的用户创建
su - 用户名 切换用户目录,如果我们直接使用su 用户名,也就是不加上横杆,那么切换 到其他用户之后,所使用的系统环境依然是切换前的用户。
在使用passwd命令对用户的密码进行操作的时候,若加上了-n -x -w -i 其中任意一个选项,都会在shadow文件中关于某个该用户的那一行添加对应的数值。
我们可以使用passwd -S 用户名的方式查看对应的信息,
nb PS 2021-08-19 11 22 33 44,如左边所示,用户名为nb,创建时间是2021-8-19 ,最短的密码修改间隔是11天,密码失效时间是22天,距离密码失效前33天警告,44天后该账户禁用
密码复杂度设置
CentOS7密码复杂度配置 - 夜信。 - 博客园 (cnblogs.com)
用户删除 (userdel)
userdel -r 用户名:将用户以及对应的家目录和邮件池删除
用户属性的修改(usermod)
usermod -m -d 路径 用户名:修改用户的家目录
-m代表将要改变用户的家目录,-d代表重新指定用户的家目录
usermod -l new old 修改用户的用户名 (-l的英语是login)
usermod -u newuid 用户名:修改用户UID
usermod -g 新基本组 用户名 修改用户的基本组
usermod -G 新附加组 用户名 将该用户原有所有的附加组清除,并将该语句中的附加组作为该用户唯一的附加组。若需要不删除的添加附加组,则需要在该语句中添加“-a”选项,该选项的英文名为(append附加的意思)
usermod -L 用户名:锁定用户
usermod -U 用户名:解锁用户
group文件
group文件里面的每一行的组成都由四个部分
1、组名
2、组密码
3、GID
4、该组的成员
组的创建(groupadd)
groupadd name 创建组
groupadd -g GID name 指定该组的GID,并创建该组
组的删除(groupdel)
groupdel group :删除组,如果要删除的组时某些用户的基本组,则需要删除这些用户才能删除组
组成员的添加与删除(gpasswd)
gpasswd的命令原本是对组进行密码的设置,但是一般使用时时用来在组中添加成员或者删除成员。
gpasswd -a member group :将成员添加到组中
gpasswd -d member group :将成员从组中删除
/etc/login.defs该文件用来配置创建用户账号时的默认设置,比如UID,GID,账号的过期时间,是否创建用户家目录等等
内容如下:
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes:是否删除用户之后,删除同名的用户组
ENCRYPT_METHOD SHA512
其实整个文件的内容一目了然。