1. linux用户
linux操作系统时多任务、多用户的分时操作系统。用户为我们登录linux系统中的账号权限,每当我们需要登录linux系统时,系统会对我们登录的用户账号权限进行认证、授权审计等等的操作。
在linux系统中用户分为:系统用户和普通用户,其中普通用户分为系统用户和登录用户。除了上述用户,默认系统中还存在着一个超级管理员root,其用户标识即UID为0,具体有系统中最高的管理权限,注意用户标识是每个用户的唯一标识。
- 系统用户:为了让后台进程和服务类进程能够以非管理员身份运行,通常需要为此创建多个普通用户,此类用户不需要登录到系统中。UID范围:1-499(centos6),1-999(centos7)。
- 普通用户:正常登录及访问系统时需要登录的用户账号。UID范围为:500+(centos6),1000+(centos7)。
用户信息
linux系统中用户的登录信息存储在/etc/passwd 中,其显示格式为:
name:password:UID:GID:GECOS:directory:shell
name:用户登录的名字;
password:为用户加密的密码,如果显示为字符x,则表示密码存储在/etc/shadow文件中;
UID:用户标识;
GID:用户所属基本组的组标识;
GECOS:备注信息;
directory:用户的家目录;
shell:用户的默认shell;
对于password列中显示x字符的用户,其对应的密码信息会存储在/etc/shadow中,其存储格式为:
登录名:加密了的密码:最后一次更改密码的日期:密码的最小年龄:最大密码年龄:密码警告时间段:密码禁用期:账户过期日期:保留字段
在/etc/shadow中密码的存储格式为:单向加密,并借此于随机数salt完成。
在用户登录时,系统会将用户输入的账号密码与保存在/etc/passwd和/etc/shadow中的信息进行核对,以此来判断用户的权限。
# head -n 1 /etc/shadow
root:$6$5hqjvxV8NH2lUlBF$dW93.q.sEwyK/JKcdB.evVUACFs2ktGQnsD08cAwo1TIo8GGOb7LyhoLx/OC9iaB9qLiW5mZjr4sOijGbOrUu0::0:99999:7:::
如上述例子,加密的密码使用$符号分隔,第一个段的数字表示使用的加密算法,第二个段表示添加的salt串,第三个段表示加密后的密码。
加密算法包括:
1:md5
2:sha1
3:sha224
4:sha256
5:sha384
6:sha512
注意:密码在加密过程中存在着雪崩效应,即初始条件的微小变动,将会引起结果的巨大变化。
2. linux用户组
在linux系统中每个用户都分别属于对应的用户组。Linux系统的用户组分为
- 系统组,root,GID为0;
- 普通组,GID为1-65535;
而普通组又分为系统组和非系统组,我们通常所说的普通组一般即指非系统组。 - 系统组:GID为1-499(centos6),1-999(centos7);
- 非系统组:GID为500+(centos6),1000+(centos7);
对于一个用户而言可以有多个不同的组,除了用户的基本组之外,其余的为用户的附加组。基本组组名一般情况下与用户名相同,一个基本组有且只有一个用户的话,这类组叫私有组,为某一用户所私有。基本组以外的组属于用户的附加组或者额外组。
用户组信息
与linux用户组信息相关的文件包括:/etc/group,/etc/gshadow
用户存储在/etc/group里面的信息格式为:
group_name:password:GID:user_list
group_name:用户组的名字;
password:加密的用户组密码;
GID:用户组标识;
user_list:以此组为附加组的用户列表;
3. Linux用户及用户组的管理命令
useradd:
命令格式:
useradd [option]
作用:用于创建一个新用户或更新默认新用户的信息。
常用选项:
-d,--home:创建新用户,并指定用户的家目录为对应的家目录。
-m,--create-home:如指定的家目录不存在,则创建家目录;
-g,--gid:指定用户的主组的GID,主组需事先创建。
-G:指定用户的附加组ID;
-r,--system:创建一个系统账户;
-s,--shell:指定用户登录的默认shell;
-u,--uid:指定用户的UID值,此值必须为唯一的;
-M:不创建用户主目录;
-D:当useradd仅带-D选项时,会显示当前useradd的默认值,配合相应的选项可更改对应的默认值。
使用实例:
创建并指定用户家目录:
#useradd -m -d /Jone Jone
#ls
bin charlie dev ftp Jone lib64 mnt proc run srv tmp var
boot counter etc home lib media opt root sbin sys usr
指定用户UID,指定用户主组和附加组:
]# useradd -u 1200 -g 1005 -G federo,Jone Williom
]# id Williom
uid=1200(Williom) gid=1005(charlie) 组=1005(charlie),1002(federo),1007(Jone)
userdel:
命令格式:
userdel [option] [username]
作用:删除用户账户或相关文件,给出的用户名必须存在,默认情况下删除用户并不会把用户的家目录和邮件目录一并删除。
常用选项:
-r,--remove:将用户的家目录和用户邮箱一并删除。
使用实例:
删除用户及其家目录:
#userdel -r charlie2
#ls /home/charlie2
ls: 无法访问/home/charlie2: 没有那个文件或目录
groupadd:
命令格式:
groupadd [option]
作用:结合命令提供信息和系统默认信息创建新的用户组。
常用选项:
-g:指定创建的用户组的GID;
-p,--password:设置用户组密码;
-r:创建一个系统组;
使用实例:
创建新的用户组,并指定GID为666:
#groupadd -g 666 newgroup
# tail -n 5 /etc/group
counter:x:1004:
charlie:x:1005:
charlie2:x:1006:
Jone:x:1007:Williom
newgroup:x:666:
groudel:
命令格式:
groupdel [options]
作用:用于删除一个用户组,在移除用户组之前需确保用户组不包含用户。
常用选项:
-h,--help:显示帮助信息并退出;
使用案例:
删除用户组:
# groupdel federo
passwd:
命令格式:
passwd [option] [username]
作用:用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
常用选项:
-d:删除用户密码;
-e:立即让用户的密码过期,用户在重新登录后需更改密码;
-l:锁定指定用户;
-u:解锁指定用户;
-n mindays:指定密码最短使用期限;
-x maxdays:指定密码最大使用期限;
-w warndays:提前多少天开始告警;
-i inactivedays:非活动期限;
--stdin:从标准输入接收用户密码;
使用实例:
锁定指定用户:
# passwd -l fedora
锁定用户 fedora 的密码 。
passwd: 操作成功
指定用户密码的最短使用期限:
# passwd -n 365 fedora
调整用户密码老化数据fedora。
passwd: 操作成功
从标准输入读取用户密码:
# echo "helloworld" | passwd --stdin fedora
更改用户 fedora 的密码 。
passwd:所有的身份验证令牌已经成功更新。
gpasswd:
命令格式:
gpasswd [option] group
作用:gpasswd可用于将用户添加至指定的组中或将用户从指定的组中删除,如果不跟任何选项,可为指定的用户组设置组密码。
常用选项:
-a USER:将USER加入到指定的组中;
-d USER:将USER从指定的组中删除;
-A USERLIST:设置拥有组管理权限的用户列表;
-r:移除用户组密码;
使用实例:
将fedora加入用户组root:
[root@localhost ~]# gpasswd -a fedora root
正在将用户“fedora”加入到“root”组中
[root@localhost ~]# id fedora
uid=1100(fedora) gid=1003(fedora) 组=1003(fedora),0(root),982(mariadb),5000(mageedu)
为用户组fedora设置组密码:
[root@localhost ~]# gpasswd fedora
id:
命令格式:
id [options]...[username]
作用:显示指定用户的相关的用户信息,包括UID,GID等;如果没有提供username给id命令,则id 命令默认显示当前工作用户的用户信息。
常用选项:
-g:仅显示主组ID;
-G:显示该用户所在所有用户组的GID;
-u:显示指定用户的UID;
-Z:显示指定用户的安全上下文;
使用实例:
查询指定用户的用户信息:
#id charlie
uid=1004(charlie) gid=1005(charlie) 组=1005(charlie)
su:
命令格式:
su [options...] [-] [user [args...]]
作用:用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
常用选项:
-c:执行完指定的指令后,恢复原来的用户身份;
-,-l,--login:模拟真实登录,相关环境变量也会切换到对应用户的环境变量,登录式切换;
使用实例:
变更账号为charlie并执行id指令后退出:
#su -c id charlie
uid=1004(charlie) gid=1005(charlie) 组=1005(charlie) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
#id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
newgrp:
命令格式:
newgrp [-] [group]
作用:临时切换基本组,如果用户不属于指定的基本组,则需要输入组密码才可以完成切换;- 可实现登录式切换,变更环境变量。
使用实例:
切换至root组:
[fedora@localhost ~]$ newgrp - root
密码:
[fedora@localhost ~]$ id
uid=1100(fedora) gid=0(root) 组=0(root),982(mariadb),1003(fedora),5000(mageedu) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
usermod:
命令格式:
usermod [选项] 登录
作用:修改用户的基本信息;
常用选项:
-a, --append:将用户添加到附加组。只能和 -G 选项一起使用;
-u:指定新的UID;
-g:指定新的GID;
-G GROUP1,GROUP2... :指定新的附加组,注意,会覆盖原来的附加组,若需要保留原有的附加组,需同时使用-a进行追加;
-s:用于指定新的默认shell;
-d:用于指定新的家目录,原有的家目录文件不会移动至新的家目录,若需要移动到新的家目录,需要同时使用-m选项;
-l:指定新的用户名;
-L:锁定指定的用户;
-U:解锁新的用户;
-e:指定用户账号过期日期,日期格式为:YYYY-MM-DD;
-f:指定用户过期后,距离用户被彻底禁用的天数,0表示用户过期后立即禁用,-1表示不使用这个功能;
使用实例:
指定用户新的UID为1100:
[root@localhost ~]# usermod -u 1100 fedora
[root@localhost ~]# id fedora
uid=1100(fedora) gid=1003(fedora) 组=1003(fedora),5000(mageedu)
为指定用户追加附加组mariadb:
[root@localhost ~]# usermod -a -G mariadb fedora
[root@localhost ~]# id fedora
uid=1100(fedora) gid=1003(fedora) 组=1003(fedora),982(mariadb),5000(mageedu)
锁定用户fedora:
[root@localhost ~]# usermod -L fedora
groupmod:
命令格式:
group [option]
描述:用于更改组的相关信息;
常用选项:
-g GID:更改组的GID;
-n:更改组的名字;
常用实例:
更改fedora组的GID为1111:
[root@localhost ~]# groupmod -g 1111 fedora
[root@localhost ~]# id -g fedora
1111
更改fedora组的名字为centos:
[root@localhost ~]# id fedora
uid=1100(fedora) gid=1111(centos) 组=1111(centos),982(mariadb),5000(mageedu)