1

Это должно быть просто, но я не заставляю его работать в тесте.

Используемое мной торрент-приложение (на основе CLI) еще не способно определить пользователя / группу / разрешения для загружаемых файлов. Ему также нравится устанавливать права доступа к файлам таким образом, чтобы их нельзя было сильно изменить.

Я хотел бы использовать set-uid и set-group-id для решения этой проблемы.

Приведенный путь примерно так: / тома / торренты / фильмы

Я бы хотел, чтобы каталог "movies" позволял всем пользователям в системе иметь полный доступ для чтения и записи. Файлы не должны быть исполняемыми, но, разумеется, каталоги должны быть для открытия в них компакт-диска. Я доверяю всем пользователям этой системы, но я буду воздерживаться от выполнения битов в файлах, чтобы предотвратить случайные ошибки.

Все, что сохраняется / хранится в "фильмах", должно наследовать пользователя / группу / разрешения фильмов и распространяться на все подкаталоги и файлы. При этом мне не нужно беспокоиться об отсутствии функции установки разрешений в приложении. Если для foo:bar для фильмов установлено значение rw, а пользователь the_user приходит и помещает файл в фильмы, я ожидаю, что файлы станут rw foo:bar.

Благодарю. Я пробовал это несколькими разными способами, и я терплю неудачу. Я редко использую set-uid и set-group-id или липкие биты.

3 ответа3

1

Максимум, что вы можете сделать, это сделать setgid каталога, который позволит файлам и каталогам, созданным в нем, получить владельца группы каталога. Однако бит setgid не будет унаследован, что означает, что к чему-либо за пределами первого уровня не будет применено владение группой. Единственный способ решить эту проблему - использовать cron или incron для применения изменений разрешений соответствующим образом.

1

На основании ваших предыдущих вопросов и папки "/Volumes", о которой вы упомянули, я предполагаю, что вы используете Mac OS X.

Я получил совет из этой статьи, который показывает, как создать AppleScript и прикрепить его как действие к папке, которое устанавливает разрешения для всех файлов, помещенных в папку. Вот сценарий, который я тестировал только сейчас:

on adding folder items to this_folder after receiving added_items
    tell application "Finder"
        set fold_name to the name of this_folder
        try
            repeat with i from 1 to number of items in added_items
                set new_item to item i of added_items
                set the item_path to the quoted form of the POSIX path of new_item
                do shell script ("/bin/chmod -R a+rw " & item_path)
            end repeat
        end try
    end tell
end adding folder items to

Введите это в редактор AppleScript, затем сохраните в /Library /Scripts /Folder Actions Scripts. Затем щелкните правой кнопкой мыши папку и выберите «Настройка действий с папками ...» (или "Прикрепить действие с папкой" для Leopard или более ранней версии). Прикрепите ваш скрипт и протестируйте его. Поместите элемент в папку, и он должен рекурсивно выполнить chmod все, чтобы разрешить чтение и запись для всех.

Это работает, если вы добавляете что-либо непосредственно в папку, включая другую папку: все содержимое рекурсивно обновляется. Однако если вы перетащите файлы в уже существующую подпапку, действие папки не будет вызвано. Я не нашел способ это исправить.

0

Страница Википедии, на которую ссылается другой ответ, противоречит самому ответу: бит set-GID обычно наследуется. Это, безусловно, верно для Linux, и я верю в Solaris. Однако в Mac OS X это не так. На странице руководства больше говорится о ACL, чем о обычных разрешениях, поэтому, возможно, вам повезет с разрешениями file_inherity и directory_inherit в сочетании с традиционными.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .