OS X: BSD `find / etc` печатает просто` / etc`

Я хочу разрешить пользователю adam передавать файлы пользователю bobby и разрешить только эту передачу.

Для этого вам потребуется программа, которая запускается от имени пользователя root, выполняет необходимые проверки и меняет владельца данного файла. Запуск от имени root прост, вы можете использовать sudo или программу setuid, сделать проверку правильно, чтобы программу нельзя было использовать не по назначению, сложнее.

Что может сработать, так это: 1) открыть файл 2) использовать fstat() для проверки его владельца 3) затем fchown() для смены владельца.

Для работы с файлом необходимо пройти через fd, так как доступ через файл имя не гарантирует, что проверяемый файл является тем файлом, с которым будет произведена операция моментом позже. Файл может быть изменен между ними.

Другим вариантом может быть реализация своего рода «службы загрузки», которая будет получать файлы (их содержимое) по сети от адама, а затем создавать совершенно новые файлы для бобби из полученных данных.

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

0
03.02.2017, 03:38
1 ответ

В OSX, / etc является символической ссылкой, и find не будет проходить по ней, как если бы она были каталогом.

Как бы то ни было, / tmp и / var также являются символическими ссылками (указывающими в каждом случае на подкаталоги / private ).

Вы можете использовать (см. POSIX find ) параметры -H или -L , чтобы получить нечто подобное вашему намерению.

6
28.01.2020, 02:15

Теги

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