因此,我在/var/www中有一个目录(称为cake),我需要允许www-data写入该目录,但我也希望写入该目录(不必使用sudo)。我害怕将权限更改为777,以防我机器上的其他用户(或黑客)试图修改该目录中的文件。如何只允许我自己和Apache的www-data访问?
发布于 2012-02-04 01:46:24
sudo chown -R yourname:www-data cake然后
sudo chmod -R g+s cake第一个命令更改所有者和组。
第二个命令添加了s属性,该属性将新文件和目录保留在具有相同组权限的蛋糕中。
发布于 2013-10-28 00:45:01
如an article by Slicehost中所述
用户设置
因此,让我们从将主用户添加到Apache用户组开始:
sudo usermod -a -G www-数据演示
这会将用户“demo”添加到“www-data”组。确保将-a和-G选项与上面所示的usermod命令一起使用。
您需要注销并重新登录才能启用组更改。
立即检查组:
组... # demo www-data
因此,现在我是两个组的成员:我自己的组(demo)和Apache组(www-data)。
文件夹设置
现在我们需要确保public_html文件夹属于主用户(demo),并且是Apache组(www-data)的一部分。
让我们来设置一下:
sudo chgrp demo www- -R /home/demo/public_html
在我们讨论权限时,我将添加一个关于sudo命令的快速注释:使用上面所示的绝对路径(/home/demo/public_html)而不是相对路径(~/public_html)是一个好习惯。它确保在正确的位置使用sudo。
如果您有一个带有符号链接的public_html文件夹,那么要小心使用该命令,因为它将跟随符号链接。在使用public_html文件夹的情况下,请手动更改每个文件夹。
设置
到目前为止还不错,但请记住我们刚才给出的命令只影响现有的文件夹。有什么新鲜事吗?
我们可以设置所有权,这样新的内容也会出现在“www-data”组中。
第一个命令将更改public_html目录的权限,使其包含"setgid“位:
sudo chmod 2750 /home/demo/public_html
这将确保所有新文件都被赋予'www-data‘组。如果您有子目录,则需要为每个子目录运行该命令(这种类型的权限不适用于'-R')。幸运的是,将自动创建带有'setgid‘位的新子目录。
如果我们需要允许对Apache的写访问,例如对一个上传目录的写访问,那么像这样设置该目录的权限:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
权限只需设置一次,因为新文件将自动分配正确的所有权。
发布于 2021-03-01 15:56:20
假设您想通过sftp进入一个目录,与www-data共享读取、写入和执行权限,这是您应该做的:
1-将自己添加到www-data组
sudo usermod -a -G www-data <your_user>2-设置想要的用户:递归设置文件夹和文件的组所有权
sudo chown -R <your_user>:www-data <your_folder>3-向所有用户(a+rwx)添加权限(读写执行);限制其他用户的权限(o-rwx);为在该目录(ug+s)下创建的每个新文件设置相同(文件夹继承)用户:组。这将被递归地执行,并且只在文件夹中执行(可能正是您想要的)
sudo find <folder_name> -type d -exec chmod a+rwx,o-rwx,ug+s {} +https://stackoverflow.com/questions/9133024
复制相似问题