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

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

adduser meder visudo 

在visudo,在最底部:

 meder ALL=(ALL) ALL 

从那以后,我用medersudo命令。 这几乎是我应该怎么做呢?

关于创build一个用户组这样的主题,使得www-datameder可以访问相同的文件,我应该给予什么样的特权,我应该如何设置它们,以便能够触摸相同的文件(如果示例代码是提供,因为我不那么stream利)。

是的,添加一个新的非root用户,然后sudoing是“最佳做法”。 如果你有很多命令立即运行,很多人都会说sudo su - 。 但是,sudo有一个-i选项,用来给你一个root shell。

另外,如果您想禁用根用户的交互式login,则可以将/etc/shadow的密码更改为“!”。

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

 $ 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 ,获取各种许可语法的说明。

最后,您经常需要设置组位,以便使用拥有该目录的组而不是您的默认组创build新创build的文件。 例如,当您创build用户“meder”时,useradd将创build一个名为“meder”的“用户私人组”,而用户“meder”将是唯一的成员。 这意味着当您创build新文件时,他们将由meder拥有:meder(用户meder和group meder)。 如果您希望它们由共享组拥有,则必须在目录上设置组标识位。 要做到这一点,你需要:

 $ 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权限创build的,这意味着您必须手动向共享文件夹中的文件添加组写入权限。 这可能有一个办法,我只是不知道。

最后,您不必创build共享组。 您可以将“meder”添加到www-data组,然后在该组中执行其他操作。

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

一旦你这样做,当你login时,你可以运行“newgrp”来创build你的“当前”组,然后你创build的所有文件将拥有共享组的组所有权。

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