我在 Linux 下的 Apache 目录 /var/www 中有一个运行的网站。
此站点在 /var/www-store 中的 Web 目录根目录之外有一些文件,这些文件由 apache 用户 www-data 写入和读取。
我需要另一个用户对此文件存储 /var/www-store/sync 的子目录具有读写权限,但出于安全原因,我不希望他们能够访问(读取或写入)此目录之外或文件系统上任何其他地方的任何文件。
此外,该用户写入的文件需要可由 apache 用户写入,反之亦然。
有人可以帮助我设置该用户和这些目录所需的权限以提供上面详述的安全性吗?
答案1
您可以在目录和您想要与用户共享的文件上设置组所有权,而不是在文件系统的任何其他地方?
chown -R apache:[user-name-here] /var/www-store/sync/*
这将以递归方式设置目录的组所有权。apache
将是所有者,而您的用户将是组所有者,因此您需要确保目录和文件可以被读取和写入:
chmod ug+rw /var/www-store/sync/*
上面这一行将允许用户和组所有者读取和写入该目录。
然后,您需要确保父目录没有为所有用户设置读取或写入权限。 也可以使用以下命令完成此操作chmod
:
chmod o-rw /var/www-store/
请注意,上面的代码行不是递归的,否则会影响之前设置的 permissinso。应该满足您全部需求,如果不是,它至少可以帮助您入门。免责声明:我还没有真正尝试过,所以我不能肯定地说它会起作用,但如果不,chmod
应该chown
会让你部分成功。如果你是出于安全原因这样做,你可能还想在另一个目录上彻底测试它,最好专门为测试创建一个。
答案2
您可以将其他用户添加到一个组中。然后授予该组对目录的读写权限/var/www-store/sync
。
chown -R www-data:somegroup /var/www-store/sync
chmod -R 770 /var/www-store/sync
答案3
如果用户不需要物理 TTY,您可以尝试创建一个仅 sftp 用户,并为该用户的组配置 OpenSSH 的 ChrootDirectory。