奇怪的文件夹权限行为 - 一些子文件夹具有完全权限,而其他则没有

奇怪的文件夹权限行为 - 一些子文件夹具有完全权限,而其他则没有

问题:我可以手动删除一些子文件夹,但不能删除其他子文件夹。它们都在同一个文件夹中。

我正在谈论 /var/www/html 文件夹和我在其中开发的应用程序。

外观:

在此处输入图片描述

如您所见,有一个文件夹带有挂锁图标。这意味着我无法重命名或删除其中的元素。但我的 Web 应用程序可以。

我的 Web 应用程序可以从所有这些文件夹中删除元素。而我,作为 Ubuntu 用户,我也可以这样做,但“microsite”文件夹除外。

笔记:

LAMP_HTML是 /var/www/html 的桌面快捷方式

面板4是我的网络应用程序的名称

Ubuntu这是我在 ubuntu 中的用户名

www-数据是具有修改和删除元素权限的 apache 组/var/www/html文件夹

图中这些里面的子文件夹都有数字作为文件夹名称,这些是应用程序元素的ID,blablabla

我是一名Linux控制台新手,我会告诉你我在研究时做了什么:

检查文件夹权限:

ubuntu@UbuntuPC:~$ ls -la /var/www/html/Panel4/uploads
total 40
drwxrwsr-x 10 www-data www-data 4096 ene 17 19:15 .
drwxrwsrwx 16 www-data www-data 4096 ene 19 17:16 ..
drwxr-sr-x  5 www-data www-data 4096 ene 20 23:20 microsite
drwxrwxr-x  3 www-data www-data 4096 dic 21 14:15 product
drwxrwxr-x  3 www-data www-data 4096 dic 21 14:09 productcategory
drwxrwsr-x  5 www-data www-data 4096 ene 11 13:05 property
drwxrwxr-x  2 www-data www-data 4096 dic 19 20:35 repository
drwxrwxr-x  3 www-data www-data 4096 dic 21 14:07 service
drwxrwxr-x  3 www-data www-data 4096 dic 20 23:14 servicecategory
drwxrwxr-x  2 www-data www-data 4096 dic 19 20:35 slideshow

检查“microsite”文件夹权限:

ubuntu@UbuntuPC:~$ ls -la /var/www/html/Panel4/uploads/microsite
total 20
drwxr-sr-x  5 www-data www-data 4096 ene 20 23:20 .
drwxrwsr-x 10 www-data www-data 4096 ene 17 19:15 ..
drwxr-sr-x  4 www-data www-data 4096 ene 20 22:06 2
drwxr-sr-x  4 www-data www-data 4096 ene 20 23:05 3
drwxr-sr-x  4 www-data www-data 4096 ene 20 23:20 4

检查“产品”文件夹权限(我可以使用我的网络应用程序和 ubuntu 用户进行管理)

ubuntu@UbuntuPC:~$ ls -la /var/www/html/Panel4/uploads/product
total 12
drwxrwxr-x  3 www-data www-data 4096 dic 21 14:15 .
drwxrwsr-x 10 www-data www-data 4096 ene 17 19:15 ..
drwxrwxr-x  4 www-data www-data 4096 dic 21 14:15 1

如您所见,两个文件夹的输出相同。我可以从一个文件夹中删除内容,但不能从另一个文件夹中删除内容。我很困惑。作为 Ubuntu 用户,我需要控制所有这些文件夹,我的 Web 应用程序也需要它。

有任何想法吗?

答案1

文件夹/var/www/html/Panel4/uploads/micrositeSGID启用。microsite目录、其父目录及其所有子目录均已SGID启用,并且可以通过权限部分s中设置的位进行识别。groupdrwxr-sr-x

按照SGID设置,在其中创建的任何文件夹的组 ID 都将设置为父目录的组 ID。如果任何二进制文件被设置,SGID那么当您执行它时,用户的组 ID 将更改为二进制文件的组 ID。

但这SGID不是问题的原因,这些文件夹没有为这些目录设置组写入权限。因此您无法删除或在其中创建新的文件/文件夹。为避免这种情况,请运行chmod g=rwx <folder-name>以授予写入权限。

并将您的用户名添加为群组成员www-data

有关 Linux 文件权限的更多信息参考这个

答案2

我注意到s权限设置中的。我确实花了一段时间才终于弄明白。其实很简单。

sudo adduser myUserName www-data

此功能将您添加到 www-data 组(这样您就可以在不锁定的情况下进行写入和编辑)。执行此功能后,您需要标准化 html 文件夹中的所有内容,以便通过执行这些命令使新权限生效。

## reseting folders and standardize everything in /var/www/html
## so apache can serve files
sudo chown -R www-data:www-data /var/www/html  

## so you can write these files owned by apache
chmod -R 775 /var/www/html   ## see EDITED below

编辑:使用chmod -R 775 /var/www/html,而不是sudo chmod -R 775 /var/www/html

## ensure that everything is checked (using ls is not reliable this is safer)
shopt -s nullglob
files=("/var/www/*");
for f in "${files[@]}"; do sudo umask 002 $f; done   ## fixing files and directories

这也将纠正s权限问题,就像您所说的那样。

相关内容