linux系统—用户和用户组
一、用户和用户组的概念
用户:使用操作系统的人 用户组:具有相同系统权限的一组用户。在linux系统中可以存在多个用户组
查看所有用户可以cat一下
cat /etc/passwd
查看所有用户组可以cat一下
cat /etc/group
1.1 /etc/group
这里存储当前系统中所有用户组的信息
每一行对应一个用户组,每一个用户组分成4段,每一段都用一个 冒号 来连接。
组密码占位符:用户有登录密码,用户组也有一个登录密码
组编号:每一个用户组都有一个独立的编号
组中用户名列表:当用户名与组名称是相同的时候,可以省略用户名
组号0一定是root用户,组号1-499属于系统预留的组编号,一般来说是预留给安装在操作系统中的软件或者服务的(一般是把未被使用的最小组号分配给安装的软件或者服务)。
用户手动创建的用户组编号是从500开始。把大于等于500的最小组号分配给用户手动创建爱你的用户组
组密码占位符一律用x
1.2 /etc/gshadow
存储当前系统中用户组的密码信息。
每一行都与group文件中对应
组密码为 * 或为空 或为 !的时候,都认为uzu的密码为空,即没有密码。
组管理者即是哪些用户可以管理这个用户组,若为空,则为所有用户都可以管理用户组
1.3 /etc/passwd
存储当前系统中所有用户的信息
每一行对应一个用户的信息
1.4 /etc/shadow
存储当前系统中所有用户的密码信息
二、用户和用户组命令
2.1 用户组命令
2.2.1 创建用户组——groupadd
groupadd 用户组名:创建一个用户组
可以看见,创建了一个编号为 1001 的用户组 hand
同时创建用户组和编号
groupadd -g 888 test
2.1.2 修改组名称——groupmod
groupmod -n 新组名称 原组名称
-n 表示修改用户组的名称
2.1.3 修改组编号——groupmod
groupmod -g 修改的组编号 组名称
2.1.4 删除用户组——groupdel
groupdel 用户组名
在删除用户之前,必须先删除用户组中的用户,否则处在用户组中的用户关于用户组的信息就无法跟组对应上,就变成了系统中的黑户,就会受到权限上的限制。
2.1.5 给用户组设定密码
gpasswd 用户组
2.2 用户命令
2.2.1 创建用户——useradd
先创建一个用户组:groupadd hand
创建用户:useradd -g 用户组名 用户名
创建用户的时候通过 -d 参数指定用户的个人文件夹
useradd -d /home/xxx hand4
若是没有创建用户个人文件夹,系统会在指定目录中创建个人文件夹
2.2.2 给用户添加注释——usermod
usermod -c 注释 用户名
2.2.3 修改用户名
usermod -l 新用户名 旧用户名
指定新的个人文件夹
2.2.4 修个一个用户的所属用户组
usermod -g 目标用户组名 用户名
2.2.5 删除用户——userdel
userdel 用户名
这种删除并不会删除用户的个人文件夹里面的文件夹
userdel -r 用户名
可以删除个人用户以及个人用户文件夹
2.2.6 禁止除了root账号以外的其他账户登录服务器
创建一个nologin空文件即可达到效果
touch /etc/nologin
2.2.7 锁定账户——passwd
passwd -l 用户名
2.2.8 解锁账户——passwd
passwd -u 账户名
2.2.9 使账户无密码登陆:清除账户的密码
passwd -d 用户名
三、主要组与附属组
用户可以同时属于多个组 一个主要组 多个附属组
3.1 将用户添加进/删除另一个组中(即添加进附属组)
gpasswd -a 用户名 其他组名
若一次添加多个用户组,可以将组名用 逗号 隔开来一次添加多个附属组。
将用户从附属组中删除:
gpasswd -d 用户名 其他组名
3.2 将身份切换到附属组
当一个用户属于多个用户组的时候,用户创建的文件默认情况下属于它的主要组。如果要以附属组组员的身份来创建一个文件,需要把身份临时切换到附属组中去。用户需要自己的用户模式下执行,不能在root权限下。
newgrp 附属组名称
3.3 创建爱你用户的时候即指定主要组,也指定附属组
useradd -g 主要组 -G 附属组
多个附属组用逗号连接
四、Linux中用户管理其他命令
4.1 切换用户
把当前用户切换到其他用户
su 切换的用户名
4.2 Whoami 显示当前登陆用户名
4.3 id 用户名
显示指定用户信息,包括用户编号、用户名
主要组编号及名称,附属组列表
4.4 给用户设置密码
passwd <username>
4.5 usermod 命令详解示例
-c<备注> 修改用户帐号的备注文字。-d登入目录> 修改用户登入时的目录。-e<有效期限> 修改帐号的有效期限。-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。-g<群组> 修改用户所属的群组。-G<群组> 修改用户所属的附加群组。-l<帐号名称> 修改用户帐号名称。-L 锁定用户密码,使密码无效。-s<shell> 修改用户登入后所使用的shell。-u<uid> 修改用户ID。-U 解除密码锁定。-a 加入到其他组 并保留原来的组
五、权限详解(rwx/+x/755/644)
1.1 八进制权限表示 ,例如022
在Linux中,文件权限通常使用三位八进制数表示,每一位代表一组用户的权限。这三组用户分别是文件所有者(owner)、所属组(group)和其他用户(others)。每一位数字的范围是0到7,分别代表不同的权限组合:
0 表示没有任何权限。
1 表示只有执行权限。
2 表示只有写权限。
4 表示只有读权限。
这些数字可以组合起来,例如:
3 (1+2) 表示有执行和写权限。
5 (4+1) 表示有读和执行权限。
6 (4+2) 表示有读和写权限。
7 (4+2+1) 表示有读、写和执行权限。
如下图为744权限:
chmod 744 xhfapi.sh

