який дозвіл на написання 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.