AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 790400
Accepted
stickynotememo
stickynotememo
Asked: 2025-01-31 18:49:56 +0800 CST2025-01-31 18:49:56 +0800 CST 2025-01-31 18:49:56 +0800 CST

如果我是系统上唯一的用户,为什么 chmod 777 这么糟糕?

  • 772

我听说这chmod 777是个糟糕的主意。但是,没有人会使用我的系统(对于许多 *nix 系统来说,这是一种相当常见的情况)。为什么我不应该允许一切?

permissions
  • 5 5 个回答
  • 4469 Views

5 个回答

  • Voted
  1. Best Answer
    dr_
    2025-01-31T21:55:14+08:002025-01-31T21:55:14+08:00

    您可能是系统上唯一的人类用户。但如果您仔细查看,/etc/passwd就会发现还有很多其他用户:

    root:x:0:0:root:/root:/bin/ash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/mail:/sbin/nologin
    news:x:9:13:news:/usr/lib/news:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    man:x:13:15:man:/usr/man:/sbin/nologin
    postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
    cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
    ftp:x:21:21::/var/lib/ftp:/sbin/nologin
    sshd:x:22:22:sshd:/dev/null:/sbin/nologin
    at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
    squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
    xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
    games:x:35:35:games:/usr/games:/sbin/nologin
    cyrus:x:85:12::/usr/cyrus:/sbin/nologin
    vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
    ntp:x:123:123:NTP:/var/empty:/sbin/nologin
    smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
    guest:x:405:100:guest:/dev/null:/sbin/nologin
    nobody:x:65534:65534:nobody:/:/sbin/nologin
    nginx:x:100:101:nginx:/var/lib/nginx:/sbin/nologin
    vnstat:x:101:102:vnstat:/var/lib/vnstat:/bin/false
    redis:x:102:103:redis:/var/lib/redis:/bin/false
    

    这些是系统帐户,即在系统上运行不同服务和守护进程的帐户:Web 服务器、邮件服务(传入和传出)、ftp 服务器、cron 作业等。

    通常这些服务在自己的目录中运行,并像好孩子一样做它们的事情。但是,如果出现错误,或者更有可能的是,如果有人通过这些服务之一(例如 Web 服务器)入侵您的计算机,您不希望这些用户帐户对整个系统拥有不受限制的完全读写访问权限。

    简而言之,向这些用户提供超出其需要的访问权限,你不会得到任何好处,反而会失去很多。这称为最小特权原则。

    (注:密码文件取自这里。)

    • 42
  2. Chris Davies
    2025-02-01T08:34:06+08:002025-02-01T08:34:06+08:00

    你问,

    我听说 chmod 777 是个糟糕的想法。[…] 为什么我不应该允许一切?

    然后在评论中提到,

    我在让 Steam 下载另一个文件系统上的游戏时遇到了权限问题

    如果它是 Linux 原生文件系统,您可以将挂载点更改为您的所有者,或者您必须将其设置为所有用户均可写。由于最小特权原则,第二种选择并不理想:除非必要/适当,否则您不会授予访问权限。您无法预测会发生什么,因此您不会允许您不期望的事情。

    例子

    # Take ownership
    sudo chown "$USER" /path/to/mountpoint
    

    如果你已经以 root 身份下载了项目,但实际上应该以自己的身份下载,请使用递归标志来获取文件系统挂载点下的所有内容的所有权

    sudo chown -R "$USER" /path/to/mountpoint
    

    请注意,如果您在/系统目录或任何系统目录上尝试这些命令,您将会破坏您的系统。

    • 13
  3. AnoE
    2025-02-03T18:59:47+08:002025-02-03T18:59:47+08:00

    一个重要的技术原因是,一些与安全相关的程序拒绝处理权限太过宽松的文件。例如,除非文件具有非常严格的权限,否则sshd不会使用它.ssh/authorized_keys。

    其次,您可能会因为意外删除或破坏文件或其他原因而导致系统无法启动/etc。强迫自己使用sudo或修改这些文件是避免自己犯错的一步。

    另一个更心理的原因:在 Unix*ish 系统上,处理权限是您将不断做的事情。如果您习惯于在任何地方应用 777,那么您将永远不会遇到与“真实”系统相关的小细节(即那些不仅由一个人使用、应用程序数量非常有限且没有安全相关数据的系统)。这意味着您正在剥夺自己习惯这一点并培养对这些事物如何运作的直觉的机会。

    毕竟,一旦你“熟悉”了权限系统,它就会变得非常非常简单。默认设置(即默认 umask 等)在现代系统中是“合理的”,因此在大多数情况下,你可以使用它;特别是当你独自一人使用系统时。

    如果您曾经在更敏感的系统上工作,特别是在商业环境中,您会很高兴权限是第二天性。

    • 2
  4. ron
    2025-02-01T10:04:13+08:002025-02-01T10:04:13+08:00

    对系统文件和目录应用 chmod 777 将会破坏你的系统

    这个问题让我非常感兴趣,所以我chmod -R 777 /*在我家的 rhel-9.4 系统上做了这件事。正如预期的那样,/run文件夹响应了只读文件系统,/proc文件夹没有被占用。这样做之后,我能够yum update成功重新启动并登录到 rhel-9.5。然而,详细启动确实显示安全审计服务和 ssh 服务失败,而 ssh 明确地将其关键文件权限识别得太开放,所以它无法启动。然后 Firefox 会打开,但尝试访问任何网站时都会显示“无法访问”,就像互联网不起作用一样。

    所以说破坏你的系统有点脱离上下文。我的意思是,如果根本没有互联网或网络访问,它就是完全独立和孤立的,然后是处理权限相关内容的东西/服务,但一般来说,如果你不需要它们,那么很难确定全局 chmod 777 的后果。你基本上是在说让一切运行,除了我提到的一些合理的例外,我认为事情会继续。

    现在,您没有明确说明在哪些文件夹上执行 achmod 777会发生什么。所以,假设在chmod 777 /steam只有一个文件夹的情况下执行某些操作,很抱歉让很多人失望,但在过去 20 年的工作中,我已经处理过这个问题,可以追溯到 SGI IRIX 时代,并且NO achmod 777从根本上来说并不是坏事。 这在很大程度上是一个上下文问题,如果有其他合乎逻辑的合理安全性,例如只有一个用户和物理位置是单用户自动登录设置的主要安全机制,则可以执行 777 并且不会引起问题。这就像说内部锁箱不好,而它已经在锁箱里面了。我确信您可以 chmod 777 很多系统文件并拥有一个正常运行的系统,但是只有懒惰的不太聪明的人会在整个系统范围内挥舞锤子来解决不是系统范围的问题。

    在您使用 steam 游戏的背景下,这意味着互联网,这意味着第三方软件、错误和安全,以及与其他用户对战,在 Linux 上对所有 steam 的东西进行统一的 chmod 777 是否可以,我不知道。我不会打赌 1 美元可以。

    • 1
  5. Tom
    2025-02-03T22:23:10+08:002025-02-03T22:23:10+08:00

    我为什么不应该允许一切?

    因为即使您的一个假设是错误的,系统上基本的安全性也不会彻底失败。

    原因是它为您提供了更高的安全性,至少在某种程度上限制了权限处理,以便服务 XYZ 中的下一个错误不会将您自制的色情收藏和银行详细信息泄露给全世界。

    • -1

相关问题

  • 组权限如何工作?

  • Redis日志文件权限错误,但是权限已经是777

  • 以 root 权限启动 zypper 命令

  • 以非特权用户身份运行时,meld 无法访问 /dev/fd/* 的可能原因是什么?

  • 另一个用户的非空子目录是否可以安全地从我的目录中删除?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve