问题:我可以手动删除一些子文件夹,但不能删除其他子文件夹。它们都在同一个文件夹中。
我正在谈论 /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/microsite
已SGID
启用。microsite
目录、其父目录及其所有子目录均已SGID
启用,并且可以通过权限部分s
中设置的位进行识别。group
drwxr-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
权限问题,就像您所说的那样。