Как открыть дескриптор файла Perl для записи данных через sudo (или как другого пользователя) - PullRequest
5 голосов
/ 28 апреля 2011

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

Таким образом, следующее утверждение:

open (FH, "> $filename") or die "$@\n";

разрешит запись в файл как этот конкретный пользователь.

Есть ли способ сделать это в скрипте Perl, без запуска всего скрипта с sudo -u $username?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Есть два установленных пути.Укладчики, вам предлагается отредактировать этот ответ, чтобы заполнить недостатки для каждого.

Запустите программу с помощью sudo.Первое, что вы делаете в программе, это открываете нужные вам файлы и сохраняете дескрипторы, а затем сразу после этого отбрасываете привилегии root .Любая дальнейшая обработка должна выполняться с низкими привилегиями.Apache httpd работает следующим образом: он открывает файлы журнала как root, но продолжает работать как nobody или аналогичный.

Если вам не нравится этот способ, запустите программу нормально, и когда вынужно поднять, создать новый процесс и запустить его с настроенным пользователем sudo, su -, kdesu / gksu или еще чем-то.Клиент CPAN работает следующим образом: он выбирает, распаковывает, собирает и тестирует модуль как обычный пользователь, но вызывает sudo make install и т. Д., Когда приходит время установки.

0 голосов
/ 29 апреля 2011

Альтернативой предложениям daxim является владение сценарием, принадлежащим конкретному пользователю, и наличие разрешений сценария, включая биты setuid и / или setgid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...