百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux 用户和组管理功能详解

ahcoder 2025-01-02 14:06 6 浏览

Linux 用户和组管理是系统管理中一个非常重要的部分。Linux 是多用户操作系统,允许多个用户同时使用一个系统。通过用户和组的管理,管理员可以控制对系统资源的访问权限,确保系统的安全性和资源的合理分配。


在 Linux 中,用户(User)是指具有访问权限和身份的个人,而组(Group)是对用户进行分类的方式。组管理允许管理员将多个用户归入同一个组,并对组进行权限分配。以下是 Linux 用户和组管理的功能详解:


### 1. **用户管理**

Linux 中的每个用户都有一个唯一的用户账号(用户名)和一组关联的属性(如 UID、GID、主目录、Shell 等)。用户管理的功能包括创建、删除、修改用户信息和管理用户权限。


#### **创建用户**

使用 `useradd` 命令创建新用户:

```bash

sudo useradd username

```

- `username` 是要创建的用户名。执行后,系统会创建一个新的用户并分配一个默认的主目录(通常是 `/home/username`)。

- `useradd` 命令的其他常用选项:

- `-m`:创建用户的主目录,如果没有指定,则创建默认主目录。

- `-s`:指定用户的默认 Shell。

- `-G`:将用户添加到一个或多个附加组。

- `-d`:指定用户主目录。

- `-e`:指定账号过期日期。

例如,创建一个用户名为 `john` 的用户,并指定其默认 Shell 为 `/bin/bash`:

```bash

sudo useradd -m -s /bin/bash john

```


#### **修改用户**

使用 `usermod` 命令修改用户的属性:

```bash

sudo usermod -aG groupname username

```

- `-aG`:将用户添加到一个或多个组(不会删除其已有的组)。

- `-d`:修改用户的主目录。

- `-s`:修改用户的默认 Shell。


例如,将用户 `john` 添加到组 `sudo`:

```bash

sudo usermod -aG sudo john

```


#### **删除用户**

使用 `userdel` 命令删除用户:

```bash

sudo userdel username

```

- `-r`:删除用户的主目录及其所有文件。


例如,删除用户 `john` 及其主目录:

```bash

sudo userdel -r john

```


#### **查看用户信息**

查看当前系统中的用户信息,可以查看 `/etc/passwd` 文件,其中存储了所有用户的基本信息:

```bash

cat /etc/passwd

```

每行记录表示一个用户,字段包括:

- 用户名

- 用户密码(加密后的密码,通常是 `x` 或 `*`,实际密码存储在 `/etc/shadow`)

- 用户 ID(UID)

- 用户组 ID(GID)

- 用户描述信息

- 用户主目录路径

- 用户默认 Shell


### 2. **组管理**

组(Group)是多个用户的集合。Linux 通过组管理实现资源和权限的共享。每个用户至少属于一个组,用户所属的默认组通常与用户名相同。


#### **创建组**

使用 `groupadd` 命令创建新组:

```bash

sudo groupadd groupname

```

例如,创建一个名为 `developers` 的组:

```bash

sudo groupadd developers

```


#### **修改组**

使用 `groupmod` 命令修改组的属性:

```bash

sudo groupmod -n newgroupname oldgroupname

```

- `-n`:修改组名。


例如,将 `developers` 组重命名为 `devteam`:

```bash

sudo groupmod -n devteam developers

```


#### **删除组**

使用 `groupdel` 命令删除组:

```bash

sudo groupdel groupname

```


#### **查看组信息**

查看当前系统中的组信息,可以查看 `/etc/group` 文件,其中存储了所有组的信息:

```bash

cat /etc/group

```

每行记录表示一个组,字段包括:

- 组名

- 组密码(一般为空)

- 组 ID(GID)

- 组成员(属于该组的用户列表)


### 3. **用户与组的权限管理**

用户和组管理的重要功能之一就是控制访问权限,Linux 使用文件权限(读、写、执行)来管理对文件和目录的访问。每个文件或目录都有三个权限:

- **所有者权限**(Owner):文件或目录的创建者的权限。

- **组权限**(Group):与文件或目录相关联的组的权限。

- **其他权限**(Others):除文件所有者和组外,其他用户的权限。


#### **查看文件权限**

使用 `ls -l` 命令查看文件或目录的权限:

```bash

ls -l filename

```

输出格式:

```

-rwxr-xr--

```

解释:

- 第一列表示文件类型和权限。

- `r` 表示读取权限。

- `w` 表示写入权限。

- `x` 表示执行权限。

- `-` 表示没有该权限。


#### **修改文件权限**

使用 `chmod` 命令修改文件权限:

```bash

sudo chmod permissions filename

```

- `permissions` 可以是符号模式(如 `rwx`)或数字模式(如 `755`)。

- 数字模式:

- `4` 表示读权限(r)

- `2` 表示写权限(w)

- `1` 表示执行权限(x)

- 权限的数字是三个数值的和(所有者、组、其他)。


例如,给文件 `file.txt` 设置所有者可读写,组用户可读,其他用户只可读:

```bash

sudo chmod 644 file.txt

```


#### **修改文件所属用户和组**

使用 `chown` 命令修改文件的所有者和所属组:

```bash

sudo chown owner:group filename

```

例如,将文件 `file.txt` 的所有者改为 `john`,组改为 `developers`:

```bash

sudo chown john:developers file.txt

```


### 4. **用户与组的其他操作**

#### **切换用户**

使用 `su` 或 `sudo` 命令切换到另一个用户:

```bash

su - username

```

或者

```bash

sudo -u username command

```

例如,切换到用户 `john` 的身份:

