首页 > 运维 > linux运维 > 正文

Linux用户权限管理命令大全

P粉602998670
发布: 2025-09-04 08:25:01
原创
666人浏览过
Linux用户权限管理核心在于控制“谁能动什么”,通过chmod、chown、useradd等命令实现文件权限与用户组管理,结合SUID、SGID、Sticky Bit及sudo机制,确保系统安全与多用户协作高效进行。

linux用户权限管理命令大全

Linux用户权限管理,说白了,就是操作系统层面上的“谁能动什么,怎么动”的规矩。这不仅仅是技术细节,更是系统安全和稳定性的基石,尤其在多用户、多任务的环境下,理解和掌握这些命令,几乎是每个Linux使用者,无论是运维、开发还是普通用户,都绕不开的一道坎。它决定了你的文件是私密还是共享,你的程序是安全运行还是处处受限。

解决方案

谈到Linux用户权限管理,核心命令其实就那么几个,但它们组合起来能玩出很多花样。我个人觉得,理解这些命令的“意图”比死记硬背参数更重要。

首先是文件和目录的权限管理,这块是基础中的基础:

  • chmod
    登录后复制
    (change mode)
    :这个命令用来改变文件或目录的权限。权限分为读(r)、写(w)、执行(x),分别对应数字4、2、1。我们通常用八进制数字来表示用户(u)、组(g)和其他人(o)的权限。
    • 示例:
      chmod 755 script.sh
      登录后复制
      。这表示文件所有者(u)有读写执行权限(4+2+1=7),文件所属组(g)和其他人(o)只有读和执行权限(4+1=5)。
    • 个人看法: 我更喜欢用符号模式,比如
      chmod u+x,g-w file.txt
      登录后复制
      ,感觉更直观,尤其在只修改某一部分权限时。但对于全新设置,数字模式效率更高。
  • chown
    登录后复制
    (change owner)
    :改变文件或目录的所有者。
    • 示例:
      chown user1:group1 file.txt
      登录后复制
      。这会将
      file.txt
      登录后复制
      的所有者改为
      user1
      登录后复制
      ,所属组改为
      group1
      登录后复制
    • 小贴士: 经常会遇到
      chown -R
      登录后复制
      递归修改整个目录树的情况,但要小心,别把系统关键文件的所有者改错了。
  • chgrp
    登录后复制
    (change group)
    :专门改变文件或目录的所属组。虽然
    chown
    登录后复制
    也能做,但
    chgrp
    登录后复制
    在某些脚本里可能更明确。
    • 示例:
      chgrp newgroup file.txt
      登录后复制

接着是用户和用户组的管理,这是构建多用户环境的关键:

  • useradd
    登录后复制
    :创建新用户。
    • 示例:
      useradd -m -s /bin/bash newuser
      登录后复制
      -m
      登录后复制
      会自动创建家目录,
      -s
      登录后复制
      指定默认shell。
    • 经验之谈: 别忘了创建密码,否则用户是登录不了的。
      passwd newuser
      登录后复制
      紧随其后是常态。
  • userdel
    登录后复制
    :删除用户。
    • 示例:
      userdel -r olduser
      登录后复制
      -r
      登录后复制
      选项会一并删除用户的家目录和邮件池。
    • 注意: 删除用户前,最好确认该用户没有重要文件或正在运行的服务。
  • usermod
    登录后复制
    :修改用户属性。
    • 示例:
      usermod -g newgroup -G anothergroup -s /bin/sh existinguser
      登录后复制
      。修改主组、附加组和shell。
    • 个人心得:
      usermod -aG
      登录后复制
      是我最常用的,用来把用户添加到某个附加组,而不会覆盖掉其他附加组。
  • groupadd
    登录后复制
    :创建新用户组。
    • 示例:
      groupadd devteam
      登录后复制
  • groupdel
    登录后复制
    :删除用户组。
    • 示例:
      groupdel oldgroup
      登录后复制
  • groupmod
    登录后复制
    :修改用户组属性。
    • 示例:
      groupmod -n newname oldname
      登录后复制
      。修改组名。

然后是权限提升和身份切换:

  • sudo
    登录后复制
    (superuser do)
    :以其他用户(通常是root)的身份执行命令。这是日常管理中最常用,也最安全的权限提升方式。
    • 示例:
      sudo apt update
      登录后复制
    • 安全提示:
      sudo
      登录后复制
      的配置 (
      /etc/sudoers
      登录后复制
      ) 至关重要,它决定了谁能用
      sudo
      登录后复制
      ,能执行哪些命令。错误的配置可能导致严重的安全漏洞。
  • su
    登录后复制
    (switch user)
    :切换用户身份。
    • 示例:
      su - root
      登录后复制
      。切换到root用户,并加载root的环境变量。
    • 区别
      su
      登录后复制
      切换后需要目标用户的密码,而
      sudo
      登录后复制
      只需要当前用户的密码(如果配置允许)。在服务器上,我更倾向于
      sudo
      登录后复制
      ,因为它有更好的审计日志。

