在Linux下,允许同时多个用户访问操作系统,许多拥有共同权限的用户构成了一个用户组。

用户组

所有的用户组信息都存在: /etc/group文件中,每一条记录代表一个用户组

示例:用 cat命令查看 cat /etc/group

_sandbox:*:60:
localaccounts:*:61:
netaccounts:*:62:

group 一行信息分成四段,含义如下:

netaccounts:*:62:
组名称:组密码占位符:组编号:组中用户名列表

当我们查看到用户名列表为空的时候,不能够判断该组不存在用户,当用户名与组名相同时,且只有一个用户的时候,可以省略用户名称

root组号一定为0,组编号1-499为系统预留给安装的软件和服务的组号

组密码占位符全部以X代替

/etc/gshadow中存放当前系统用户组的密码信息,与/etc/group对应

示例:

stapusr:!::
stapsys:!::
stapdev:!::

也是以四段进行区分,含义:

组名称:组密码:组管理者:组用户列表

组密码如果为*,!或者空的时候可以认为没有组密码

/etc/passwd存放用户的所有信息

示例:

_astris:*:245:245:Astris Services:/var/db/astris:/usr/bin/false
_krbfast:*:246:-2:Kerberos FAST Account:/var/empty:/usr/bin/false

含义:

用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型

/etc/shadow存放所有用户的密码信息

示例:

ldap:!!:16669::::::
mysql:!!:16669::::::

也是被分为七段

含义:

用户名:密码:::::

常用用户组命令:

用户组添加:groupadd test
用户组重命名:groupmod -n newtest test
组编号修改:groupmod -g 600 newtest
创建用户组并指定组编号:groupadd -g 700 vtest
删除用户组:groupdel newtest // 删除用户组前最好先删除组用户

常用用户命令:

添加用户并指定用户组:useradd -g test testname
添加用户并指定用户的文件夹:useradd -d /home/mtest vtest  //如果不指定默认在/home目录下建同名的文件目录
添加用户的备注:usermod -c userinfobak username
修改用户名其它任何信息不变:usermod -l newname name
改变用户的用户组:usermod -g groupname username
用户删除(不删除用户目录/home/下的文件):userdel username
删除用户并删除用户目录文件:userdel -r username
强制删除用户并删除用户目录文件:userdel -rf username
禁止除root用户以外的所有用户登录:touch /etc/nologin  // 并不需要文件内容,有文件即可

高级命令:

锁定用户不允许登录,相当于手动修改 /etc/shadow 文件中用户密码前加入 !! 双感叹号:passwd -l username
解锁用户:passwd -u username
锁定用户,不允许登录,相当于手动修改 /etc/shadow 文件中用户密码前加入 ! 一个感叹号:usermod -L username
解锁用户:usermod -U username
用户无密码登录:passwd -d username
给用户添加附属组:gpasswd -a username newgroupname  //用户有多个用户组时一个时主要组其它都是附属组
切换到附属组,用户创建的文件将属于附属组:newgrp groupname [group passwd]
删除附属组:gpasswd -d username groupname
添加用户并指定主要组附属组:useradd -g groupname(主要组) -G groupname1,groupname2(附属组) username

其它常用命令:

切换到其它用户身份:su username  //切换到root可直接输入su
查看用户信息(用户名称,编号,主要组,附属组): id username
显示用户所在的用户组:groups username
显示用户的详细信息:finger username
查看当前用户名称:whoami
查看当前的在线用户、终端号、IP、登录时间:who
查看在线的用户的用户名,用户数:who -qho -q