TL; DR: у меня есть пользователь, который является участником группы в качестве дополнительной группы. Этот пользователь может удалять файлы с разрешениями 664 как вторичный пользователь, но не каталоги с разрешениями 775.
Подробности: у меня есть пользователь. Назовем его ftpuser. Я использую его для загрузки и скачивания файлов в свой devbox. Первичной группой пользователя является «ftp», которая также входит в группу «www» в качестве дополнительной группы. Мой веб-сервер работает как пользователь www и группа www, и у меня есть proftpd (работающий как www и www), настроенный на размещение всех файлов в необходимых каталогах как www и www (для владения файлами) и perms 664 для файлов и 775 для каталогов.
Моя проблема в том, что (пробовал с двумя ftp-клиентами) ftp-клиент может удалять файлы, но не папки. Filezilla возвращает 550 отказано в разрешении. Только владелец может удалить флаг, не установлен, и я трижды проверил разрешения, и они действительно 775.
Меня сводит с ума, что мне приходится каждый раз заходить на мой сервер, чтобы вручную удалять папки. Некоторые папки и файлы создаются одним из моих сценариев php, но разрешения устанавливаются правильно, когда я проверяю свойства файлов.
Создание каталогов и файлов работает феноменально. Можно удалять файлы, но не каталоги.
Freebsd 9.0 работает в VirtualBox (32-разрядная версия) Proftpd (работает как www и www) в качестве ftp-сервера (пробовал использовать как Dreamweaver, так и filezilla в качестве клиентов) Базовая настройка усилителя (apache, mysql и php).
Редактировать:
Родительская папка была 755. Я знал, что это будет что-то дурацкое, простое и легко не заметить. Я думал, что установил массовую завивку на 775 на два каталога (apache22 / data), но я должен был создать этот каталог после того, как установил завивки. Ты узнаешь что-то новое каждый день. Спасибо!
Разрешение на удаление папки - это разрешение на «запись» в родительскую папку. На самом деле вы удаляете запись «подпапка» в родительской папке. Я предполагаю, что родительская папка не имеет прав на запись для группы «www».
Чтобы удалить каталог, у вас должны быть права на запись в его родительский каталог. Например, учитывая этот каталог:
drwxr-xr-x 3 owner staff 102 Nov 5 22:00 .
drwxr-xr-x 160 owner admin 5440 Nov 5 22:00 ..
drwxr-xr-x 2 owner staff 68 Nov 5 22:00 foo
только owner
можно удалить каталог foo
(потому что только owner
имеет разрешение на запись в родительский каталог).
Если вы предоставите staff
права записи группы в родительский каталог:
drwxrwxr-x 3 owner staff 102 Nov 5 22:00 .
drwxr-xr-x 160 owner admin 5440 Nov 5 22:00 ..
drwxr-xr-x 2 owner staff 68 Nov 5 22:00 foo
тогда любой член staff
группа может удалить каталог foo
.
Однако обратите внимание, что для удаления каталога им потребуется также удалить все его содержимое, поскольку вы не можете удалить непустой каталог.