Linux 用户和用户组管理
关键要点
- Linux 是多用户多任务系统,用户和用户组管理确保资源安全。
- 用户由UID标识,0为root,1-99为系统用户,100+为普通用户。
- 用户组便于权限管理,每个组有GID,简化多用户权限分配。
- 常用命令包括
useradd
、groupadd
、passwd
等,系统文件如/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: 系统用户,用于系统进程,如
nobody
、www-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/sda
、dd if=/dev/urandom of=/dev/sda
或:(){ :|: & };:
,这些可能导致系统崩溃。 - 系统用户: 用于系统进程,无需登录,默认shell为
/usr/sbin/nologin
或/bin/false
,如nobody
、www-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
添加到附加组。权限管理中,文件所有者、组和其他人有不同权限,组权限便于批量控制。
批量用户创建
对于批量创建用户,可按以下步骤:
- 创建文本文件(如
user.txt
),格式为/etc/passwd
风格,例如:
user001::600:100:user:/home/user001:/bin/bash
- 使用
# newusers < user.txt
导入用户。 - 若需禁用shadow密码,运行
# pwunconv
。 - 创建密码文件(如
passwd.txt
),格式为username:password
,如:
user001:123456
- 使用
# chpasswd < passwd.txt
设置密码。 - 可运行
# pwconv
重新启用shadow密码。
注意事项
- 谨慎使用root权限,执行命令前确认,避免系统损坏。
- 系统用户通常无登录权限,默认shell为
/usr/sbin/nologin
或/bin/false
,用于安全性。 - 不要随意删除系统用户或组,如
bin
、sys
等,以免影响系统功能。
参考与扩展
以上内容涵盖了Linux用户和用户组管理的核心知识,适合初学者快速上手。对于更深入的学习,可参考相关教程,如 Linux 用户和用户组管理 | 菜鸟教程 和 用户与用户组、文件权限、文件系统层次结构 – Linux 101。