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 给用户设置密码

  1. passwd <username>

4.5 usermod 命令详解示例

  1. -c<备注>  修改用户帐号的备注文字。
  2. -d登入目录>  修改用户登入时的目录。
  3. -e<有效期限>  修改帐号的有效期限。
  4. -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
  5. -g<群组>  修改用户所属的群组。
  6. -G<群组>  修改用户所属的附加群组。
  7. -l<帐号名称>  修改用户帐号名称。
  8. -L  锁定用户密码,使密码无效。
  9. -s<shell>  修改用户登入后所使用的shell
  10. -u<uid>  修改用户ID
  11. -U  解除密码锁定。
  12. -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权限:

  1. chmod 744 xhfapi.sh

linux系统--用户和用户组一、用户和用户组的概 - 图1

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:
  1. usermod -s /bin/false ftpuser
  2. 或者:usermod -s /bin/bash ftpuser # 允许登录
  3. grep ftpuser /etc/passwd
  4. 登录验证:su - ftpuser # 此时当当前用户为root时执行,则不需要输入ftpuser的密码
  5. 退出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 立即退出并返回一个非零值(表示失败)。