Потеря разрешения (в реальном времени), когда sudoing от корня до меня

touch всегда создает файл, если он не существует, всегда переходит по символьным ссылкам и всегда делает неисполняемый файл файла. Можно решить чтение и записать биты через umask.

(umask 077; touch file)  # creates a 600 (rw-------) file
(umask 002; touch file)  # creates a 664 (rw-rw-r--) file

“Безопасное” атомарное создание файла (в частности, с O_NOFOLLOW) не возможно с традиционными инструментами оболочки. Можно использовать sysopen в жемчуге. Если у Вас есть BSD-вдохновленное mktemp утилита, это создает файл атомарно с O_NOFOLLOW; Вы имеете звонить chmod впоследствии, если режим по умолчанию 600 не является правильным.

1
09.08.2013, 20:37
1 ответ

Я предположил бы, что sudo сохраняет Вашу среду пользователя root и поэтому не может иметь путей или других переменных среды что martin пользователь установил. Это может быть также, что необходимо работать jack через sudo от оболочки с -s /path/to/shell опция.

Однако как корень, Вы имеете права на su (замените пользователем), не будучи запрошенным пароль (и не требуют, чтобы конфигурация sudo достигла этого, sudo конкретно нацелен на некорневых пользователей).

 su - martin -c /usr/bin/jackd ...

-c говорит su что команду работать, и - опция (который может также быть сделан через -l) попытается настроить среду, подобную среде пользователя, который это, работал как (в этом случае martin).

0
28.01.2020, 02:03
  • 1
    я не проверил Ваше объяснение, но su - уверенный, добился цели. –  Martin Drautzburg 09.08.2013, 23:39
  • 2
    я рад, что он отсортировал Вашу проблему хотя! :) –  Drav Sloan 09.08.2013, 23:55

Теги

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