如何在Linux中为所有用户提供文件夹的写访问权限?


191

我刚才在Ubuntu上安装了apache2,并注意到/ var / www文件夹受到保护。我sudo什么都可以,但是我只想给它写访问权限。

我怎样才能做到这一点?

我试过了,sudo chmod 7777 /var/www但是没有用。


这是可公开访问的服务器,还是没有与互联网的直接连接?如果是前者,那么考虑安全决策很重要-Internet上的服务器一直在遭受攻击(请查看您的/ var / log / messages或类似内容)。
kwutchak

这只是我的笔记本电脑,无法通过互联网访问。
卡森·迈尔斯,

Answers:


321

为了最好地与应该写信的多个用户共享,应该为/var/www它分配一个公共组。例如,Ubuntu和Debian上的Web内容默认组为www-data。确保所有需要写访问权限的用户/var/www都在该组中。

sudo usermod -a -G www-data <some_user>

然后在/ var / www上设置正确的权限。

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

此外,您应该将目录及其下的所有目录设置为“ GID”,以便在该目录下创建的所有文件和目录/var/www均归该www-data组所有。

sudo find /var/www -type d -exec chmod 2775 {} \;    

查找其中的所有文件,/var/www并添加所有者和组的读写权限:

sudo find /var/www -type f -exec chmod ug+rw {} \;

如果您正在编辑自己帐户的权限,则可能必须注销然后重新登录才能进行更改。


2
那是非常乏味的...我不能仅仅让用户访问它,就好像它是其他任何文件夹一样?
卡森·迈尔斯,

9
就是您授予访问权限的方式。与尝试在GUI文件管理器的对话框中导航以进行相同操作相比,复制和粘贴命令要快得多。从长远来看,如果您至少阅读chmod和chgrp的手册页(“ man chmod”),它将对您有所帮助。
jtimberman

也许我第一次阅读时不理解这些命令,而您所做的编辑使其更加清晰。
卡森·迈尔斯,2009年

1
guid +1以强制使用Apache权限。与027的umask一起使用时效果很好。如果需要写访问权限,则就像chmod g + w dir /一样简单
LiraNuna

1
为什么你的组权限的命令sudo chmod -R g+w,而不是g+rwg+rwX
2014年

31

有一种更简单的方法可以执行此命令。

sudo chmod -R 757 /var/www

本质上,该chmod命令会更改权限,并且-R切换会影响所有用户。然后,它只是给正确的使用权限。


3
您能否对命令对OP的作用有一些了解?
n0pe 2011年

11
-1由于缺乏解释。此外,这chmod $permissions -R $file是无效的…
Blacklight Shining

1
这是选项,然后是权限,而不是相反
Moataz Elmasry 2014年

2
sudo chmod -R 757 /var/www
Bwyss

请有经验的人建议编辑,并对此进行简要说明。
Adi Prasetyo

29

读+写:

sudo chmod -R a+rw /var/www

读+写+执行:

sudo chmod -R a+rwx /var/www

7

您也可以使用访问控制列表复制jtimberman建议的内容。的setfacl的命令接受-s以替换现有的ACL或-M修改它; -R使目录ACL递归;和-d将指定的设置设为默认设置,如果您打算使用即将到来的用户帐户,这将非常有用。

这些只是使用chmod为用户,组,其他和掩码设置权限:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

这可能是您要为指定用户或他/她的组执行的操作:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

当然,优点是您可以指定任何特定用户,多个用户等,而无需修改组设置。与chmod不同,如果希望某些组可以访问一个目录,而其他组只能访问另一个目录,则可以使用setfacl来实现。最后,要查看目录的ACL,请运行getfacl

getfacl DIRECTORY

您可以指定-R来查看子目录的ACL,或者-d来查看默认值。


2

快速简便的答案 -

一种。将(-a)您的用户(user_name)添加到组(-Gwww-data中

sudo usermod -a -G www-data user_name

b。给予组()相同(=)的权限的所有者用户(Û的)/无功/网络递归(-R)。

sudo chmod -R g=u /var/www

说明:Debian / Ubuntu上的Apache 2将User&Group www-data设置/ var / www的所有者。用户的默认权限是“查看和修改内容”,但是组只能“查看内容”。因此,将自己添加到www-data组并为其赋予与wwww-data用户相同的权限,是一种快速而轻松的开发方法。我在所有本地(PC /笔记本电脑)Web开发环境中都这样做。


1

我通常使用

chmod g+w /folder/ -R

这几乎是不言自明的。

它增加了大家在g的roup /folder/w仪式接入(+w),-R是递归的子文件夹。


-3

你可以试一下chmod 0777 /var/www吗?

一个警告:如果让所有人都可以访问此文件夹,则意味着如果黑客获得了对系统的访问权限,他们就可以访问该文件夹。因此,最好创建一组允许的用户,并为该组提供写访问权限。


那么为什么要提供此解决方案,然后立即抹黑呢?-1票
Tisch

-3

首先输入特定的文件夹路径,然后使用此命令…

chmod -R 777 foldername
chown username:username foldername 

7
哇,真不好!您不会给777加上-R,尤其是在询问该问题的人是新手并且不了解风险的情况下。
2012年

足够真实@recluze。
vgoff 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.