Помогите с правами unix на доступ к файлам

компьютеры Linux безопасность

Предположим у меня есть несколько пользователей: u1, u2, u3, u4, u5
Предположим у меня есть директория /usr/work в которой находятся подкаталоги d1, d2, d3, d4, d5

Нужно сделать так, чтобы доступ к директориям и их содержимому был ограничен следующим образом:
d1 — (u1, u2, u4)rwx, остальные rx
d2 — (u2, u5)rwx, остальные rx
d3 — (u3, u5)rwx, остальные rx
d4 — (u1, u3)rwx, остальные rx
d5 — (u2, u3, u5)rwx, остальные rx

Как это сделать оптимальным образом? Я думал насчет того, чтобы создать пять групп g1, g2, g3, g4, g5 с правами rwx для соответствующих директорий. На первый взгляд хорошо, пользователь u5 будет состоять в трех группах g2, g3 и g5, пользователь u2 — в группах g1, g2, g5 и т.д. Но если пользователь u5 попытается создать, допустим, в каталоге u2 файл new.txt, то создать он его может только с одной предопределенной группой (primary group), например g2 (g3 или g5, а может у него есть еще своя группа, users например), и в других каталогах d3 и d5 он будет тоже создавать файлы от имени группы g2. Можно ли сделать так, чтобы создаваемые пользователем файлы в каталоге d2 имели группу g2, в d3 — g3, а в каталоге d5 — g5?

Возможно ли реализовать разделение доступа другим способом?

Я думал насчет того, чтобы написать скрипт, который будет искать в каталогах элементы с неправильными правами (например файл, созданный от имени группы g1 в каталоге d4) и делать chgrp, но это, на мой взгляд, дубовый костыль.

Попрошу не предлагать создать пять дополнительных пользователей с разными паролями с правами rwx на соответствующую директорию для каждого пользователя (например xusr1 имеет rwx на d1, xusr2 — d2 и т.д.) и раздать пароли (xusr1 — для u1, u2, u4, xusr2 — для u2, u5 и т.д.) Это решение хорошо простотой, но не гибкостью.

Система — Debian GNU/Linux 5.0 (Lenny).

Примечание:
Поставил. Заработало.
Спасибо!
Ответы:
sticky bit поставьте на каталогах — тогда наследование группы-владельца будет происходить по BSD-шной семантике, то есть группа у создаваемых в каталоге объектов будет наследовать не первичную группу создающего пользователя, а группу каталога-родителя.
Первое, что пришло в голову - пусть у каждого пользователя будет своя копия всех файлов, и в них он может делать что угодно, но посылать в центральный репозиторий только то, на что у него есть право. Можешь наваять такую систему сам на Питоне или взять любую систему контроля версий.
Или решай головоломку с помощью suid и sticky bit, но у них есть всем известные проблемы с безопасностью.
Или в баше кажется была система хуков, но я не копался в ней.
Или поднимай SeLinux.
alexander.p, вы, наверное, хотели сказать sgid-бит, а не sticky. Но вот группе, в зависимости от umask обычно не достанется доступа на запись в создаваемые файлы и директории. Эту проблему можно решить изменив umask (не очень хороший метод, ибо повлияет не все файлы, создаваемые пользователем) или с помощью задания прав доступа по умолчанию для новых объектов в директории с помощью POSIX ACL (вот это уже нормальный вариант). К сожалению, некоторые программы после создания файла меняют ему зачем-то права доступа. Если таковые используются, будут проблемы.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.