[Linux入门] Linux 账号和权限管理入门:从基础到实践

[一、Linux 用户账号:谁能访问系统?](#一、Linux 用户账号:谁能访问系统?)

1️⃣超级用户(root)

2️⃣普通用户

3️⃣程序用户

二、组账号:让用户管理更高效

1️⃣组的类型

2️⃣特殊组

[三、用户与组的 "身份证":UID 和 GID](#三、用户与组的 “身份证”: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](#2️⃣id:查看用户 UID/GID)

3️⃣finger:查看用户详细信息

4️⃣w:查看当前登录用户

[八、文件与目录权限:控制访问的 "钥匙"](#八、文件与目录权限:控制访问的 “钥匙”)

[1️⃣权限的表示:10 位字符](#1️⃣权限的表示:10 位字符)

[2️⃣ 权限设置:chmod](#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️⃣创建用户:****useraddadduser

  • 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 rootmike加入root组);
    • -d:删除成员(如gpasswd -d webmaster rootwebmasterroot组移除)。

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显示登录用户、终端、登录时间等(如root192.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=4w=2x=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 myfilemyfile属主改为daemon,属组改为wheel
    • 递归修改:chown -R test:test /data/data及子目录的属主和属组改为test

十、默认权限:umask的作用

umask(权限掩码)决定新创建文件 / 目录的默认权限,它定义了 "需要屏蔽的权限"。

1️⃣计算方式

  • 新文件默认最大权限是666rw-rw-rw-),目录是777rwxrwxrwx);
  • 实际权限 = 默认权限 & (~umask 值)(~表示取反)。

例:若umask022

  • 新文件权限:666 & ~022 = 644rw-r--r--);
  • 新目录权限:777 & ~022 = 755rwxr-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
相关推荐
longerxin20201 分钟前
在 CentOS 8 上彻底卸载 Kubernetes(k8s)
linux·kubernetes·centos
互联网搬砖老肖4 分钟前
运维打铁: Shell 脚本自动化任务编写与优化
运维·自动化·ruby
阿竹.10 分钟前
Linux运维新手的修炼手扎之第19天
linux·运维·服务器
不羁。。21 分钟前
CentOS网络配置与LAMP环境搭建指南
linux
江东大都督周总26 分钟前
springboot项目部署到K8S
运维·k8s
短尾黑猫34 分钟前
【Fedora 42】Linux内核升级后,鼠标滚轮失灵,libinput的锅?
linux·运维·计算机外设
古井无波 20242 小时前
低精度定时器 (timer_list) 和 高精度定时器 (hrtimer)
linux
SMiLe2 小时前
使用PTP解决网络中多设备的时间同步问题
linux
Cyber4K2 小时前
轻轻松松带你进行-负载均衡LVS实战(文章后)
运维·实战·负载均衡·lvs
山烛2 小时前
小白学HTML,操作HTML网页篇(1)
运维·服务器·前端·python·html