最后是一些辅助查看命令:

  • id
    登录后复制
    :显示用户的UID、GID以及所属的所有组。
    • 示例:
      id username
      登录后复制
  • whoami
    登录后复制
    :显示当前有效的用户名。
  • ls -l
    登录后复制
    :查看文件或目录的详细信息,包括权限、所有者和所属组。

这些命令构成了Linux权限管理的核心骨架。理解它们,基本上就能应对绝大多数的权限问题了。

如何理解Linux文件与目录权限的rwx含义?

说起Linux的权限,

rwx
登录后复制
这三个字母简直是基石,它们分别代表着读(read)、写(write)、执行(execute)。但光知道这三个字面意思还不够,关键在于它们在文件和目录上,有着截然不同的“行为模式”。这对我来说,是初学时最容易混淆的地方,直到真正踩过坑,才算彻底搞明白。

对于文件:

  • r (读):很简单,就是允许你查看文件的内容。比如
    cat
    登录后复制
    more
    登录后复制
    less
    登录后复制
    命令,或者用文本编辑器打开它。没有读权限,文件内容对你来说就是个黑箱。
  • w (写):允许你修改或删除文件的内容。你可以用编辑器保存对文件的修改,或者直接删除这个文件(前提是你对文件所在的目录有写权限,这一点很重要,下面会说)。
  • x (执行):这表示文件可以被当作一个程序来运行。对于脚本文件(如
    .sh
    登录后复制
    ),没有
    x
    登录后复制
    权限,即使内容写得再好,你也无法直接
    ./script.sh
    登录后复制
    来运行它。它只会是个普通的文本文件。

对于目录:

这里就有点意思了,目录的

rwx
登录后复制
和文件的含义大相径庭:

  • r (读):允许你列出目录下的文件和子目录名称。比如
    ls
    登录后复制
    命令,没有这个权限,你甚至不知道目录里有什么。但你不能进入目录。
  • w (写):这是最“危险”的权限。它允许你在目录中创建、删除、重命名文件和子目录,甚至移动目录中的文件。注意,即使你对某个文件没有写权限,但如果你对它所在的目录有写权限,你仍然可以删除这个文件!这就是为什么有时候你无法修改一个文件,但却能把它删掉的原因。
  • x (执行):这个权限对于目录来说,通常被称为“搜索”或“进入”权限。没有它,你无法
    cd
    登录后复制
    进入这个目录,也无法访问目录下的任何文件或子目录,即使你知道文件的完整路径。这有点像一个锁住的门,你知道门后面有东西,但你进不去。

八进制表示法:

为了方便,我们把

rwx
登录后复制
映射成数字:
r=4
登录后复制
,
w=2
登录后复制
,
x=1
登录后复制
。这样,一个权限组合就可以用一个数字来表示:

  • rwx
    登录后复制
    = 4+2+1 = 7
  • rw-
    登录后复制
    = 4+2+0 = 6
  • r-x
    登录后复制
    = 4+0+1 = 5
  • r--
    登录后复制
    = 4+0+0 = 4
  • ---
    登录后复制
    = 0+0+0 = 0

当我们看到

chmod 755 file.sh
登录后复制
,它意味着:

  • 第一个
    7
    登录后复制
    (4+2+1):文件所有者拥有读、写、执行权限。
  • 第二个
    5
    登录后复制
    (4+0+1):文件所属组拥有读、执行权限,但不能修改。
  • 第三个
    5
    登录后复制
    (4+0+1):其他用户拥有读、执行权限,也不能修改。

理解这些细微的差别,对于排查“为什么我不能访问这个文件?”或者“为什么我不能运行这个脚本?”这类问题,至关重要。我曾经因为一个目录没有

x
登录后复制
权限,导致Web服务器无法读取其中的静态文件,排查了半天,才发现是这个小细节。

除了基本权限,Linux还有哪些高级权限设置?

当基本的用户、组和文件权限(rwx)无法满足复杂场景的需求时,Linux系统还提供了一些“高级”权限机制。这些机制虽然不如

chmod
登录后复制
那么常用,但在特定场景下,它们能提供更精细的控制和更高的安全性。我主要想聊聊三个比较重要的:SUID、SGID和Sticky Bit,以及一个更复杂的ACL。

