jakie uprawnienie do zapisu pliku PID w / var / run


51

Ubuntu

touch: nie można dotknąć `/var/run/test.pid ': Odmowa dostępu

Zaczynam start-stop-demon i lubię zapisywać plik PID w / var / run start-stop-demon jest uruchamiany jako mój-program-użytkownik

Ustawienie / var / run to root root drwxr-xr-x 9

Lubię unikać umieszczania mojego programu-użytkownika w grupie głównej.

Odpowiedzi:


71

Domyślnie możesz pisać tylko do / var / run jako użytkownik o efektywnym identyfikatorze użytkownika równym 0 (tj. Jako root). Jest to z dobrych powodów, więc cokolwiek robisz, nie idź i nie zmieniaj uprawnień / var / run ... Zamiast tego jako root utwórz katalog w katalogu / var / run:

# mkdir /var/run/mydaemon

Następnie zmień jego własność na użytkownika / grupę, w ramach której chcesz uruchomić proces:

# chown myuser:myuser /var/run/mydaemon

Teraz wybierz opcję / var / run / mydaemon zamiast / var / run.

Zawsze możesz to przetestować, uruchamiając test jako dany użytkownik.


5
Działa to dla mnie dobrze, ale kiedy zrestartowałem serwer, /var/run/mydaemonkatalog zniknął.
myborobudur

17
To nie jest pełna odpowiedź, / var / run to domyślnie tmpfs na Ubuntu. Za każdym razem, gdy serwer jest uruchamiany, należy ponownie uruchomić polecenie mkdir i chown.
Tim

1
@ Tym razem, co powiesz na edycję odpowiedzi i wypełnienie jej?
Kaiser

Jeśli masz do czynienia z demonem, czystym rozwiązaniem byłoby dodanie ścieżki / var / run / mydaemon do pliku jednostki systemowej, jak opisano tutaj . Łatwiejszym rozwiązaniem byłoby dodanie komend mkdir i chown do skryptu
init.d

1
Lepsza obszerniejsza odpowiedź znajduje się tutaj: superuser.com/a/1127720/71795 błędna odpowiedź, która wydaje się bardzo elegancka, znajduje się tutaj: stackoverflow.com/a/5174433 . Podsumowanie: użyć jednej /tmplub ~.
Tim

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

to nie zadziała, ponieważ zostanie utracone podczas następnego restartu ( /var/runjest to tmpfs na Ubuntu).

Jedynym możliwym rozwiązaniem jest uruchomienie mkdir i chmod jako części skryptów startowych.


3

Możesz tego spróbować. Utwórz katalog / var / run / test /, a następnie zmień uprawnienia tego katalogu na tego samego użytkownika, co program. „chown / var / run / test /”. Teraz w aplikacji zmień lokalizację pliku PID na /var/run/test/test.pid. To powinno pomóc ci działać.


2

A co z używaniem „lepkiego” bitu w / var / run?

chmod + t / var / run?

Prawdopodobnie zepsują niektóre inne aplikacje, ale wydaje się, że byłoby to inne rozwiązanie.

Jednak na razie będę się trzymać tworzenia osobnego folderu / var / run.


1

Wpisy /etc/permissionssą stałe. Wprowadź tam wpis, aby własność i uprawnienia do katalogu były trwałe.


-6

Aby uniknąć umieszczenia użytkownika programu w grupie głównej, zezwól innym na dostęp do zapisu:

# chmod 757

3
Nigdy nie rób chmod 757 na / var / run! Spowodowałoby to poważny problem z bezpieczeństwem
Michel

1
To okropny pomysł. Spowodowałoby to potencjalnie ogromny problem z bezpieczeństwem
Tom O'Connor,

Nawet jeśli zignorujemy problem bezpieczeństwa, chmod 757będzie działał tylko do następnego uruchomienia. Przepraszamy za utworzenie nowej odpowiedzi, ale wydaje się, że nie ma sposobu, aby odpowiedzieć na inny komentarz.
Vladimir Nicolici

@michel, autor nigdy nie mówi się zrobić chmodna /var/run. Autor mógł to oznaczać dla podkatalogu aplikacji. Nie jestem pewien, o co tyle zamieszania.
Acumenus,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.