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.

s5804
źródło

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.

Stephen Nelson-Smith
źródło
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.

Vladimir Nicolici
źródło
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ć.

proy
źródło
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.

użytkownik68971
źródło
1

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

użytkownik432133
źródło
-6

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

# chmod 757
Ivan Chuchman
źródło
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,