q3d*_*q3d 96 apache permissions sudo
所以我在/ var/www(称为cake)中有一个目录,我需要允许www-data写入它,但我也想写它(不必使用sudo).如果我机器上的其他用户(或黑客)试图修改该目录中的文件,我害怕将权限更改为777.我如何只允许访问自己和Apache的www-data?
小智 156
sudo chown -R yourname:www-data cake
Run Code Online (Sandbox Code Playgroud)
然后
sudo chmod -R g+s cake
Run Code Online (Sandbox Code Playgroud)
第一个命令更改所有者和组第二个命令添加s属性,该属性将保留具有相同组权限的蛋糕中的新文件和目录
Kwa*_*adz 42
正如Slicehost的一篇文章所述:
用户设置
那么让我们首先将主用户添加到Apache用户组:
Run Code Online (Sandbox Code Playgroud)sudo usermod -a -G www-data demo这会将用户"演示"添加到"www-data"组.确保使用-a和-G选项以及上面显示的usermod命令.
您需要注销并重新登录才能启用组更改.
立即检查组:
Run Code Online (Sandbox Code Playgroud)groups ... # demo www-data所以现在我是两个小组的成员:我自己的(演示)和Apache小组(www-data).
文件夹设置
现在我们需要确保public_html文件夹由主用户(demo)拥有,并且是Apache组(www-data)的一部分.
我们设置一下:
Run Code Online (Sandbox Code Playgroud)sudo chgrp -R www-data /home/demo/public_html当我们谈论权限时,我将添加关于sudo命令的快速注释:如上所示使用绝对路径(/ home/demo/public_html)而不是相对路径(〜/ public_html)是一个好习惯.它确保sudo正在正确的位置使用.
如果你有一个带有符号链接的public_html文件夹,那么请注意该命令,因为它将遵循符号链接.在工作的public_html文件夹的情况下,手动更改每个文件夹.
SETGID
好到目前为止,但请记住我们刚给出的命令只影响现有文件夹.什么新东西呢?
我们可以设置所有权,因此"www-data"组中也有新内容.
第一个命令将更改public_html目录的权限以包含"setgid"位:
Run Code Online (Sandbox Code Playgroud)sudo chmod 2750 /home/demo/public_html这将确保任何新文件都被赋予组'www-data'.如果您有子目录,则需要为每个子目录运行该命令(此类权限不适用于'-R').幸运的是,将创建新的子目录,并自动设置'setgid'位.
如果我们需要允许对Apache的写访问权限,例如上传目录,则设置该目录的权限,如下所示:
Run Code Online (Sandbox Code Playgroud)sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads只需设置一次权限,因为新文件将自动分配正确的所有权.
假设您想通过 sftp 进入一个与 www-data 共享读取、写入和执行权限的目录,您应该这样做:
1 - 将您自己添加到 www-data 组
sudo usermod -a -G www-data <your_user>
Run Code Online (Sandbox Code Playgroud)
2 - 递归设置文件夹和文件的所需用户:组所有权
sudo chown -R <your_user>:www-data <your_folder>
Run Code Online (Sandbox Code Playgroud)
3 - 这为所有用户添加了权限(读写执行)(a+rwx);限制他人的权限(o-rwx);为该目录 (ug+s) 下创建的每个新文件设置相同的(继承文件夹)用户:组。这将递归执行并且仅在文件夹中执行(可能正是您想要的)
sudo find <folder_name> -type d -exec chmod a+rwx,o-rwx,ug+s {} +
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187256 次 |
| 最近记录: |