Linux 系统中用户、用户组和文件权限管理的常用命令 useradd、usermod、groupadd、groupmod、chmod

Linux系统
47
0
0
2024-11-14

1. useradd

useradd 是 Linux 系统中用于创建新用户账户的命令。管理员通常用它来添加新的系统用户,为他们设置初始配置,如主目录、登录 Shell 等。这个命令具有多个选项,允许管理员定制新用户账户的各种属性

基本用法

基本的命令格式为:

useradd [选项] 用户名

在最简单的形式中,只需提供要创建的用户名。例如:

useradd johndoe

这将创建一个新用户 johndoe,但不会设置密码。直到管理员或用户设置密码后,该用户才能登录。

常用选项参数
  • -d, --home HOME_DIR:指定用户的主目录。如果不使用此选项,默认会根据系统配置创建一个以用户名命名的目录。
  • -m, --create-home:自动创建用户的主目录。
  • -s, --shell SHELL:指定用户的登录 Shell。如果不指定,默认使用系统配置文件中定义的 Shell。
  • -u, --uid UID:为新账户指定唯一的用户标识符(UID)。如果不指定,系统会自动分配一个。
  • -g, --gid GID:指定用户所属的初始群组(GID)。如果不指定,系统会创建与用户名相同名称的群组,并把用户加入其中。
  • -G, --groups GROUPS:除了初始群组外,将用户添加到额外群组中。群组之间用逗号分隔
  • -e, --expiredate EXPIRE_DATE:设置账户过期日期。格式通常为 YYYY-MM-DD。
  • -f, --inactive INACTIVE:设置密码过期后多少天账户被禁用。0 表示立即禁用,-1 表示永不禁用。
使用场景
  1. 添加新员工:当有新员工加入公司时,系统管理员需要为他们创建新的系统账户。
  2. 测试和开发:开发者可能需要创建特定权限的用户来测试软件或应用。
  3. 服务账户:某些应用程序或服务可能需要使用非人类操作的专用系统账户。
注意事项
  • 安全性:创建用户时,请确保遵循良好的安全实践,比如立即为新用户设置强密码或使用 SSH 密钥进行身份验证
  • UID 唯一性:为避免权限问题或数据混乱,确保手动指定的 UID 是唯一的
  • 主目录权限:如果手动创建主目录,请确保正确设置了所有权和权限。
  • 使用 sudo:非 root 用户需要通过 sudo 来执行 useradd 命令,这要求该用户具有执行此操作的 sudo 权限。

总之,useradd 是 Linux 下一个非常基础且强大的命令,通过熟悉其参数和选项,可以灵活地管理系统中的用户账户。然而,在使用时也要注意合理规划 UID、GID 和主目录等信息,并关注安全性问题。

2. usermod

usermod 是 Linux 系统中用于修改已存在用户账户设置的命令。它允许系统管理员更改用户的各种配置,包括用户名、主目录、用户组、登录 Shell 等。这个命令很强大,但也需要谨慎使用,以避免不必要的系统安全风险或用户数据丢失

功能
  • 修改用户的登录名
  • 更改用户的 UID(用户标识号)
  • 更改用户的主目录
  • 修改用户的登录 Shell
  • 添加用户到一个或多个额外的组
  • 更改用户的默认组
  • 锁定或解锁用户账户
基本用法
usermod [options] LOGIN

其中 LOGIN 是要修改的用户账户的名称。

选项参数
  • -c--comment:用来修改或添加关于账户的注释信息。
  • -d--home HOME_DIR:更改用户的主目录到指定路径 HOME_DIR
  • -e--expiredate EXPIRE_DATE:设置账户过期日期。日期格式通常为YYYY-MM-DD。
  • -g--gid GROUP:更改用户的初始登录组。可以是组名或者GID。
  • -G--groups GROUPS:将用户添加到一个或多个额外组中,组之间用逗号分隔。
  • -l--login NEW_LOGIN:更改用户登录名。
  • -L:锁定用户密码,使得账户无法使用。
  • -U:解锁被锁定的用户密码。
  • -m--move-home:当修改主目录时,把旧的主目录内容移动到新目录中。
  • -s--shell SHELL:更改用户登录时使用的 Shell。
  • -u--uid UID:修改用户的 UID。