1.2 解释:proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
1.用户名: proxy
这是用户账户的名称。在这个例子中,用户名是 proxy。
2.密码: x
这个字段通常包含用户的加密密码。然而,在现代系统中,密码通常不直接存储在这个文件中,而是存储在 /etc/shadow 文件中,这个文件有更严格的权限控制。在 /etc/passwd 文件中,密码字段通常被设置为 x 表示密码被存储在 /etc/shadow 文件中。
3.用户ID (UID): 13
每个用户都有一个唯一的数字标识符,称为用户ID。在这个例子中,proxy 用户的 UID 是 13。
4.组ID (GID): 13
每个用户都属于一个主要的用户组。组ID(GID)是这个主要组的数字标识符。在这个例子中,proxy 用户的主要组ID也是 13。
5.用户全名或描述: proxy
这个字段通常用于存储用户的全名或者对用户的描述。在这个例子中,它简单地重复了用户名 proxy。
6.家目录: /bin
这是用户登录时的初始目录。对于 proxy 用户,家目录被设置为 /bin。这是不寻常的,因为大多数用户的家目录通常是在 /home 目录下的一个子目录。可能这个设置是为了特定的安全或操作需求。
7.登录Shell: /usr/sbin/nologin
登录Shell是用户登录后系统启动的程序。/usr/sbin/nologin 表示这个账户不能用于常规登录。任何尝试登录到这个账户的用户都会收到一条消息,通常是 “This account is currently not available.”,然后登录会话结束。这通常用于那些需要存在于系统中但不应被直接登录的服务账户。
更改ftpuser的登录shell:
usermod -s /bin/false ftpuser或者:usermod -s /bin/bash ftpuser # 允许登录grep ftpuser /etc/passwd登录验证:su - ftpuser # 此时当当前用户为root时执行,则不需要输入ftpuser的密码退出ftpuser的命令是:logout
1.3 /usr/sbin/nologin 和 /bin/false 的区别
/usr/sbin/nologin /usr/sbin/nologin 是专门设计用来阻止用户登录的程序。当尝试以一个设置了 /usr/sbin/nologin 作为登录 shell 的用户身份登录时,该程序会显示一条消息(通常是 “This account is currently not available.”),然后结束登录会话。这个消息可以通过编辑 /etc/nologin.txt 文件来自定义。
这种方法的优点是它提供了一个明确的、用户友好的消息,说明为什么登录尝试被拒绝。这使得 /usr/sbin/nologin 成为禁止用户登录的首选方法,尤其是在有多个系统管理员和需要清晰审计的环境中。
/bin/false /bin/false 是一个什么也不做、总是返回失败状态的命令。当它被用作用户的登录 shell 时,任何登录尝试都会立即结束,因为 /bin/false 立即退出并返回一个非零值(表示失败)。
