如何在linux中向所有用户授予文件夹的写访问权限?

Car*_*ers 223 linux apache-http-server permissions

我刚刚在 Ubuntu 上安装了 apache2,并注意到 /var/www 文件夹受到保护。我可以做sudo任何事情,但我宁愿只给它写访问权限。

我怎样才能做到这一点?

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

jti*_*man 346

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

sudo usermod -a -G www-data <some_user>
Run Code Online (Sandbox Code Playgroud)

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

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www
Run Code Online (Sandbox Code Playgroud)

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

sudo find /var/www -type d -exec chmod 2775 {} \;    
Run Code Online (Sandbox Code Playgroud)

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

sudo find /var/www -type f -exec chmod ug+rw {} \;
Run Code Online (Sandbox Code Playgroud)

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

  • 这*就是*您访问它的方式。复制和粘贴命令比尝试浏览 GUI 文件管理器的对话框来执行相同的操作要快。从长远来看,如果您至少阅读 chmod 和 chgrp 的手册页(“man chmod”),它会对您有所帮助。 (10认同)
  • 这太乏味了...我不能只让用户访问它,就好像它是任何其他文件夹一样? (3认同)
  • 如何使一个全新的文件具有组的“w”权限? (2认同)

小智 50

读+写:

sudo chmod -R a+rw /var/www
Run Code Online (Sandbox Code Playgroud)

读+写+执行:

sudo chmod -R a+rwx /var/www
Run Code Online (Sandbox Code Playgroud)

  • “a”是什么意思?全部? (2认同)

小智 39

有一种更简单的方法可以做到这一点,请尝试执行此命令。

sudo chmod -R 757 /var/www
Run Code Online (Sandbox Code Playgroud)

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

  • -1 缺乏解释。此外,`chmod $permissions -R $file` 无效...... (11认同)
  • 您能否深入了解该命令对 OP 的作用? (3认同)
  • `sudo chmod -R 757 /var/www` (2认同)
  • `-R` 是递归的,它不会“影响所有用户” (2认同)

Nik*_*hil 8

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

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

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY
Run Code Online (Sandbox Code Playgroud)

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

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY
Run Code Online (Sandbox Code Playgroud)

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

getfacl DIRECTORY
Run Code Online (Sandbox Code Playgroud)

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


use*_*138 5

快速简单的答案-

A。将 ( -a ) 您的用户 ( user_name ) 添加到组 ( -G ) www-data中。

sudo usermod -a -G www-data user_name
Run Code Online (Sandbox Code Playgroud)

b. 递归地 ( -R ) 为组 ( g )授予与/var/www的所有者用户 ( u )相同的 ( = ) 权限。

sudo chmod -R g=u /var/www
Run Code Online (Sandbox Code Playgroud)

说明:Debian/Ubuntu 上的 Apache 2 将用户和组www-data设置为/var/www的所有者。用户的默认权限是“查看和修改内容”,但组只能“查看内容”。因此,将您自己添加到 www-data 组并为其授予与 wwww-data 用户相同的权限,是一种快速而简单的开发方法。我为所有本地主机(PC/笔记本电脑)Web 开发环境执行此操作。