使用场景
  1. 更改用户名:当员工姓名发生变化(例如结婚)并希望反映在系统用户名上时。
  2. 调整权限:提升或降低某个用户在系统中的权限时,通过改变其所属组实现。
  3. 迁移主目录:当需要将用户数据迁移到另一个硬盘或位置时。
  4. 锁定

{/}

解锁账户:临时禁止某个账户访问系统时可以锁定该账户;解决问题后再解锁。

注意事项
  1. 备份重要数据:在更改主目录等可能影响数据存储位置的操作前应进行备份。
  2. 避免 UID 冲突:更改 UID 时确保新 UID 不与系统中其他 UID 冲突。
  3. 谨慎操作:特别是在生产环境下,错误地使用 usermod 可能导致服务中断、数据丢失等问题。
  4. 使用正确权限:大多数情况下需要 root 权限执行 usermod 命令,请确保你有适当权限。

总之,usermod 是一款功能强大但需谨慎使用的工具。对于系统管理员而言,了解其全面功能及潜在风险是非常重要的。

3. groupadd

groupadd 命令是 Linux 系统中用于创建新用户组的命令。通过使用这个命令,系统管理员可以更好地管理系统中的用户权限,将不同的用户分配到不同的组中,以便按组赋予不同的访问权限。

功能

groupadd 的主要功能就是在系统中创建一个新的用户组。创建后,该组会被添加到 /etc/group 文件中,这个文件存储了系统上所有的组信息。

基本用法
groupadd [选项] 组名

组名:你想要创建的新用户组的名称。

选项参数

groupadd 命令提供了多个选项来定制新建用户组的属性:

  • -g GID--gid GID:指定新用户组的组标识号(GID)。如果不指定,系统会自动选择下一个可用的最小 GID。
  • -o--non-unique:允许创建具有非唯一 GID 的用户组。
  • -r--system:创建系统组。系统组通常用于系统服务和应用程序,并且 GID 通常在一个特定范围内。
  • -K KEY=VALUE:覆盖默认的 /etc/login.defs 中的配置。
使用场景
  1. 创建新用户时指定用户所属的群组:当添加新用户(使用 useradd 命令)并希望将其放入特定群组时,如果该群组尚不存在,则需要先使用 groupadd 创建该群组。
  2. 调整现有用户权限:为了更改现有用户的权限或访问级别,可能需要创建新的群组,并将一些用户从旧群组迁移到新群组。
  3. 软件安装或服务配置:某些软件安装或服务配置可能要求存在特定名称或 GID 的群组。使用 groupadd 可以满足这些前置条件。
注意事项
  1. 唯一性:每个用户组必须有一个唯一的名称和 GID(除非使用 -o 选项)。尝试创建已存在名称或 GID 的用户组将导致错误。
  2. 保留名称和 GID:某些名称和 GID 范围由系统保留用于特殊目的。避免使用可能冲突的名称或手动指定靠近系统保留范围内的 GID。
  3. 权限:通常需要超级用户权限才能执行 groupadd 命令。普通用户无法添加或修改系统级别的用户组信息。
  4. 使用环境与兼容性:虽然 groupadd 在大多数 Linux 发行版中都可用,但具体参数和行为可能因发行版而异。建议查阅特定发行版的手册页以获取最准确信息。

总之,理解和熟练掌握 groupadd 命令对于进行有效的 Linux 系统管理至关重要。正确地管理用户及其所属群组是确保操作环境安全、高效运作的基础之一

4. groupmod

groupmod 命令是 Linux 系统中用于修改群组属性的命令。系统管理员通常使用它来更改群组的名称或其 GID(群组识别号)。这个命令提供了一个方便的方式来维护群组信息的一致性和准确性。

功能
  • 修改群组名称:如果需要重命名群组,可以使用 groupmod 命令来实现,这在组名不再反映其用途或因为某些原因需要对其进行更新时非常有用。
  • 更改群组 GID:在某些情况下,可能需要更改群组的 GID,比如当两个系统合并用户和群组时,为了避免 GID 冲突,可能需要调整 GID。