1. SUID (Set User ID)

这个权限只对可执行文件有效,并且它是个非常强大的功能。当一个设置了SUID位的文件被执行时,无论执行它的用户是谁,程序都将以文件所有者的权限来运行,而不是执行者的权限。

  • 标识:
    ls -l
    登录后复制
    输出中,文件所有者权限的
    x
    登录后复制
    位会变成
    s
    登录后复制
    (如果所有者有执行权限) 或
    s
    登录后复制
    (如果所有者没有执行权限)。
  • 作用: 最经典的例子就是
    passwd
    登录后复制
    命令。
    passwd
    登录后复制
    文件通常属于
    root
    登录后复制
    用户,并设置了SUID位。这样,普通用户执行
    passwd
    登录后复制
    命令时,程序会以
    root
    登录后复制
    用户的身份运行,从而能够修改
    /etc/shadow
    登录后复制
    文件(存储用户密码的加密文件),而这个文件普通用户是没有权限直接修改的。
  • 潜在风险: 如果一个恶意程序被设置了SUID,并且其所有者是
    root
    登录后复制
    ,那么任何用户执行它都将获得
    root
    登录后复制
    权限,这无疑是一个巨大的安全漏洞。因此,系统管理员需要非常谨慎地管理带有SUID位的文件。

2. SGID (Set Group ID)

乾坤圈新媒体矩阵管家
乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

乾坤圈新媒体矩阵管家 17
查看详情 乾坤圈新媒体矩阵管家

SGID有两种应用场景,分别针对文件和目录:

  • 对于可执行文件: 类似SUID,当一个设置了SGID位的可执行文件被执行时,程序会以文件所属组的权限来运行,而不是执行者所在的主组。
    • 标识:
      ls -l
      登录后复制
      输出中,文件所属组权限的
      x
      登录后复制
      位会变成
      s
      登录后复制
      (如果所属组有执行权限) 或
      s
      登录后复制
      (如果所属组没有执行权限)。
  • 对于目录: 这是SGID更常见的应用。当一个目录设置了SGID位后,任何在该目录中创建的新文件或子目录,其所属组都会自动继承父目录的所属组,而不是创建者用户的默认组。
    • 标识:
      ls -l
      登录后复制
      输出中,目录所属组权限的
      x
      登录后复制
      位会变成
      s
      登录后复制
    • 作用: 在多用户协作环境中非常有用。比如一个项目组
      devteam
      登录后复制
      ,所有成员都在
      /project
      登录后复制
      目录下工作。如果
      /project
      登录后复制
      目录设置了SGID,那么无论哪个成员创建文件,新文件的所属组都会是
      devteam
      登录后复制
      ,方便组内成员共享和协作。

3. Sticky Bit (粘滞位)

Sticky Bit主要用于目录,它的目的是为了防止非所有者用户删除或重命名目录中的文件,即使这些用户对目录有写权限。

  • 标识:
    ls -l
    登录后复制
    输出中,其他用户权限的
    x
    登录后复制
    位会变成
    t
    登录后复制
    (如果其他用户有执行权限) 或
    t
    登录后复制
    (如果其他用户没有执行权限)。
  • 作用: 最典型的例子就是
    /tmp
    登录后复制
    目录。
    /tmp
    登录后复制
    目录是所有用户都可以读写执行的,任何用户都可以在其中创建文件。但由于
    /tmp
    登录后复制
    目录设置了Sticky Bit,用户只能删除或重命名自己创建的文件,而不能删除或重命名其他用户创建的文件。这有效防止了用户之间互相干扰,确保了临时文件的隔离性。

如何设置这些特殊权限:

使用

chmod
登录后复制
命令,通过数字模式或符号模式。

  • 数字模式: 在三位八进制权限数字前加一位,代表特殊权限。
    • 4
      登录后复制
      表示 SUID
    • 2
      登录后复制
      表示 SGID
    • 1
      登录后复制
      表示 Sticky Bit
    • 示例:
      chmod 4755 file
      登录后复制
      (设置SUID),
      chmod 2775 dir
      登录后复制
      (设置SGID),
      chmod 1777 /tmp
      登录后复制
      (设置Sticky Bit)。
  • 符号模式:
    • chmod u+s file
      登录后复制
      (设置SUID)
    • chmod g+s dir
      登录后复制
      (设置SGID)
    • chmod +t /tmp
      登录后复制
      (设置Sticky Bit)

这些高级权限,虽然在日常操作中不常用,但在构建安全的、多用户协作的系统时,它们是不可或缺的工具。理解它们的原理和用途,能让你在面对复杂的权限需求时,有更多的选择和更精准的控制力。

