一、用户相关文件说明
在centos系统中,向系统中添加用户时,涉及到如下文件:
·/etc/passwd 用户账号信息保存位置
·/etc/shadow 账号密码保存位置
·/etc/group 群组信息保存位置
·/etc/gshdow 群组密码保存位置
·/home/用户名/ 用户的家目录,新建用户时创建
·/var/spool/mail/用户名 用户的邮箱所在位置,新建用户时,在mail目录下新建与用户名同名的邮件文件
·/etc/skel/ 用户模板目录(家目录中隐藏文件的模板),创建用户家目录时,会将skel目录下的文件复制到用户家目录中
1、用户信息:/etc/passwd
在/etc/passwd文件中,每一行代表一个账号信息。每个账号包含7列信息,每列信息用英文冒号“:”分隔。每列信息含义如下:
说明:在centOS7-8版本中,系统用户的UID号:1-999;普通用户的UID号从1000开始,且普通用户的GID号也是从1000开始设置。
2、密码文件:/etc/shadow
在“/etc/shadow”文件中,每一行代表一个账号的密码信息。每行有9列,每列信息之间用英文冒号(:)隔开。每列信息(即账号密码参数)含义如下:
说明:(1)、密码过期与密码失效不是同一个概念;(2)、查询系统密码加密方式:authconfig --test | grep hashing
3、组文件:/etc/group
组文件中,每一行代表一个群组。每行有4列,每列用冒号“:”隔开,形式如下:组名称:组密码:GID:组成员列表
群组中的相关概念:
· 初始群组:即initial group。在用户文件(/etc/passwd)中,第4列的GID号所代表的群组,
就是用户的初始群组, 即用户登录系统后,立即拥有初始群组的相关权限。
每个用户的初始组只能有一个,一般都是将和用户名相同的组作为用户的初始组。
· 附加组:一个用户除了属于初始组外,还可以加入到其他群组中,即附加组。
将用户加入到附加组中:即将用户的名称写入到“/etc/group”文件中对应组信息中的第4列里。
· 有效群组:用户在新建文件或目录时,新文件或目录所设置的那个群组即为有效群组。
当用户在多个群组中(包括与用户同名的群组)时,用户在新建文件或目录默认情况下,
与用户同名的那个群组为文件的所属组。即有效组为初始群组。
改变有效群组:newgrp命令。newgrp命令作用的是用户会另外以一个shell来提供用户的群组环境,
退出新环境到原本的shell环境输入exit即可。
· 查看用户在哪些群组里:使用groups命令(显示结果的第一个群组为有效群组)。
4、组密码:/etc/gshadow
组密码文件中,每一行代表一个群组。每行有4列,每列以冒号“:”隔开。
说明:若给群组设置组管理员(在/etc/gshadow文件中的第3列添加用户即组管理员),
并设置了组密码,那么群组密码保存在/etc/gshadow文件中的第2列中。
组管理员可以利用该密码管理组成员,即组成员的加入和删除。
使用gpasswd命令设置群组管理员。
二、账号管理
Linux系统中的账号管理一般包括用户的添加、修改、删除、设置密码和群组的添加、删除、修改等操作。
1、用户管理
向系统添加用户时,一般会设置“/etc/passwd”、“/etc/shadow”、“/etc/group”、“/etc/gshadow”文件的内容,
会在“/home/”目录下新建一个与用户同名的目录为用户的家目录,且该目录的权限为700,
也会在“/var/spool/mail/”目录下新建与用户名同名的邮箱文件。
(1)、添加用户:useradd命令 (2)、修改用户:usermod 命令
(3)、删除用户:userdel命令 (4)、设置密码:passwd命令、chage命令
A、添加用户:useradd命令
1)、 useradd命令详解
2)、 useradd命令创建用户时使用的预设值参考的配置文件如下:
a、“/etc/default/useradd”文件:可使用“useradd -D”命令查看该文件内容
私有群组机制:在创建账号时,会建立一个与账号名称同名的群组作为初始群组。
而且家目录权限设定为700,即仅有自己可进入自己的家目录。
公共群组机制:以GROUP=100的设定值即users群组为初始群组。而且家目录的权限设定为755,
即用户间可互相分享家目录内的资源。
b、“/etc/login.defs”文件
· 创建普通用户时设置UID:先取得UID_MIN设定值,再获取/etc/passwd文件的最大UID值,
然后,两者比较并获取它们的最大值,最后,将获取的最大值加1。
· 创建系统用户的UID设置:与设置普通用户的UID方式类似,将SYS_UID_MIN与/etc/passwd文件
的系统账号最大值进行比较后,获取二者中最大值,再加1。
c、“/etc/skel/”目录
useradd命令创建用户时,会自动将“/etc/skel/”模板目录下的所有文件拷贝到新建用户的家目录下。
B、设置密码:passwd命令
useradd新建账户,默认该新建账户是无法登录的。用passwd命令设置密码后才能登录。
· 删除用户的密码:
· 查看用户密码修改的时间:
date -d "1970-01-01 天数 days" # 天数指的是“/etc/shadow”中第3列的值
·“--stdin”选项使用举例:
·设置密码的相关原则:
a、密码不能与账号相同;
b、密码尽量不要选用字典里面会出现的字符;
c、密码长度需要超过8个字符;
d、密码不要使用个人信息,如身份证、手机号、其他电话号码等;
e、密码不要使用简单的关系式,如“1+1=2”,“Iamjack”等;
f、密码尽量使用大小写字符、数字、特殊字符(“$”,“_”,“-”等)的组合。
C、修改密码:chage命令
chage命令可用于修改“/etc/shadow”文件中密码各个日期的值,root用户使用。
· chage命令中常用的功能:用户第一次登录时,强制用户一定要更改密码才能使用
D、修改用户:usermod命令
usermod命令可用于修改与账号相关的信息。如:/etc/passwd文件、/etc/group文件等。
· 常用的功能:附加组中添加用户,或者说将用户加入某个群组
注意:该群组在系统中已存在
E、删除用户:userdel命令
userdel命令的功能是删除用户的相关资料,如
· 用户账号/密码相关参数:/etc/passwd,/etc/shadow
· 用户群组相关参数:/etc/group,/etc/gshadow
· 用户个人档案资料:/home/username,/var/spool/mail/username..
userdel指令的语法:
说明:一般删除用户时,需要加“-r”选项,将用户家目录一并删除。
注意:在删除用户时,一定先要确认该用户在主机上没有任何有关该用户的资料。
即先用“find / -user username”命令查找系统中用户的相关资料。
2、普通用户的相关功能
A、id命令
id命令是用来查询用户自己的相关UID/GID等信息。命令的详细说明如下:
B、chsh命令
chsh即change shell,用于修改用户自己的shell类型。命令常用功能如下:
C、chfn命令
chfn命令设置的信息会保存在“/etc/passwd”文件中的第5列中作为用户的说明信息。
三、群组管理
1、新建群组:groupadd命令
groupadd命令是用于向系统中添加新的群组,即在“/etc/group”和“/etc/gshadow”
文件中添加新的群组。命令的常用功能如下:
2、删除群组:groupdel命令
groupdel命令用于删除系统中的群组,即删除“/etc/group”和“/etc/gshadow”的组。
注意:需要删除的群组不是用户的初始群组,即该群组的GID号不在“/etc/passwd”
文件中的第4列信息中,否则,该群组无法删除。是用户的附加组,删除无影响。
3、修改群组:groupmod命令
groupmod命令用于修改“/etc/group”中的群组信息的。强烈建立不要随意改动GID号,
容易造成系统资源的错乱。
4、群组管理工具:gpasswd命令
gpasswd命令是用来设定群组密码并指定组管理员的,但已很少使用该功能,因为被
sudo命令取代。所以,gpasswd命令主要用于添加用户到群组中或删除群组中的用户,
即向“/etc/group”和“/etc/gshadow”文件中的第4列(附加组)中添加或删除用户。
· 附加组中添加用户或者说将用户加入某个群组的方法总结:
方法一:
方法二: