用户及用户组管理

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中,其存储格式为:

登录名:加密了的密码:最后一次更改密码的日期:密码的最小年龄:最大密码年龄:密码警告时间段:密码禁用期:账户过期日期:保留字段
用户及用户组管理_第1张图片
密码相关时间理解

在/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)

你可能感兴趣的:(用户及用户组管理)