який дозвіл на написання PID-файлу в / var / run


51

Ubuntu

touch: не можна торкатися `/var/run/test.pid ': дозвіл відхилено

Я запускаю старт-стоп-демон і люблю записувати файл PID в / var / run start-stop-daemon запускається як мій-користувач програми

/ var / run налаштування є кореневим коренем drwxr-xr-x 9

Мені подобається уникати мого користувача програми в кореневій групі.

Відповіді:


71

За замовчуванням ви можете записувати в / var / run як користувач з ефективним ідентифікатором користувача 0 (тобто як root). Це з поважних причин, тому що б ви не робили, не переходьте та не змінюйте дозволи на / var / run ... Натомість, як root, створіть каталог під / var / run:

# mkdir /var/run/mydaemon

Потім змініть право власності на користувача / групу, під якою ви хочете запустити свій процес:

# chown myuser:myuser /var/run/mydaemon

Тепер уточніть використання / var / run / mydaemon, а не / var / run.

Ви завжди можете перевірити це, запустивши тест як відповідний користувач.


5
Це добре працювало для мене, але коли я перезапустив свій сервер, тоді /var/run/mydaemonкаталогу вже не було.
myborobudur

17
Це не повна відповідь, / var / run є tmpfs за замовчуванням в Ubuntu. Кожного разу при запуску сервера команду mkdir та chown потрібно запускати заново.
Тім

1
@ Ти як щодо редагування відповіді та завершення?
кайзер

Якщо ви маєте справу з демоном, то чистим рішенням буде додати шлях / var / run / mydaemon до файлу системного блоку, як описано тут . Більш простим рішенням було б додати команди mkdir та chown до сценарію init.d (якщо такий існує)
odedfos

1
Краще обширна відповідь тут: superuser.com/a/1127720/71795, неправильна відповідь, яка здається дуже елегантною, тут: stackoverflow.com/a/5174433 . Підсумок: використовуйте /tmpабо ~.
Тім

13
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon

це не буде працювати, оскільки воно буде втрачено при наступному перезавантаженні ( /var/runце tmpfs на Ubuntu).

Єдине можливе рішення - запустити mkdir та chmod як частину сценаріїв запуску.


3

Ви можете спробувати це. Створіть каталог / var / run / test /, а потім змініть дозвіл цього каталогу на того самого користувача, що і ваша програма. "chown / var / run / test /". Тепер у своїй програмі змініть розташування файлу PID на /var/run/test/test.pid. Це має змусити вас працювати.


2

А як щодо використання "клейкого" біта на / var / run?

chmod + t / var / run?

Можливо, зіпсуйте деякі інші додатки, але здається, це було б інше рішення.

Однак я зараз дотримуюся створення окремої папки / var / run.


1

Записи на /etc/permissionsпостійному рівні. Зробіть там запис, щоб зробити права власності та дозволи на каталог постійними.


-6

Щоб уникнути включення вашого користувача програми до кореневої групи, дозвольте іншим записувати доступ:

# chmod 757

3
Ніколи не робіть chmod 757 on / var / run! Це призведе до серйозних проблем із безпекою
michel

1
Це жахлива ідея. Це спричинить потенційно серйозну проблему із безпекою
Том О'Коннор

Навіть якщо ми ігноруємо проблему безпеки, chmod 757вона також працюватиме лише до наступного перезавантаження. Вибачте за створення нової відповіді, але, здається, немає можливості відповісти на інший коментар.
Володимир Ніколічі

@michel, автор ніколи не говорив , щоб зробити chmodна /var/run. Автор, можливо, мав на увазі це для підкаталогу програми. Не впевнений, у чому вся суєта.
Acumenus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.