在我最初获得凭证之后,在我的服务器/ vps上:
adduser meder visudo
在visudo,在最底部:
meder ALL=(ALL) ALL
从那以后,我用meder和sudo命令。 这几乎是我应该怎么做呢?
关于创build一个用户组这样的主题,使得www-data和meder可以访问相同的文件,我应该给予什么样的特权,我应该如何设置它们,以便能够触摸相同的文件(如果示例代码是提供,因为我不那么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软件包时提供维护者脚本来自动安装。