Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
2. /etc/passwd
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。
getent passwd [username] 查看用户passwd的命令
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段。
使用getent passwdmagedu可以查看magedu的passwd中信息
其格式和具体含义如下:
用户名:密码:用户标识号UID:组标识号GID:注释性描述:家目录:登录Shell
用户名:
密码位:x
因为passwd这个文件任何用户都能访问,所以将密码存在里面不安全,一般这一位都是x:
pwconv (默认)将密码映射到了/etc/shadow
pwunconv 此命令将密码保存到/etc/passwd中,删除/etc/shadow文件
UID:
CentOS6 1-499为系统用户,预留
CentOS71-999为系统用户,预留
GID:
主要组:每个有且仅有一个主要组,当用户创建时,自动创建一个与用户同名的组作为主要组。
辅助组:用户可以有零个或多个辅助组。
描述位:
chfn username 设置用户的描述
finger username (默认没有安装) 查看用户的信息
家目录:
usermod -d /home/magedunew magedu 修改用户家目录
默认的登录Shell:
usermod -s /sbin/nologinmagedu
chsh -s /sbin/nologin magedu 都可以修改magedu的shell
如果要禁止某个用户登录,可以将它最后一位改为/sbin/nologin
3. /etc/shadow
只有root能访问
getent shadow [username] 查看用户shadow信息
同样,使用getent shadow magedu可以查看magedu的shadow中信息
其各位含义为:
用户名:
密码位:sha512 sha256md5 $id$salt$password
authconfig --passalgo=sha256 --update
!!:用户被锁定
usermod -L 锁定用户
usermod -U 解锁用户 -p password
密码上一次的修改日期:(从1970-1-1到修改的时间经过了多少天来表示)
密码最小存活期:(指的是两次修改口令之间所需的最小天数)
密码最大存活期:(指的是口令保持有效的最大天数)
密码过期之前提前多少天提醒用户:(在正确登录时)
密码过期之后多少天帐户过期:(在正确登录时)
帐户过期时间:(自1970-1-1到该天经过了多少天来表示)
保留位:(还没被开发出来)
chage -l username 显示帐户的密码信息
-d 指定密码的上次修改时间(yyyy-mm-dd)
-d 0 则强制用户下次登录时必须修改密码
-E 指定账户的过期时间
I 密码过期之后多少天帐户过期
-m 设置最小存活时间
-M 设置最大存活时间
-W 设置密码过期前的提醒时间
chage username 交互式修改用户的密码策略
4. /etc/group
getent group [groupname]
分为以下四位:
groupname:组名
密码位:x
gid:
CentOS6 1-499为系统组,预留
CentOS7 1-999为系统组,预留
组成员:将该组作为辅助组的成员列表。当成员先把该组当作辅助组,再转成主要组时,不改变。当成员离开该组时,被删除。
首先使用groupmems -g group -a username将指定成员加入指定组中。
如图,将lky加入magedu组,使用id可以看到lky为lky的主组,magedu为附加组。
使用usermod -g groupname username 修改用户的主组,将lky的主组改成magedu
组成员没有改变。
我们再将主组改回lky,删除附加组,此时才消失。因为该成员已经离开该组。
5. /etc/gshadow
getent gshadow [groupname]
groupname:组名
密码位:
gpasswd groupname设置组密码
newgrp groupname(普通用户)
当用户不是该groupname的辅助组成员时,则需要输入密码,成功后临时以主要组的身份加入该组。
当用户是该groupname的辅助组成员时,无需输入密码,将临时以主要组的身份加入该组,而其原有的主要组,临时变为辅助组。
管理员:只能由root任命或撤销,可以同时有多名,以,为间隔。权利:可以修改组密码,可以将用户从该组(辅助组)当中添加或删除。
任命 gpasswd -A username1,username2 groupname
撤消所有管理员:gpasswd -A "" groupname
gpasswd -a libai admin 往组中增加用户
gpasswd -d libai admin 将用户从组中删除
gpasswd -r admin 删除组密码
gpasswd -R admin 限制非辅助组用户可以通过newgrp admin获取主组权限。当前密码被删除替换为!
gpasswd -M redhat,libai admin 设置辅助组的成员列表。
groupmems:
groupmems -g admin -a libai 将指定成员加入指定组中(仅能一次加一个用户到组中)
groupmems -g admin -d libai 将指定成员从组中删除
groupmems -g admin -l 列出指定组的成员列表(辅助组)
groupmems -p admin 消除指定组的所有成员。
组成员:将该组作为辅助组的成员列表。当成员先把该组当作辅助组,再转成主要组时,不改变。当成员离开该组时,被删除。
6.创建用户删除用户
useradd 创建一个新用户
-u uid username 创建用户时指定uid(如不指定则Centos:500-60000, Centos7: 1000-60000)
-o -u uid username 创建用户时指定uid(可以与已存在用户的uid相同)
-g groupname username 创建用户时指定主组为某个已存在的组。(将不会再创建与用户同名的组)
-c... username 创建用户时指定描述信息。
chfn... username
-d path username 指定用户的家目录(确保指定的家目录所在的上级目录要存在,且家目录本身不能存在)
-s/sbin/nologin username 指定用户的默认shell
-G group1[,group2] username 指定用户的辅助组(附加组)
-N username 设置用户的主要组为默认组(users,gid=100)
如图,使用上述方法创建了一个新用户keke
创建用户时会有默认值,默认值的信息存放在/etc/default/useradd 文件中。
由此可以看出,默认组为100,家目录默认在home下,默认shell为/bin/csh 等信息。
删除用户userdel[-r] username
一般都加上-r,可以连同其家目录,mail一同删除
7.修改用户信息usermod
usermod -u newuid username 修改用户的UID
-o -u newuid username 修改用户的uid(可以与已存在用户的uid相同
-a G 加组名,可以追加辅助组而不用覆盖之前的组
-G "" username 或 usermod -G primarygroup username 清空用户所有的辅助组
-g groupname username 修改用户的主组
-s /sbin/nologin username 修改用户的默认shell
-c... username 修改用户时指定描述信息。
chfn... username
-d /.../path username 修改用户的家目录(不会创建,只修改/etc/passwd当中的家目录信息)
-m -d /.../path username 修改用户的家目录信息,并将家目录移动到目的目录并改名。
如图,使用上述方式修改部分信息
-l newname oldname 修改用户名
-L 给用户/etc/shadow中的密码位加!使用户被锁定
-U 把!拿掉。
-e yyyy-mm-dd 设置一个帐户过期时间
-f days 指定密码过期之后多少天帐户过期
文件编辑:
vipw = vim /etc/passwd 编辑passwd中内容
vipw -s = vim /etc/shadow 编辑shadow中内容
vigr = vim /etc/group 编辑group中内容
vigr -s = vim /etc/gshadow 编辑gshadow中内容
(输入:q退出)
pwck检查用户密码文件的完整性/etc/passwd /etc/shadow
grpck检查用户组及密码文件的完整性/etc/group /etc/gshadow
8.查看用户相关的ID信息
id username
-u 显示UID
-un 显示UID名称
-g 显示GID
-gn 显示GID名称
-G 显示用户所数组的ID
-Gn 显示用户所数组的名称
9.用户切换
su (switch user用户切换)
su username 非登录式切换,即不会读取目标用户的部分配置文件,不改变当前工作目录
su - username 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
su [-] username -c 'command' 换个身份执行命令,不登录
如图,可以直接临时换成natasha用户的身份执行命令
10.设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码(或chage -d 0)
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码(就是设置密码时,密码会显示出来)
echo "PASSWORD" | passwd--stdin USERNAME 因此也可以使用管道将密码传输过去,如图,将xinmima作为新的密码设置成了natasha的密码。
11.组
groupadd 创建组
-g gid groupname 创建指定gid的组
-r groupname 创建系统组
groupmod 修改组
-n newgrpname oldgrpname 修改组名
-g newgid groupname 修改gid
groupdel groupname 删除组
groups username 查看指定用户属于哪些组
***重点总结***
groupmems -g groupname -l 查看组里有哪些人
groups username 查看一个人属于哪些组
***重点总结***