[Linux入门] Linux 账号和权限管理入门:从基础到实践
一、Linux 用户账号:谁能访问系统?
1️⃣超级用户(root)
2️⃣普通用户
3️⃣程序用户
二、组账号:让用户管理更高效
1️⃣组的类型
2️⃣特殊组
三、用户与组的 “身份证”:UID 和 GID
四、配置文件:账号信息存哪里?
1️⃣用户配置文件
2️⃣组配置文件
五、用户账号管理:创建、修改与删除
1️⃣创建用户:useradd与adduser
2️⃣设置密码:passwd
3️⃣修改用户属性:usermod
4️⃣删除用户:userdel
六、组账号管理:创建、修改与删除
1️⃣创建组:groupadd
2️⃣管理组成员:gpasswd
3️⃣删除组:groupdel
七、账号信息查询:快速了解系统状态
1️⃣groups:查看用户所属组
2️⃣id:查看用户 UID/GID
3️⃣finger:查看用户详细信息
4️⃣w:查看当前登录用户
八、文件与目录权限:控制访问的 “钥匙”
1️⃣权限的表示:10 位字符
2️⃣ 权限设置:chmod
九、文件与目录归属:chown
十、默认权限:umask的作用
1️⃣计算方式
2️⃣设置umask
命令总结
一、Linux 用户账号:谁能访问系统?
Linux 系统中,所有用户都需要通过 “账号” 访问资源,不同类型的账号拥有不同的权限和作用,主要分为三类:
1️⃣超级用户(root)
- 权限:拥有系统最高权限,可执行任何操作(如修改系统配置、删除关键文件等),类似于 Windows 的 Administrator。
- 特点:UID(用户标识号)固定为 0,是系统默认的超级管理员。
- 使用建议:仅在系统管理(如安装软件、配置服务)时使用,日常操作建议用普通用户,减少误操作风险。
2️⃣普通用户
- 权限:权限受限制,仅在自己的 “宿主目录”(如
/home/用户名
)拥有完整权限,其他目录的操作需依赖授权。 - 创建方式:由 root 或管理员创建,UID 范围通常为 500-60000。
- 用途:供个人日常使用,比如编写文档、运行普通程序等。
3️⃣程序用户
- 权限:低权限,通常不允许登录系统,仅用于维持程序或服务运行。
- 常见例子:
bin
(系统命令程序)、ftp
(FTP 服务)、mail
(邮件服务)等,UID 范围默认是 1-499。 - 作用:隔离程序权限,避免因程序漏洞导致系统被攻击。
二、组账号:让用户管理更高效
组账号是将多个用户按需求集合的管理单位,通过组可以批量设置权限,简化管理。
1️⃣组的类型
- 基本组(私有组):每个用户默认属于的组,通常与用户名同名,创建用户时自动生成。
- 附加组(公共组):用户额外加入的组,用于获取特定权限。
例:用户zhangsan
的基本组是tech
(技术部),因工作需要加入mailadm
(邮件管理员组),则tech
是基本组,mailadm
是附加组。
2️⃣特殊组
- wheel 组:在 Red Hat、CentOS 等系统中,用于授予管理员权限,成员可通过
sudo
执行高级命令,GID 为 10。 - sudo 组:在 Ubuntu 系统中替代 wheel 组,成员可使用
sudo
获取管理员权限,增强安全性。
三、用户与组的 “身份证”:UID 和 GID
Linux 通过数字标识(而非用户名)区分用户和组,这就是 UID(用户 ID)和 GID(组 ID)。
- UID:每个用户唯一,root 的 UID 固定为 0,程序用户 1-499,普通用户 500-60000。
- GID:每个组唯一,root 组的 GID 固定为 0,程序组 1-499,普通组 500-60000。
为什么用数字? 系统内核处理数字比字符串更快,且避免用户名重复导致的冲突。
四、配置文件:账号信息存哪里?
用户和组的信息存储在相应的配置文件中,理解这些文件有助于手动管理账号。
1️⃣用户配置文件
-
/etc/passwd
:存储用户基本信息,每行对应一个用户,用:
分隔 7 个字段:- 格式示例:
root:x:0:0:root:/root:/bin/bash
- 字段含义:用户名、密码占位符(
x
)、UID、GID、用户说明、宿主目录、登录 Shell。
- 格式示例:
-
/etc/shadow
:存储用户密码(加密后)和有效期等敏感信息,仅 root 可读取,每行 9 个字段:- 格式示例:
root:$1$55HB4pbx...:14374:0:99999:7:::
- 关键字段:用户名、加密密码(
*
或!!
表示账号锁定)、密码过期时间、账号失效时间。
- 格式示例:
2️⃣组配置文件
/etc/group
:存储组基本信息,每行对应一个组,包含组名、GID、组成员等。/etc/gshadow
:存储组密码(极少使用),用于管理组的访问权限。
五、用户账号管理:创建、修改与删除
掌握以下命令,可轻松管理用户账号。
1️⃣创建用户:useradd
与adduser
-
useradd
:基础命令,需手动指定参数,适合脚本自动化。- 常用选项:
-d
:指定宿主目录(如useradd -d /admin admin
创建admin
,宿主目录为/admin
);-s
:指定登录 Shell(如useradd -s /bin/bash newuser
,默认 Shell 是/bin/bash
);-m
:自动创建宿主目录(如useradd -m test
)。
- 常用选项:
-
adduser
:交互式命令,自动配置宿主目录、Shell 等,适合新手(Debian/Ubuntu 常用)。- 示例:
adduser mm
会提示设置密码、用户信息等,自动创建/home/mm
目录。
- 示例:
2️⃣设置密码:passwd
- 作用:为用户设置或修改密码,刚创建的用户需设置密码后才能登录。
- 用法:
passwd 用户名
:root 为其他用户设密码(如passwd test1
);passwd
:普通用户修改自己的密码(需验证旧密码);- 选项:
-l
锁定账号(passwd -l test1
)、-u
解锁(passwd -u test1
)。
3️⃣修改用户属性:usermod
- 常用选项:
-s
:修改登录 Shell(如usermod -s /sbin/nologin test1
禁止test1
登录);-g
:修改基本组(如usermod -g newgroup test1
);-L
/-U
:锁定 / 解锁账号(如usermod -L test1
);- -d:修改用户的宿主目录位置。
4️⃣删除用户:userdel
- 用法:
userdel 用户名
删除用户,-r
选项同时删除宿主目录(如userdel -r test1
)。 - 注意:若用户正在登录,需先退出再删除,否则会失败。
六、组账号管理:创建、修改与删除
1️⃣创建组:groupadd
- 示例:
groupadd class02
创建class02
组,GID 自动分配;groupadd -g 1005 class03
指定 GID 为 1005。
2️⃣管理组成员:gpasswd
- 常用选项:
-a
:添加成员(如gpasswd -a mike root
将mike
加入root
组);-d
:删除成员(如gpasswd -d webmaster root
将webmaster
从root
组移除)。
3️⃣删除组:groupdel
- 示例:
groupdel class02
删除class02
组(需确保组内无用户,否则失败)。
七、账号信息查询:快速了解系统状态
1️⃣groups
:查看用户所属组
- 示例:
groups mike
显示mike
所属的所有组(如mike : mike root
)。
2️⃣id
:查看用户 UID/GID
- 示例:
id root
显示root
的 UID(0)、GID(0)及所属组。
3️⃣finger
:查看用户详细信息
- 示例:
finger root
显示root
的宿主目录(/root
)、登录 Shell(/bin/bash
)等。
4️⃣w
:查看当前登录用户
- 示例:
w
显示登录用户、终端、登录时间等(如root
从192.168.204.1
登录)。
八、文件与目录权限:控制访问的 “钥匙”
Linux 通过 “权限” 和 “归属” 控制文件 / 目录的访问,这是系统安全的核心。
1️⃣权限的表示:10 位字符
用ls -l
查看文件属性时,最左侧的 10 位字符代表权限,例如drwxr-xr-x
:
- 第 1 位:文件类型(
d
= 目录、-
= 普通文件、l
= 链接文件); - 2-4 位:属主权限(
r
= 读、w
= 写、x
= 执行); - 5-7 位:属组权限;
- 8-10 位:其他用户权限。
例:rwxr-xr-x
表示:
- 属主:可读、可写、可执行(
rwx
); - 属组:可读、可执行(
r-x
); - 其他用户:可读、可执行(
r-x
)。
2️⃣ 权限设置:chmod
-
符号模式:用
u
(属主)、g
(属组)、o
(其他)、a
(所有)配合+
(加权限)、-
(减权限)、=
(设权限)。- 示例:
chmod u+x file
给属主添加执行权限;chmod g-w,o-r file
移除属组写权限和其他用户读权限。
- 示例:
-
数字模式:用 3 位数字表示权限(
r=4
、w=2
、x=1
),总和越大权限越全。- 示例:
chmod 755 file
表示属主rwx
(7=4+2+1)、属组r-x
(5=4+1)、其他r-x
(5); - 递归设置:
chmod -R 644 /data
将/data
及子目录权限设为rw-r--r--
。
- 示例:
九、文件与目录归属:chown
通过chown
可修改文件 / 目录的属主(所有者)或属组。
- 用法:
- 修改属主:
chown ftp /var/ftp
将/var/ftp
属主改为ftp
; - 同时修改属主和属组:
chown daemon:wheel myfile
将myfile
属主改为daemon
,属组改为wheel
; - 递归修改:
chown -R test:test /data
将/data
及子目录的属主和属组改为test
。
- 修改属主:
十、默认权限:umask
的作用
umask
(权限掩码)决定新创建文件 / 目录的默认权限,它定义了 “需要屏蔽的权限”。
1️⃣计算方式
- 新文件默认最大权限是
666
(rw-rw-rw-
),目录是777
(rwxrwxrwx
); - 实际权限 = 默认权限 & (~umask 值)(
~
表示取反)。
例:若umask
为022
:
- 新文件权限:
666 & ~022 = 644
(rw-r--r--
); - 新目录权限:
777 & ~022 = 755
(rwxr-xr-x
)。
2️⃣设置umask
- 临时设置:
umask 022
(当前终端有效); - 永久设置:在
~/.bashrc
(用户级)或/etc/profile
(系统级)添加umask 022
,执行source ~/.bashrc
生效。
命令总结
命令 | 功能 | 常用选项 | 示例 |
---|---|---|---|
useradd | 添加用户账号 | -c:指定注释性描述;-d:指定用户主目录,配合 - m 可创建目录;-g:指定所属基本组;-G:指定所属附加组;-s:指定登录 Shell;-u:指定 UID 号;-m:自动创建主目录;-M:不创建主目录;-e:指定账号失效时间 | 创建辅助管理员账号 admin,宿主目录为 /admin,基本组为 root:useradd -d /admin -g root admin ;创建名为 b_down 的 FTP 账号,2025-12-31 失效且禁止终端登录:useradd -e 2025-12-31 -s /sbin/nologin b_down |
adduser | 添加新用户,自动配置主目录、Shell 等,交互性更强,适用于 Debian 系列 | --system:创建系统用户,不分配主目录;--home <目录>:指定主目录;--shell <shell 路径 >:指定默认 Shell;--group:创建与用户名相同的用户组;--gid <GID>:指定组 ID;--uid <UID>:指定用户 ID;--no-create-home:不创建主目录;--disabled-password:创建用户但不设置密码;--disabled-login:创建用户但不允许登录;--gecos "<信息>":设置用户 GECOS 信息;--extra-groups < 组名,...>:让新用户加入额外的组 | 创建用户 mm 并交互式设置信息:adduser mm ;创建系统用户 sysuser:sudo adduser --system sysuser |
passwd | 管理用户口令,包括设置、修改、锁定、解锁等 | -l:锁定账号;-u:解锁账号;-d:使账号无口令 | 修改 test1 用户的密码:passwd test1 ;锁定账号 bdqn_zeng:passwd -l bdqn_zeng ;解锁账号 bdqn_zeng:passwd -u bdqn_zeng |
usermod | 修改用户账号属性 | -u:修改 UID 号;-d:修改宿主目录;-e:修改账号失效时间;-g:修改基本组;-G:修改附加组;-s:指定登录 Shell;-l:更改登录名称;-L:锁定用户账户;-U:解锁用户账户;-a:追加附加组,不改变原本附加组 | 锁定账号 test1:usermod -L test1 ;更改用户 username 的初始用户组为 newgroup:sudo usermod -g newgroup username ;将用户 username 添加到 group1 和 group2:sudo usermod -G group1,group2 username |
userdel | 删除用户账号 | -r:同时删除宿主目录和邮件目录;-f:强制删除 | 删除名为 test1 的用户并同时删除其宿主目录:userdel -r test1 ;删除用户 alice:userdel alice ;强制删除用户 alice:userdel -f alice |