在多用户协作环境中,如何高效管理用户和用户组?

在多用户协作的场景下,尤其是在服务器或开发环境中,用户和用户组的管理就不仅仅是“创建几个用户”那么简单了。它涉及到权限的隔离、资源的共享以及操作的审计。我个人觉得,高效管理的关键在于“合理规划”和“灵活运用”那些基础命令。

1. 规划先行:明确职责与权限边界

在动手之前,花点时间思考:

  • 谁需要访问什么? 哪些用户需要访问哪些目录、哪些文件、哪些服务?
  • 权限级别是什么? 是只读、读写、还是完全控制?
  • 有哪些协作小组? 比如开发组、测试组、运维组,他们之间需要共享哪些资源?

有了这个蓝图,你就能更好地设计用户和组的结构,避免后期频繁调整。

2. 巧用用户组:实现权限共享与隔离

用户组是实现权限共享和隔离的利器。与其给每个用户单独设置文件权限,不如将相关用户加入到一个组中,然后对组设置权限。

  • 创建用户组 (
    groupadd
    登录后复制
    ):
    • 示例:
      groupadd developers
      登录后复制
      groupadd testers
      登录后复制
    • 实践: 尽可能根据项目或团队职能来划分组。
  • 创建用户并指定主组 (
    useradd
    登录后复制
    ):
    • 示例:
      useradd -m -g developers -s /bin/bash dev_user1
      登录后复制
      。这里
      -g
      登录后复制
      指定了用户的主组。每个用户都有一个主组,新创建的文件通常会继承主组的权限。
  • 将用户添加到附加组 (
    usermod -aG
    登录后复制
    ):
    • 示例:
      usermod -aG testers dev_user1
      登录后复制
      dev_user1
      登录后复制
      既属于
      developers
      登录后复制
      组(主组),又属于
      testers
      登录后复制
      组(附加组)。这样,
      dev_user1
      登录后复制
      就能访问
      developers
      登录后复制
      组和
      testers
      登录后复制
      组共享的资源。
    • 关键点:
      -aG
      登录后复制
      是个非常重要的组合,它表示“追加到附加组”,而不是覆盖已有的附加组。如果只用
      -g
      登录后复制
      ,会覆盖掉用户所有的附加组,这在生产环境里可能是个灾难。
  • 修改文件/目录的所属组 (
    chgrp
    登录后复制
    chown
    登录后复制
    ):
    • 示例:
      chgrp developers /var/www/project_repo
      登录后复制
      。将项目代码仓库的所属组设为
      developers
      登录后复制
    • 配合 SGID: 如果
      /var/www/project_repo
      登录后复制
      目录设置了SGID (
      chmod 2775 /var/www/project_repo
      登录后复制
      ),那么
      developers
      登录后复制
      组的成员在这个目录下创建的任何新文件,其所属组都会自动是
      developers
      登录后复制
      ,极大地方便了组内协作。

3. 权限委派:使用

sudo
登录后复制
替代
root
登录后复制
直登

在协作环境中,直接共享

root
登录后复制
密码是绝对不可取的。
sudo
登录后复制
是更安全的权限委派方式。

  • 配置
    /etc/sudoers
    登录后复制
    通过
    visudo
    登录后复制
    命令编辑
    sudoers
    登录后复制
    文件,可以精细地控制哪些用户或组可以执行哪些命令,以及是否需要密码。
    • 示例:
      dev_user1 ALL=(ALL) /usr/bin/systemctl restart nginx
      登录后复制
      。这允许
      dev_user1
      登录后复制
      root
      登录后复制
      权限重启
      nginx
      登录后复制
      服务,但仅限于这个命令。
    • 思考: 我通常会创建一个
      sudoers
      登录后复制
      组,然后把需要执行特权命令的用户加入这个组,再在
      sudoers
      登录后复制
      文件中给这个组配置权限,这样管理起来更集中。

4. 审计与监控:了解谁做了什么

虽然不是直接的权限管理命令,但审计日志对于多用户环境至关重要。

  • /var/log/auth.log
    登录后复制
    (或类似文件):
    记录用户登录、
    sudo
    登录后复制
    命令执行等安全相关事件。定期查看这些日志,有助于发现异常行为。

高效的用户和用户组管理,本质上是一种平衡艺术:在确保系统安全的前提下,最大限度地提升团队协作的便利性。它不是一劳永逸的配置,而是需要根据团队发展和项目需求持续调整和优化的过程。

以上就是Linux用户权限管理命令大全的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号