Linux 用户和用户组管理

关键要点

  • Linux 是多用户多任务系统,用户和用户组管理确保资源安全。
  • 用户由UID标识,0为root,1-99为系统用户,100+为普通用户。
  • 用户组便于权限管理,每个组有GID,简化多用户权限分配。
  • 常用命令包括 useraddgroupaddpasswd 等,系统文件如 /etc/passwd 存储信息。

用户管理

Linux 支持多个用户同时登录,资源访问需通过账户控制。用户有主目录(如 /home/username),权限由UID和GID决定。

  • 添加用户: 使用 useradd,如 # useradd -d /home/sam -m sam
  • 删除用户: 使用 userdel -r sam 删除用户及其目录。
  • 修改用户: usermod 调整设置,如更改shell或组。
  • 密码管理: passwd sam 设置密码,root可锁定/解锁账户。

用户组管理

用户组是权限集合,方便批量管理。例如,将多个用户加入同一组,统一设置文件访问权限。

  • 添加组: groupadd group1 创建组。
  • 删除组: groupdel group1 删除空组。
  • 切换组: newgrp root 临时切换组(需为成员)。
  • 系统文件: /etc/group 存储组信息。


详细报告

Linux 作为一个多用户多任务的操作系统,其用户和用户组管理是确保系统资源安全和高效利用的核心机制。以下是详细的讲解,涵盖用户和用户组的概念、命令、系统文件及注意事项。

用户管理

用户概念

Linux 系统支持多个用户同时登录,每个用户必须拥有一个账户,账户由用户名和密码标识。用户的身份通过用户ID(UID)唯一标识,UID的范围为0-65535:

  • UID 0: root 用户,拥有最高权限。
  • UID 1-99: 系统用户,用于系统进程,如 nobodywww-data
  • UID 100及以上: 普通用户(某些发行版如Red Hat从500开始)。

用户登录后进入主目录,通常位于 /home/username/,如 /home/sam。用户的权限由UID和所属用户组的GID共同决定。

用户管理命令

以下是常用用户管理命令及其功能:

任务命令选项与示例
添加用户useradd-d directory, -m (创建目录), -g group, -s Shell, -u UID,如 # useradd -d /home/sam -m sam
删除用户userdel-r (删除主目录),如 # userdel -r sam
修改用户usermod-c comment, -d directory, -m, -g group, -s Shell, -u UID,如 # usermod -s /bin/ksh -d /home/z -g developer sam
管理密码passwd-l (锁定), -u (解锁), -d (无密码), -f (强制更改),如 # passwd sam
  • passwd 命令可由用户自行修改密码(输入当前密码后设置新密码),root用户可直接为其他用户设置密码。
系统文件

用户相关信息存储在以下系统文件中:

  • /etc/passwd: 存储用户基本信息,格式为 username:password:UID:GID:comment:home_dir:login_Shell。密码字段通常为”x”,实际密码哈希存储在 /etc/shadow 中。
  • /etc/shadow: 存储加密密码,仅root可读,格式为 login_name:encrypted_password:last_change:min_days:max_days:warn:inactive:expire:flag
特殊用户
  • root用户: 拥有最高权限,可执行任何操作,主目录为 /root。需谨慎操作,避免执行危险命令如 rm -rf /mkfs.ext4 /dev/sdadd if=/dev/urandom of=/dev/sda:(){ :|: & };:,这些可能导致系统崩溃。
  • 系统用户: 用于系统进程,无需登录,默认shell为 /usr/sbin/nologin/bin/false,如 nobodywww-data。不要删除系统用户,以免影响系统功能。
用户切换
  • sudo: 以root或其他用户身份执行命令,如 sudo apt update。配置文件为 /etc/sudoers,编辑需用 visudo。示例:%sudo ALL=(ALL:ALL) NOPASSWD:ALL 允许sudo组无密码执行。
  • su: 切换用户,如 su - 切换到root(可能需 sudo su 若root登录被禁用)。sudo -i 提供root shell,相当于 sudo su -

用户组管理

用户组概念

用户组是具有相同特征的用户的逻辑集合,便于权限管理。例如,需让多个用户访问同一文件,可将他们加入同一组,统一设置权限。每个组有组ID(GID),类似UID。

用户可属于一个主组和多个附加组,主组通常在创建用户时指定,附加组可通过命令添加。查看当前用户组用 groups,如 groups 输出 ustc adm cdrom sudo dip plugdev lxd

用户组管理命令

以下是常用用户组管理命令:

任务命令选项与示例
添加组groupadd-g GID, -o (允许重复GID),如 # groupadd group1# groupadd -g 101 group2
删除组groupdel无特殊选项,如 # groupdel group1
修改组groupmod-g GID, -o, -n new_groupname,如 # groupmod -g 102 group2
切换组newgrp切换到另一组(如root),需为主组或附加组,如 $ newgrp root
系统文件
  • /etc/group: 存储组信息,格式为 group_name:password:GID:user_list,密码字段通常为空或”*”。
用户与组关系

用户创建时自动加入主组,可通过 usermod -aG groupname username 添加到附加组。权限管理中,文件所有者、组和其他人有不同权限,组权限便于批量控制。

批量用户创建

对于批量创建用户,可按以下步骤:

  1. 创建文本文件(如 user.txt),格式为 /etc/passwd 风格,例如:
   user001::600:100:user:/home/user001:/bin/bash
  1. 使用 # newusers < user.txt 导入用户。
  2. 若需禁用shadow密码,运行 # pwunconv
  3. 创建密码文件(如 passwd.txt),格式为 username:password,如:
   user001:123456
  1. 使用 # chpasswd < passwd.txt 设置密码。
  2. 可运行 # pwconv 重新启用shadow密码。

注意事项

  • 谨慎使用root权限,执行命令前确认,避免系统损坏。
  • 系统用户通常无登录权限,默认shell为 /usr/sbin/nologin/bin/false,用于安全性。
  • 不要随意删除系统用户或组,如 binsys 等,以免影响系统功能。

参考与扩展

以上内容涵盖了Linux用户和用户组管理的核心知识,适合初学者快速上手。对于更深入的学习,可参考相关教程,如 Linux 用户和用户组管理 | 菜鸟教程用户与用户组、文件权限、文件系统层次结构 – Linux 101


关键引文

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注