Debian 服务器中用户/组的最佳实践

Debian 服务器中用户/组的最佳实践

在我的服务器/vps 上,我最初获得凭证后:

adduser meder
visudo

在 visudo 的最底部:

meder    ALL=(ALL) ALL

从那时起,我就开始使用meder, 以及sudo命令。这就是我应该做的吗?

关于创建一个用户组以便可以访问相同文件的主题www-datameder我应该给予什么特定的权限,我应该如何设置以便两者都可以接触相同的文件(如果提供示例代码会很好,因为我还不那么流畅)。

答案1

是的,添加新的非 root 用户,然后从中执行 sudo 是“最佳实践”。如果您需要同时运行大量命令,许多人会建议运行sudo su -。但是,sudo 有一个 -i 选项,可用于为您提供 root shell。

此外,如果您想禁用 root 的交互式登录,您可以将密码更改为/etc/shadow“!”。

为了让两个用户访问相同的文件,您可以创建一个新组(我们称之为“共享”):

$ sudo groupadd shared

然后您可以将您的用户添加到其中:

$ sudo usermod -a -G shared meder
$ sudo usermod -a -G shared www-data

然后,对于您希望同时访问的任何文件或目录,您可以更改该文件/目录的组所有权:

$ sudo chgrp share [path-to-file]

如果您希望组中的用户对文件拥有完全权限,您可能还必须更改文件权限:

$ sudo chmod g+w [path-to-file]

或者

$ sudo chmod 775 [path-to-dir]

阅读man chmod各种权限语法的描述。

最后,您经常需要设置组位,以便新创建的文件由拥有目录的组创建,而不是由您的默认组创建。例如,当您创建用户“meder”时,useradd 将创建一个名为“meder”的“用户私有组”,用户“meder”将是唯一成员。这意味着当您创建新文件时,它们将归 meder:meder(用户 meder 和组 meder)所有。如果您希望它们归 shared 组所有,则必须在目录上设置组 ID 位。为此,您需要:

$ sudo chown g+s [path-to-dir]

完整的例子如下:

$ sudo -i
# mkdir /opt/shared
# groupadd shared
# usermod -a -G shared meder
# usermod -a -G shared www-data
# chgrp shared /opt/shared
# chmod 775 /opt/shared
# chmod g+s /opt/shared
# exit

我遇到的唯一问题是,大多数文件都是使用 755 或 644 权限创建的,这意味着您总是必须手动为共享文件夹中的文件添加组写入权限。可能有办法解决这个问题,只是我不知道。

最后,您不必创建共享组。您只需将“meder”添加到 www-data 组,然后使用该组完成其余操作即可。

答案2

如果 www-data 是一个帐户(可能是 apache 运行的帐户?),那么您需要将 meder 添加到 /etc/group 中的相应组中,或者可以创建一个包含 meder 和 www-data 的新组(通过使用 groupadd)。

完成后,当您登录时,您可以运行“newgrp”以使其成为您的“当前”组,然后您创建的所有文件都将具有共享组的组所有权。

答案3

在 Debian 中,通常您不需要担心创建 www 数据,因为在大多数情况下,Debian 打包程序会在安装 deb 包时提供维护者脚本来自动执行设置。

相关内容