Другой способ - поместить пользователя apache и «пользователей-клиентов» в новую группу. Дополнительно каталог должен использовать закрепленный бит SGID
, чтобы каждый новый файл получал назначение группы для этой новой группы. Таким образом, веб-сервер и «пользователи-клиенты» могут без проблем работать с файлами
[17:57] progman@proglap /tmp/test $ ls -al /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 17:55 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Как вы видите, каталог получил бит SGID
, а владельцем является группа "users", в которой я (progman
). Нет, если другой пользователь добавляет файл, группе автоматически присваивается эта группа
[17:55] proglap ~ # touch /tmp/test/x
Это выполняется от пользователя root. Теперь мы получаем:
[17:57] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 72 Apr 1 17:59 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
-rw-r--r-- 1 root users 0 Apr 1 17:59 x
Как видите, добавленный файл от root, но для группы установлено значение users
, и таким образом I может удалить его
[18:00] progman@proglap /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 18:01 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Имейте в виду, что вам все еще нужно изменить chmod
, если вы хотите отредактировать файл как rw-r--r--
- это просто доступ для чтения группы . Но изменение chmod
, возможно, даже работа с umask
, лучше, чем работа с root-доступом и использование chown
.