1、管理用户和组账号
1.1、用户
1.1.1、用户的概念及作用
在Linux系统中,用户(User)指的是可以访问系统资源的个体实体。每个用户都有一个唯一的用户账号,用于标识和管理其在系统中的活动和访问权限。
用户的重要性和功能:
身份认证和访问控制:
用户账号用于身份认证,确保只有授权的用户可以访问系统资源和执行特定操作。
每个用户账号都有唯一的用户名和关联的密码(或其他身份验证方式),用于登录和验证身份。
权限管理:
用户账号决定了用户对系统资源的访问权限。Linux系统通过用户和组的权限管理机制来控制文件、目录、设备等资源的访问权限。
进程和资源管理:
每个用户登录后,可以启动自己的进程并管理系统资源,如CPU、内存、磁盘空间等。
操作系统可以根据用户账号进行资源的分配和管理,确保不同用户之间的资源隔离和公平分配。
用户类型:
在Linux系统中,有几种不同类型的用户:
超级用户(root): 具有系统管理员权限的特殊用户,可以访问和修改系统的所有部分,对系统有最高级别的控制权。
普通用户: 一般用户,可以访问系统中特定的文件和资源,但没有修改系统关键部分的权限。
服务用户: 用于运行特定服务或应用程序的用户,通常具有有限的权限,专门用于服务的安全运行和访问控制。
1.1.2、用户账号管理
Linux 用户账号管理涉及创建、修改、删除用户账号以及管理其属性和权限。这些任务通常由系统管理员或具有 root 权限的用户执行。以下是详细的解释和步骤:
创建用户账号
在Linux系统中,可以使用 useradd 命令来创建新的用户账号。语法如下:
useradd [选项] 用户名
常用选项包括:
-m:创建用户时同时创建用户的家目录。
-s shell:指定用户登录时使用的 shell。
-g group:指定用户的主组。
-G groups:指定用户的附加组。
例如,创建一个名为 newuser 的用户:
useradd -m -s /bin/bash newuser
设置用户密码
创建用户后,需要设置用户的登录密码。可以使用 passwd 命令来为用户设置密码:
passwd 用户名
例如,为 newuser 设置密码:
passwd newuser
修改用户账号
可以使用 usermod 命令来修改现有用户账号的属性。例如,修改用户的登录名、主组、附加组等:
usermod [选项] 用户名
常用选项包括:
-l 新用户名:修改用户的登录名。
-g 新主组:修改用户的主组。
-aG 附加组:添加用户到一个或多个附加组。
例如,将 newuser 的登录名改为 newname:
usermod -l newname newuser
删除用户账号
要删除用户账号及其相关文件,可以使用 userdel 命令。删除用户账号时,可以选择是否删除用户的家目录和邮箱文件等。语法如下:
userdel [选项] 用户名
常用选项包括:
-r:删除用户的家目录及其内容。
-f:强制删除,即使用户当前登录或有进程运行。
例如,删除名为 olduser 的用户及其家目录:
userdel -r olduser
切换用户和权限管理
使用 su 命令可以切换到其他用户的身份,通常是超级用户(root),需要输入相应用户的密码。
su – 用户名
使用 sudo 命令可以以超级用户的身份执行特定命令,需要配置 /etc/sudoers 文件以授权用户执行特定命令的权限。
查看和管理用户信息
使用 id 命令可以查看用户的 UID(用户标识)、GID(组标识)以及附加组信息。
id 用户名
使用 groups 命令可以查看用户所属的所有组。
groups 用户名
使用 chage 命令可以管理用户的密码过期信息,设置密码策略等。
1.2、组账号
1.2.1、组账号的概念及作用
在Linux系统中,组账号(Group)是用来管理和组织用户的集合。每个用户可以属于一个主组(Primary Group)和多个附加组(Supplementary Groups)。组账号本身也有唯一的组名和组ID(GID),用于标识和区分不同的组。
用户与组的关系
每个用户可以通过组账号来定义其所属的主组和附加组。
主组是用户在创建文件和目录时默认所属的组,而附加组是用户可以访问和共享的其他组。
作用:
权限管理:
组账号在Linux文件系统中用于定义文件和目录的所属组,并通过设置组的权限来控制用户对这些文件和目录的访问权限。
每个文件和目录都有一个所有者(owner)和一个所属组(group),可以通过权限设置决定哪些用户可以对文件进行读、写和执行操作。
资源共享和管理:
组账号允许多个用户共享和管理同一组的文件和资源。
这种机制有助于团队或组织内部的协作和文件管理,使得用户可以根据工作角色或项目需要组织和访问数据。
进程和权限继承:
当用户启动进程时,该进程会继承启动用户的组账号信息。
这意味着进程可能会以多个组账号的身份运行,从而影响其对系统资源的访问和操作权限。
系统安全和最小权限原则:
系统管理员可以利用组账号来实现最小权限原则,即每个用户只能访问和修改其工作所需的最少资源和文件。
通过适当地分配用户到不同的组账号中,管理员可以减少安全风险并简化管理任务,提高系统的整体安全性。
1.2.2、组账号的管理
组账号管理通常由系统管理员或具有 root 权限的用户来执行。
创建组账号
使用 groupadd 命令可以创建新的组账号。语法如下:
groupadd [选项] 组名
常用选项包括:
-g GID:指定组的GID(组ID),如果不指定系统会自动分配。
-r:创建一个系统组,即GID小于1000的组。
例如,创建一个名为 team1 的组账号:
groupadd team1
修改组账号
可以使用 groupmod 命令来修改现有组账号的属性。语法如下:
groupmod [选项] 组名
常用选项包括:
-n 新组名:修改组的名称。
-g 新GID:修改组的GID。
例如,将 team1 组的名称修改为 developers:
groupmod -n developers team1
删除组账号
要删除组账号,可以使用 groupdel 命令。语法如下:
groupdel 组名
例如,删除名为 developers 的组账号:
groupdel developers
管理组成员
添加成员到组
使用 usermod 命令可以将用户添加到一个或多个组中。语法如下:
usermod -aG 组名 用户名
例如,将用户 user1 添加到 developers 组中:
sudo usermod -aG developers user1
从组中移除成员
同样使用 usermod 命令可以从组中移除用户。语法如下:
usermod -G 组名 用户名
例如,将用户 user1 从 developers 组中移除:
usermod -G developers user1
查看和管理组账号信息
查看组账号信息
使用 grep 命令可以查看系统中所有组账号的信息,而使用以下命令可以单独查看组的信息:
cat /etc/group
管理组成员列表
编辑 /etc/group 文件可以手动管理组成员列表。每个行表示一个组,其格式为:
组名:密码占位符:GID:成员1,成员2,…
例如,编辑 developers 组,手动添加或删除成员:
nano /etc/group
1.3、/etc/passwd与/etc/shadow
/etc/passwd 和 /etc/shadow 是两个关键的系统文件,用于管理用户账号信息和密码信息。负责存储和维护用户账号的基本信息和安全信息。
1.3.1、/etc/passwd
/etc/passwd 文件包含了系统中所有用户账号的基本信息,每行对应一个用户的记录,字段之间使用冒号(:)分隔。常见的字段包括:
用户名:用户的登录名。
加密密码:在大多数Linux系统中,这里存储的是加密后的用户密码,实际密码被存储在 /etc/shadow 文件中。
用户ID(UID):每个用户都有一个唯一的数字标识符。
组ID(GID):用户主组的标识符。
用户描述信息:通常是用户的全名或其他描述信息。
家目录:用户的主目录,登录后进入的起始目录。
登录 shell:用户登录后默认使用的 shell。
示例 /etc/passwd 文件中的一行记录可能如下所示:
john❌1001:1001:John Doe:/home/john:/bin/bash
这表示用户名为 john,加密密码字段为 x(实际密码存储在 /etc/shadow 文件中),UID为 1001,GID为 1001,全名为 “John Doe”,主目录为 /home/john,默认登录 shell 为 /bin/bash。
1.3.2、/etc/shadow
/etc/shadow 文件包含了系统用户的加密密码和与安全相关的信息,这些信息被存储为不可读的加密字符串。通常,普通用户无权访问这个文件。主要字段包括:
用户名:与 /etc/passwd 文件中的用户名对应。
加密密码:经过加密的用户密码。
密码修改时间:自 Unix 纪元(1970 年 1 月 1 日)以来的天数。
密码过期限制:密码需要更改的天数,或者账户被禁用的天数。
密码到期提前警告:密码过期前多少天提醒用户。
密码最短更改时间:两次密码更改之间的最小天数。
账户过期时间:账户失效日期。
示例 /etc/shadow 文件中的一行记录可能如下所示:
john: 6 6 6yOadS1Rr$6ft4J5APwjH3SPp6Wd0sKD2oP85Dj8tIXrB2Hm0bbWt6xKP0OC7asL/3n0wyVz6sYd70HgzPm8VBLMe2t7V1/:18707:0:99999:7:::
其中,第二个字段 6 6 6yOadS1Rr$6ft4J5APwjH3SPp6Wd0sKD2oP85Dj8tIXrB2Hm0bbWt6xKP0OC7asL/3n0wyVz6sYd70HgzPm8VBLMe2t7V1/ 是经过加密的密码字符串,其他字段分别表示密码修改时间、密码过期限制、密码到期提前警告、密码最短更改时间、账户过期时间等信息。
1.3.3、总结
/etc/passwd 文件存储用户账号的基本信息,包括用户名、UID、GID、家目录和登录 shell。
/etc/shadow 文件存储用户账号的加密密码和与安全相关的信息,如密码过期策略等。
通过这两个文件,系统管理员可以管理用户的登录和密码策略,确保系统的安全性和可管理性。
1.4、用户账号的初始化配置文件
在Linux系统中,用户账号的初始化配置文件通常是指用户的个性化配置文件,用于设置用户登录时的环境变量、默认命令行工具、别名、路径设置等。这些配置文件位于用户的主目录下,具体取决于使用的 shell 和登录方式
新建用户帐号时,从 /etc/skel 目录中复制而来
1.4.1、主要的用户初始配置文件
~/.bash_profile
~/.bash_profile 文件是用于 Bash shell 的用户登录配置文件,其作用主要是在用户登录时进行个性化的环境配置和初始化操作。~/.bash_profile 文件的作用包括:
设置环境变量:
可以在 ~/.bash_profile 中设置用户的环境变量,如 PATH、EDITOR 等,以确保在用户登录后正确设置系统环境。
定义别名和函数:
可以在文件中定义命令别名 (alias) 和 shell 函数,以简化常用命令的使用或自定义功能。
执行初始化命令:
可以在登录时执行一些需要初始化的命令,比如输出欢迎信息、检查系统状态或加载特定的配置文件等。
安全设置:
可以设置一些安全相关的配置,比如限制 umask 值、设置 umask 的默认值等,以确保文件和目录的权限设置符合安全标准。
启动服务或应用程序:
在 ~/.bash_profile 中可以添加启动服务或应用程序的命令,以确保用户登录时自动启动特定的服务或应用程序。
~/.bashrc
~/.bashrc 文件是 Bash shell 的一个重要配置文件,用于定义用户每次打开新的交互式 shell 时所执行的命令和设置。它主要在用户登录时并不直接被加载,而是在每次打开新的终端或会话时执行。作用如下:
定义别名和函数: 在 ~/.bashrc 文件中可以定义命令别名 (alias) 和 shell 函数,以简化常用命令的使用或自定义功能。
设置环境变量: 可以在文件中设置用户的环境变量,如 PATH、EDITOR 等,确保在每个新的 shell 中都能正确设置环境。
执行初始化命令: 可以在每次打开新终端时执行一些需要初始化的命令,比如设置终端颜色、加载特定的配置文件等。
配置命令行提示符: 可以定制命令行提示符 (PS1) 的外观和行为,以显示有用的信息如当前目录、用户名、主机名等。
设置 shell 行为和选项: 可以配置 shell 的行为和选项,如设置历史记录大小、开启或关闭特定的 shell 功能等。
~/.bash_logout
~/.bash_logout 文件是 Bash shell 的一个配置文件,用于定义在用户注销(logout)时执行的命令和操作。它主要在用户注销登录时被加载和执行。以下是关于 ~/.bash_logout 文件的详细解释:
清理和退出操作: ~/.bash_logout 文件通常用于执行一些在用户注销时需要进行的清理操作或退出前的准备工作。
清理临时文件: 可以在该文件中添加命令,清理用户在登录期间创建的临时文件或缓存数据。
记录用户活动: 可以在文件中添加命令,记录用户的活动或生成日志文件,以便后续审计或分析使用。
执行其他定制操作: 可以根据需要执行其他定制操作,例如发送通知、运行脚本或调用特定的清理工具。
/etc/profile
/etc/profile 是一个系统级别的 Bash shell 配置文件,用于设置全局的环境变量和执行系统范围的初始化操作。这个文件对所有用户都有效,它在用户登录时被加载和执行。其作用如下:
全局环境变量设置: /etc/profile 文件用于设置系统全局的环境变量,这些变量对所有用户都可见和使用。
系统范围的初始化操作: 可以在该文件中执行一些系统范围的初始化操作,如设置全局的 PATH 变量、定义系统级别的别名和函数等。
用户登录时执行: 当用户登录时,Bash shell 会自动加载和执行 /etc/profile 文件中的命令和设置,以确保系统环境的一致性和正确性。
/etc/bashrc
/etc/bashrc 是另一个 Bash shell 的配置文件,它位于系统级别的 /etc 目录下,用于设置系统范围的 Bash shell 配置和初始化。与用户级别的 ~/.bashrc 文件类似,/etc/bashrc 文件主要用于定义全局的环境变量、别名、函数和其他系统范围的配置选项。
作用:
系统范围的配置: /etc/bashrc 文件用于设置全局的 Bash shell 配置,这些配置对系统中所有用户的 Bash shell 都生效。
定义全局别名和函数: 可以在该文件中定义全局的命令别名 (alias) 和 shell 函数,使其对所有用户和所有登录 shell 可见。
设置全局环境变量: 可以在文件中设置全局的环境变量,如 PATH、EDITOR 等,确保系统中所有 Bash shell 的环境一致性。
1.4.2、/etc/bashrc与/etc/profile的区别
加载时机:
/etc/profile 在用户登录时加载,而 /etc/bashrc 在每次打开新的交互式 Bash shell 时加载。
作用范围:
/etc/profile 用户登主要用于设置录时的全局环境和初始化操作,影响所有用户。/etc/bashrc 主要用于设置系统范围内的 Bash shell 配置,影响所有交互式的 Bash shell 会话。
用途:
/etc/profile 更适合用于设置全局的环境变量和执行初始化操作,如设置 PATH、加载全局配置。/etc/bashrc 更适合用于定义全局的别名、函数和其他系统范围的 Bash shell 配置选项。
2、管理目录和文件的属性
文件/目录的权限
文件/目录的权限指的是对文件或目录进行读取、写入和执行操作的能力。在Linux系统中,每个文件/目录都有三组权限:
所有者权限:
控制文件/目录所有者对文件/目录的操作权限。
可以是读(r)、写(w)、执行(x)的组合,也可以是没有权限(-)。
例如:-rw-r–r– 表示文件所有者具有读写权限,而所属组和其他用户只有读权限。
所属组权限:
控制与文件/目录所属组的用户对文件/目录的操作权限。
与所有者权限相同,可以是读(r)、写(w)、执行(x)的组合,或者没有权限(-)。
其他用户权限:
控制系统中不是文件/目录所有者和所属组成员的用户对文件/目录的操作权限。
同样,可以是读(r)、写(w)、执行(x)的组合,或者没有权限(-)。
文件/目录的归属
文件/目录的归属指定了文件/目录的所有者和所属组。
所有者(Owner):
文件/目录的创建者或拥有者,拥有最高的权限。
可以是用户名或用户ID(UID)。
所属组(Group):
文件/目录的所属组,可以包含多个用户,这些用户具有与所属组权限相关联的访问权限。
可以是组名或组ID(GID)。
2.1、查看目录或文件的属性
![图片[1] - 五、Linux账号与权限管理 - 宋马](https://pic.songma.com/blogimg/20250523/b5eec0017dd1471887a1b21373101729.png)
2.2、设置目录或文件的权限–chmod
在Linux系统中,可以使用 chmod 命令设置目录或文件的权限。文件和目录的权限决定了谁可以对其进行读取、写入和执行操作。
chmod 命令用于修改文件或目录的权限。它可以通过两种方式来操作权限:符号模式和数字模式。
符号模式
符号模式可以在不知道原始权限值的情况下进行修改,使用符号来表示权限操作。
基本语法:
chmod options permissions filename
常用符号:
+:增加权限
-:移除权限
=:设置特定权限
权限符号:
r:读取权限
w:写入权限
x:执行权限
u:所有者权限
g:所属组权限
o:其他用户权限
a:所有用户(等同于 ugo)
数字模式
数字模式使用数字表示权限,每个权限有一个对应的数字值:
数字值:
4:读权限(r)
2:写权限(w)
1:执行权限(x)
权限组合:
rwx:读写执行权限(7)
rw-:读写权限(6)
r–:只读权限(4)
设置权限示例
使用符号模式:
增加其他用户的执行权限:chmod o+x example.txt
移除所有者的写权限:chmod u-w example.txt
设置所有者和所属组的读写权限:chmod ug+rw example.txt
使用数字模式:
设置文件为所有者读写执行,所属组读取,其他用户没有权限:chmod 750 example.txt
递归修改目录及其下所有文件和子目录的权限:chmod -R 755 directory
注意事项
递归操作:
如果需要修改目录及其下所有文件和子目录的权限,可以使用 -R 选项。
权限安全:
修改文件或目录的权限可能会影响系统的安全性和稳定性,需要谨慎操作。
管理员权限:
修改其他用户的文件权限通常需要管理员权限或文件所有者的权限。
永久修改:
使用 chmod 命令修改的权限是永久性的,文件的权限会一直保持直到再次修改。
示例
假设有一个文件 example.txt,初始权限为 -rw-r–r–:
ls -l example.txt
-rw-r--r-- 1 user1 group1 100 Jul 1 12:00 example.txt
要修改它的权限使所有者可以执行,所属组可以写入,其他用户可以读取,可以执行以下操作:
chmod u+x,g+w,o+r example.txt
2.3、设置目录或文件的归属–chown
在Linux系统中,可以使用 chown 和 chgrp 命令来设置文件和目录的归属(ownership),即文件或目录的所有者和所属组。以下是详细解释如何设置文件和目录的归属:
chown 命令详解
chown 命令用于修改文件或目录的所有者和所属组。
基本语法:
chown [options] owner[:group] file(s)
参数说明:
owner:新的所有者名称或用户ID(UID)。
group:可选,新的所属组名称或组ID(GID)。
file(s):要修改归属的文件或目录。
示例:
修改文件的所有者:
chown user1 file.txt
同时修改文件的所有者和所属组:
chown user1:group1 file.txt
递归修改目录及其下所有文件和子目录的归属:
chown -R user1:group1 directory
chgrp 命令详解
chgrp 命令用于修改文件或目录的所属组。
基本语法:
chgrp [options] group file(s)
参数说明:
group:新的所属组名称或组ID(GID)。
file(s):要修改归属的文件或目录。
示例:
修改文件或目录的所属组:
chgrp group1 file.txt
递归修改目录及其下所有文件和子目录的所属组:
chgrp -R group1 directory
注意事项
权限要求:
修改文件或目录的所有者和所属组通常需要管理员权限或文件的当前所有者权限。
影响范围:
修改文件或目录的归属操作是永久性的,需要谨慎操作,特别是在多用户环境下。
递归操作:
使用 -R 选项可以递归修改目录及其下所有文件和子目录的归属,但需要小心使用,以避免对系统造成意外影响。
示例
假设有一个文件 file.txt,当前的所有者为 user1,所属组为 group1:
ls -l file.txt
-rw-r--r-- 1 user1 group1 100 Jul 1 12:00 file.txt
要修改该文件的所有者为 user2,所属组为 group2,可以执行以下操作:
chown user2:group2 file.txt

















暂无评论内容