用法
groupmod [选项] 群组名
可能的选项参数
  • -g, --gid GID:指定新的群组 GID。这个新的 GID 不能与系统上现有的其他 GID 冲突。
  • -n, --new-name 新群组名:用于将群组重命名为新名称。
  • -o, --non-unique:与 -g 选项结合使用时,允许指定一个非唯一的 GID(即允许两个或多个群组共享同一个 GID)。
使用场景
  1. 重命名群组:当公司或团队更换名称或者因为某种原因需要更新 Linux 系统中的群组名称时,管理员可以使用 groupmod 来修改。
  2. 合并系统用户和群组:在系统迁移或合并过程中,可能会发现不同系统中存在相同名称但不同 GID 的群组。为了统一和消除冲突,管理员可以使用 groupmod 调整这些群组的 GID。
注意事项
  • 备份:在执行 groupmod 命令之前,建议备份相关的系统文件(如 /etc/group),以防万一出错能够恢复。
  • GID 冲突:在更改 GID 时要确保新的 GID 不与现有的其他用户或群组的 ID 冲突。
  • 文件权限问题:更改用户或群组的 ID 可能会影响到文件权限。确保在更改后检查并修正任何由此引起的文件所有权问题。
  • 活动用户和进程:如果正在更改当前活动用户所属的群组信息,请注意这可能导致意外行为。理想情况下,在没有用户登录到该群组时进行更改。

总之,groupmod 是一个强大且必要的工具,可以帮助系统管理员有效地管理系统中的用户群组。正确且谨慎地使用它是维护系统安全和效率的关键。

5. chmod

chmod 是 Linux 系统中用于改变文件或目录权限的命令。它的名字来源于 “change mode” 的缩写。在 Linux 和其他类 Unix 系统中,文件和目录的访问权限可以根据用户的不同(文件所有者、组内的其他用户、其他所有用户)进行细致设置。

功能

chmod 命令能够更改文件或目录的访问权限。这包括读(r)、写(w)、执行(x)权限。通过修改这些权限,可以控制哪些用户可以读取、修改或执行特定文件。

基本用法

chmod 的基本语法如下:

chmod [选项] 模式 文件...
  • 模式:指定新的权限设置。
  • 文件:指定要改变权限的文件或目录。

如何为一个文件设置特定用户组的读写权限?可以使用以下命令为一个文件设置特定用户组的读写权限:

chmod g+rw 文件名
模式的指定方式
  1. 符号模式:使用字母 u (user,文件所有者),g (group,同组用户),o (others,其他用户),a (all,所有用户) 以及 + (增加权限),- (减少权限), = (设置确切的权限) 来表示。
  • 例如,chmod g+w filename 会给同组用户增加对 filename 的写权限。
  1. 八进制数模式:使用三位或四位的数字来表示权限。
  • 每一位数字代表一个不同的用户级别(所有者、组、其他),每个数字是其各自权限值的总和(读=4, 写=2, 执行=1)。
  • 例如,chmod 755 filename 设置所有者有全部权限(7),而组和其他用户只有读和执行权限(5)。
可能的选项参数
  • -R--recursive:递归地改变指定目录及其子目录中所有文件的权限。
  • -v--verbose:显示详细操作信息,列出被修改权限的每个文件名。
  • --reference=参考文件或目录:将指定文件

{/}

目录的模式设置为与参考文件

{/}

目录相同。

使用场景
  1. 更改脚本执行权限:使脚本可执行,例如,对于一个 Shell 脚本 script.sh,使用 chmod +x script.sh 使其可执行。
  2. 限制敏感数据访问:减少对敏感文件如配置文件的访问,例如使用 chmod 600 config.txt,只允许文件所有者读写。
  3. 共享文档给特定用户组:修改文档以供团队成员访问而非所有人,如 chmod 770 shared_doc.txt
注意事项
  1. 安全性:过分宽松的权限设置可能会暴露敏感信息给不应该访问这些信息的用户。
  2. 递归选项使用:使用 -R 参数时要小心,因为它会影响到目标目录下所有子目录和文件,可能导致意外更改。
  3. 特殊标志:Linux 还支持设置特殊权限位,如 setuid (4)、setgid (2)和 sticky bit (1)。错误地使用这些高级特性可能会带来安全风险。

通过理解和正确使用 chmod,用户可以有效管理系统中各种文件和目录的安全性和可访问性