linux-用户与权限管理-用户管理

Linux 用户与权限管理 —— 用户管理详解

在Linux系统中,用户管理和权限控制是保证系统安全和资源有效利用的基础。用户管理涉及到创建用户、删除用户、修改用户属性、用户组管理等内容。

1. Linux 用户体系概述

在Linux系统中,所有操作都与用户相关联。用户可以是人、进程或系统程序,操作系统通过用户身份来进行权限和资源的分配。Linux系统将用户分为以下几类:

  1. 超级用户(Superuser):通常是root用户,拥有系统的最高权限,能够执行所有操作。
  2. 普通用户(Regular Users):普通用户拥有自己的权限范围,无法进行涉及系统核心的操作(如修改系统配置、安装软件等)。
  3. 系统用户(System Users):系统为系统进程或服务创建的用户,通常不用于登录。例如,nobodywww-data等。

每个用户在Linux系统中有唯一的用户ID(UID),通过UID来识别和管理用户。

1.1 用户的文件结构

  • /etc/passwd:该文件存储用户的基本信息,包括用户名、UID、GID、主目录、登录shell等。
  • /etc/shadow:该文件存储用户的密码和账户相关信息。
  • /etc/group:该文件存储用户组信息,定义用户所属的组及用户组的权限。

1.2 用户ID和组ID

  • UID(User ID):唯一标识一个用户。系统中的root用户的UID为0,普通用户的UID从1000或500开始(视系统配置而定)。
  • GID(Group ID):唯一标识一个用户组,类似于UID

2. 用户管理相关命令

2.1 添加用户

在Linux中,useradd命令用于创建新的用户账户。基本语法如下:

useradd [选项] 用户名
2.1.1 创建新用户
$ sudo useradd newuser

默认情况下,useradd命令会在/etc/passwd中为用户生成基本的信息,并在/home目录下创建用户的主目录/home/newuser。但请注意,默认情况下,新创建的用户不会有密码,用户不能登录,除非为其设置密码。

2.1.2 为用户设置密码

使用passwd命令为用户设置密码:

$ sudo passwd newuser

系统会提示输入并确认密码。密码设置完成后,用户newuser即可登录。

2.1.3 常用选项

useradd命令有一些常用选项可以用于自定义用户的属性:

  • -m:为用户创建主目录。
  • -d:指定用户的主目录。
  • -s:指定用户的默认shell。
  • -g:指定用户的主组。
  • -G:为用户指定附加组。
  • -u:指定用户的UID。

示例:

$ sudo useradd -m -d /custom/home/newuser -s /bin/bash -g users -G sudo newuser

此命令为用户newuser指定了主目录/custom/home/newuser、登录shell为/bin/bash,并将其添加到主组users及附加组sudo

2.2 修改用户信息

使用usermod命令可以修改用户的各种信息,如用户的组、主目录、shell等。

usermod [选项] 用户名
2.2.1 常用选项
  • -l 新用户名:修改用户名。
  • -d 目录:修改用户主目录。
  • -g 组名:修改用户的主组。
  • -G 组名列表:修改用户所属的附加组。
  • -s shell:修改用户登录时使用的shell。

示例:

  1. 修改用户的登录shell:
$ sudo usermod -s /bin/zsh newuser
  1. 修改用户主目录:
$ sudo usermod -d /new/home/directory newuser

2.3 删除用户

使用userdel命令可以删除用户账户。基本语法如下:

userdel [选项] 用户名
2.3.1 删除用户
$ sudo userdel newuser

此命令只会删除用户账户,不会删除用户的主目录及文件。

2.3.2 删除用户及其主目录

如果想删除用户账户及其主目录,可以使用-r选项:

$ sudo userdel -r newuser

2.4 查看用户信息

使用id命令查看用户的UID、GID及其所属的组:

id [用户名]

示例:

$ id newuser
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser),27(sudo)
  • uid=1001(newuser):表示用户newuser的UID是1001。
  • gid=1001(newuser):表示用户newuser的主组ID是1001。
  • groups=1001(newuser),27(sudo):表示用户newuser属于两个组,分别是newuser组和sudo组。

3. 用户组管理

3.1 创建用户组

使用groupadd命令可以创建新的用户组。基本语法如下:

groupadd [选项] 组名

示例:

$ sudo groupadd newgroup

此命令创建了一个名为newgroup的新用户组。

3.2 删除用户组

使用groupdel命令可以删除用户组:

$ sudo groupdel newgroup

注意:删除用户组时,确保该组内没有用户,否则系统会报错。

3.3 修改用户组

groupmod命令用于修改用户组的信息,如更改组名或GID。

groupmod [选项] 组名
3.3.1 修改组名
$ sudo groupmod -n newgroupname oldgroupname

此命令将oldgroupname组的名字修改为newgroupname

3.4 将用户添加到组

使用usermod命令可以将用户添加到一个或多个组中。

  • 为用户newuser添加到newgroup组:
$ sudo usermod -aG newgroup newuser

其中,-a选项表示追加附加组(不覆盖现有的组),-G指定组名。

  • 将用户newuser从所有附加组中移除,并只将其加入newgroup组:
$ sudo usermod -G newgroup newuser

3.5 查看组信息

使用groups命令可以查看用户所属的组:

$ groups 用户名

示例:

$ groups newuser
newuser : newuser sudo newgroup

表示用户newuser属于newusersudonewgroup三个组。

4. 用户与组的配置文件

4.1 /etc/passwd 文件

/etc/passwd文件存储了系统中所有用户的信息。每个用户的记录格式如下:

用户名:密码占位符:UID:GID:用户信息:主目录:登录shell

示例:

newuser:x:1001:1001::/home/newuser:/bin/bash

解释:

  • newuser:用户名。
  • x:密码占位符(实际密码存储在/etc/shadow中)。
  • 1001:用户的UID。
  • 1001:用户的GID。
  • :::用户信息(可选)。
  • /home/newuser:用户的主目录。
  • /bin/bash:用户的登录shell。

4.2 /etc/shadow 文件

/etc/shadow文件存储了用户的密码及其账户相关信息。该文件的权限非常严格,只有超级用户可以读取。每条记录格式如下:

用户名:加密密码:最近一次修改日期:最小密码修改天数:最大密码有效天数:警告天数:密码失效天数:账号失效天数

示例:

newuser:$6$randomsalt$hashedpassword:18721:0:99999:7:::
``

`

解释:

- `newuser`:用户名。
- `$6$randomsalt$hashedpassword`:加密后的密码。
- `18721`:最近一次修改密码的日期(自1970年1月1日起的天数)。
- `0`:最小密码修改天数。
- `99999`:最大密码有效天数。
- `7`:密码过期前的警告天数。

### 4.3 `/etc/group` 文件

`/etc/group`文件存储了系统中所有用户组的信息。每个组的记录格式如下:

```bash
组名:密码占位符:GID:组成员列表

示例:

sudo:x:27:newuser

解释:

  • sudo:组名。
  • x:密码占位符。
  • 27:组的GID。
  • newuser:组成员。

5. 总结

Linux用户管理是系统管理中的一个重要部分,涉及到用户和用户组的创建、修改、删除及权限分配。通过使用useraddusermoduserdel等命令,可以高效地管理系统中的用户账户。用户组的管理也通过groupaddgroupmod等命令来实现,从而使系统的权限控制更加细致和灵活。

你可能感兴趣的:(linux,运维,服务器)