如何创建具有所有文件只读权限的用户?(即没有写权限的 root 用户)

如何创建具有所有文件只读权限的用户?(即没有写权限的 root 用户)

为了备份我的服务器,我想通过 SSH 远程访问它。为了尽量减少所有风险,我想让一个用户只具有读取权限,但可以访问所有文件,就像 root 一样。但是,他不应该有任何写入权限。

关于如何实现这一点,您有什么想法吗?

答案1

我建议您采用另一种维护要求较低的方法来解决您的问题。

您可以创建 ssh 密钥,限制对特定程序的访问权限。我不喜欢授予 root 不受限制的访问权限,但有时您需要启用某些命令以通过远程运行。使用 ssh 密钥,您可以通过 ssh 命令运行备份程序。

查看 sshd 手册页中的“AUTHORIZED_KEYS FILE FORMAT”部分(我假设您使用的是 OpenSSH)。

http://man.openbsd.org/OpenBSD-current/man8/sshd.8

答案2

您可以使用 ACL 实现这一点。您仍然需要一个以 root 身份运行的脚本来更改每个文件的权限。如果您感兴趣,请参阅 ACL、setfacl 和 getfacl 的手册页。

答案3

还有另一种不使用 ACL 的创建方法。但您需要谨慎行事。首先,创建一个组,例如名为 roroot(只读根)。然后将该组 ID 应用于所有目录。将组位的权限设置为 r-- 或八进制 400,然后您可以像普通用户一样创建一个用户帐户,例如 rorootusr,将下一个 ID 设置为系统上的任何值,使其成为组 roroot 的成员仅有的,不要让它成为 wheel、bin 等的一部分,这取决于您安装的组。接下来的部分会很混乱。使用 vim/nano/emacs/joe/ 任何你喜欢的编辑器打开 /etc/passwd 文件,然后查找您刚刚创建的 id,即 rorootusr,passwd 文件将如下所示

根:x:0:0 :: /根:/ bin / sh

从左到右用冒号分隔的字符串有用户名、密码(加密 + 影子)、用户 ID、组 ID、注释、主目录和 shell。从上面给出的例子中

rorootusr:x:512:450:Root 用户 RO:/home/rorootusr:/bin/bash

您将第三个字段 (512) 更改为 0。450 将是 roroot 的组 ID。保存编辑会话,您就完成了。现在 rorootusr 将具有 root 访问权限,但只是 roroot 组的成员,并且对系统具有只读访问权限。

希望这有帮助,谨致问候,汤姆。

相关内容