Поддержание владельца файла Linux и информации о группе в многопользовательской системе

Я имею веб-приложение, работающее на Linux (использующий CentOS 6) использование универсального некорневого имени пользователя, говорю app1. Я связал все файлы под папкой,/home/app1 с тем пользователем/группой (использующий chown-R app1:app1), таким образом, это может подать веб-страницы и записать в журналы по мере необходимости. Когда дело доходит до обновлений, хотя я пытаюсь выяснить, как обработать полномочия так, чтобы я не должен был постоянно выполнять показанную команду на/home/app1 каталоге. Существует требование для входа сервера с уникальным идентификатором поэтому, если devguy1 входит в систему и копирует обновление файлы, он переписал, теперь имеют devguy1 как владельца и группу, и app1 не сможет считать новый файл. Devguy1 является частью app1 группы, таким образом, они могут обновить приложение, но не наоборот. Я вижу, что существует способ скопировать файлы с помощью CP-p, который сохранит полномочия, но мы обычно используем Вне всякого сравнения для перемещения обновлений от нашего сервера Dev до производства, которое не имеет той опции. Существует ли установка на родительской папке, которая могла заставить файл сохранить app1 информацию о владельце/группе или является там путем который, когда новый пользователь создается, что я мог добавить app1 к их группе?

2
задан 25 September 2014 в 03:28
2 ответа

Установите биты setuid и setgid для всех каталогов в / home / app1:

find /home/app1 -type d -exec chmod ug+s '{}' +

(см. man find , чтобы узнать о команде find, и ] man chmod , чтобы узнать о битах setuid и setgid.) Это приводит к сохранению владельцев пользователей и групп при создании новых файлов и каталогов в любом из существующих каталогов.

Я считаю, что есть случаи, когда это произойдет. по-прежнему игнорируйте биты suid и sgid, такие как сохранение в общие ресурсы SMB или копирование с сохраненными разрешениями с использованием cp -p . Но по большей части он должен работать.

1
ответ дан 3 December 2019 в 10:45

Другой вариант, который не совсем то, о чем вы просите, - это использовать средство ACL posix.

Вот пример, который я использую для поддержки разрешения на структуру, основанную на локальной группе в дополнение к собственному идентификатору пользователя:

# Do this once or occasionally, but only cosmetic
chown -R network:network /local/network

setfacl -R -m user:network:rwx /local/network
setfacl -R -dm user:network:rwx /local/network

setfacl -R -m group:it-neteng-users:rwx /local/network
setfacl -R -dm group:it-neteng-users:rwx /local/network

На очень старых ядрах вам может потребоваться смонтировать файловую систему с опцией 'acl', чтобы это было доступно, но этого не должно быть необходимо для чего-то достаточно современного.

В вашем случае вы, вероятно, захотите использовать acl'ing для предоставления веб-серверу разрешений на чтение файлов, тогда право собственности на самом деле не будет иметь значения.

2
ответ дан 3 December 2019 в 10:45

Теги

Похожие вопросы