```bash

sudo -u john ls /home/john

```


#### **查看当前用户所属的组**

使用 `groups` 命令查看当前用户所属的所有组:

```bash

groups

```


#### **查看某个用户所属的组**

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

```bash

id username

```


#### **临时添加用户到组**

使用 `gpasswd` 或 `usermod` 临时将用户加入到某个组:

```bash

sudo usermod -aG groupname username

```

例如,将用户 `john` 加入到 `developers` 组:

```bash

sudo usermod -aG developers john

```


#### **组成员管理**

管理员可以在任何时候将用户添加或移除组,但默认情况下,添加组成员需要注销并重新登录才能生效。


### 总结

Linux 用户和组管理是系统管理员日常管理任务中的重要部分。通过合理的用户和组管理,可以更好地控制系统资源的访问权限和安全性。理解用户和组的创建、修改、删除以及权限设置,是有效管理 Linux 系统的基础。在多用户、多任务的 Linux 系统中,用户和组管理的有效性直接影响到系统的安全性和稳定性。

相关推荐

安装 Debian 10 后要做的30件事(安装debian sid)

1.修复CD-ROM错误仅从DVD安装Debian的用户才需要此修复程序,因为从DVD安装Debian之后,每次尝试更新系统时都会出现错误“存储库cdrom没有发行文件”:要解决此错误,请打开“软...

Linux 的 18 个装 B 命令,记得全部搂一遍

1、sl命令你会看到一辆火车从屏幕右边开往左边……安装$sudoapt-getinstallsl运行$sl命令有-alFe几个选项,-aAnaccidentseemsto...

Fedora 39提高虚拟机max_map_count以满足一些Steam游戏

有一个关于Fedora39提升其默认vm的建议正在进行中。max_map_count,以满足通过Valve的SteamPlay在Linux上运行的一些Windows游戏。Fedora工程和指导委员...

Linux面板,宝塔Linux正式版 7.9.4发布

【增加】增加日志审计功能【增加】增加对7z格式压缩包的支持【增加】数据库增加PgSQL管理模型【增加】通知设置-消息通道增加微信公众号模块【增加】创建网站时增加一键部署【增加】完善首页【安全风险】的扫...

真榨干Switch!NS被刷Linux系统超频成功运行鬼泣5和战神等游戏

NS的性能已经是被玩家吐槽的不想再吐槽了,都希望任天堂快出新机。而任天堂高管之前则表示switch的性能完全是够用的,是玩家和开发者要求太高了!那么具体情况是如何呢?用实际例子告诉大家switch的真...

Slimbook Manjaro游戏本发布:RTX 4060显卡,Linux定制系统

IT之家2月16日消息,新款SlimbookManjaro游戏笔记本电脑于近日发布,配备英特尔酷睿i7-13620H处理器、英伟达GeForceRTX4060显卡、15.6...

Alienware高层认为Steam游戏机将会为Linux游戏销量带来30倍提升

Diana认为,随着Steam游戏机的推出,将会有越来越多的开发者在Linux上使用OpenGL来开发游戏。Diana预计将有700多部游戏将在SteamOS上的Steam游戏机上发行,其他平台上于...

通过将PS4注入自编译Linux系统,开发者成功运行Steam游戏

本世代的家用机和上世代的一个重要的区别就是架构十分接近x86,而不是PS3/Xbox360世代的的自有架构Cell、Xenon。自从出世以来关于运行PC游戏的讨论一直没有停息,各路好手也不断的尝试更...

在国产优麒麟(Linux)上使用 Steam 畅玩大型游戏

Steam平台是目前全球最大的综合性数字发行平台之一,由Counter-Strike(CS)的开发公司Valve聘请出的BT软件编写者Bram.Cohen亲自开发创建。原先只是作为...

大神给PS4装了“Linux”系统 竟然还能玩Steam游戏!

PS4游戏虽然挺多,但是对比起Steam平台来说,就有点相形见绌了。这不日前,就有一位国外大神努力研究之后,竟然给PS4装上了Linux系统,这还不是最关键的,关键的是他竟然还成功的在Steam平台玩...

Linux系统之安装Ninvaders太空入侵者小游戏

Linux系统之安装Ninvaders太空入侵者小游戏1.1Ninvaders小游戏简介1.2项目预览2.1本地环境规划2.2本次实践介绍3.1检查系统镜像源3.2更新软件列表4.1安装...

还未正式发售:《文明7》Linux版已经被破解!

在万众瞩目的期待中,《文明7》这一备受期待的策略游戏巨作即将于2月11日(国区则为2月12日)正式发售。对于许多热爱这一系列的玩家而言,这无疑是一个振奋人心的消息。预购了豪华版和奠基者版的幸运儿们,更...

在国产系统(Linux)上,安装运行Steam游戏详解

前言经过多年发展,Linux已经相当成熟!只是一直以来,使用者相对不多,软件、游戏等厂商不够重视。因此,能直接在Linux上玩的游戏不多!但是随着国产化的推进,越来越多的人开始接触和使用Linux,比...

在 V 社和 NVIDIA 的联手下,Linux 游戏体验已经接近 Windows 了

出于一些原因,越来越多的用户不再喜欢Windows系统。但如果你是一名PC玩家,似乎只有Windows一个选择。其实不然,在Windows的阴影下,一个操作系统正在游戏方面暗自发力,等待...

Linux 游戏中间层 Proton 7.0-4 发布:新增《祖玛的复仇》等

IT之家8月21日消息,Proton是一个基于Wine修改版的工具分发,由Valve设计和提供资金,可兼容Windows平台游戏。近日,Proton7.0-4已在GitHu...