我有一台服务器,几位不同的程序员将使用它来处理不同的网站。每位程序员都需要访问每个网站。
我想到两种“干净”的方法来做到这一点,但我宁愿避免使用它们......
每个网站都有自己的用户/组。网站将存储在 /home/username/www/ 中,我将使用 Apache 的 suEXEC 在用户/虚拟主机之间切换。
我在系统上创建一个用户/组,每个程序员都以此身份登录。然后可以将网站存储在 /var/www/website.com/ 中,Apache 将以该用户身份运行,以对文件具有读/写访问权限
第 1 点的明显安全优势是每个网站都是沙盒。如果一个网站受到攻击,其他网站应该是安全的。这种方法的缺点是每个程序员都需要记住多个用户名/密码。
第 2 点意味着每个程序员都有一个登录名(相同的登录名......)并且混乱更少(主机上的 50 个网站意味着 50 个新用户/组)
我的理想设置是给每个程序员一个自己的用户/组。这样他们就可以有自己的 ~ 文件夹来存储他们的东西,如果我需要撤销程序员的访问权限,我只需禁用他们的登录即可。这比必须更改每个网站/程序员帐户的密码要好得多。
我不能依赖版本控制系统的原因是它很少被使用。这个主机上的很多网站都会使用 Joomla/Wordpress/等。
因此,我基本上正在寻找一种干净且安全的方法,让多个程序员可以在一个主机上处理多个共享网站。您有什么建议?
答案1
允许多人编辑生产代码会造成很多麻烦。请使用版本控制并仅部署带标签的版本。
如何部署构建并不像跟踪更改和能够退出那么重要。
答案2
尽管我同意版本控制是一个很棒的选择,您可以通过执行以下操作来实现您的要求(再次特别注意有关版本控制列出的关注点)。
所以这是答案你的问题:
创建两个用户并赋予他们相同的组 ID
#groupadd -g 5000 programmers
#useradd ren
#useradd stimpy
编辑 /etc/passwd 文件并更改两个用户的 guid:
ren:x:505:5000::/home/ren:/bin/bash
stimpy:x:506:5000::/home/stimpy:/bin/bash
接下来,更改这些用户的 umask,以便他们为组程序员创建具有 rw 权限的所有文件
#vi /home/ren/.bash_profile
umask 002
现在,对每个用户执行 su 操作,可以看到他们都可以继续编辑相同的文件:
#su - ren
#vi /path/to/file.txt
here's some content in the file
#exit
#su - stimpy
#vi /path/to/file.txt
append some more content
您会发现,当 ren 创建文件时,所有权为 ren:programmers,其权限为 rw-rw-r。这将允许 stimpy 编辑该文件。您还可以跟踪最初创建文件的方式(但无法跟踪编辑文件的人)。