Vraag welke toestemming om PID-bestanden te schrijven in / var / run


Ubuntu

touch: kan `/var/run/test.pid 'niet aanraken: toestemming geweigerd

Ik start start-stop-daemon en ik schrijf graag het PID-bestand in / var / run start-stop-daemon wordt uitgevoerd als mijn-programma-gebruiker

/ var / run-instelling is drwxr-xr-x 9 root root

Ik vermijd graag om mijn-programma-gebruiker in de root-groep te plaatsen.


42
2017-07-11 10:04


oorsprong




antwoorden:


Standaard kunt u alleen schrijven naar / var / run als een gebruiker met een effectieve gebruikers-ID van 0 (dus als root). Dit is om goede redenen, dus wat je ook doet, ga niet en verander de rechten van / var / run ... In plaats daarvan maak je als root een map aan onder / Var / run:

# mkdir /var/run/mydaemon

Verander dan zijn eigendom naar de gebruiker / groep waaronder u uw proces wilt uitvoeren:

# chown myuser:myuser /var/run/mydaemon

Geef nu op om / var / run / mydaemon te gebruiken in plaats van / var / run.

U kunt dit altijd testen door een test uit te voeren als de betreffende gebruiker.


64
2017-07-11 11:50



Dit werkte goed voor mij, maar toen ik mijn server herstartte, dan was het /var/run/mydaemon map was verdwenen. - myborobudur
Dit is geen volledig antwoord, / var / run is standaard tmpfs op Ubuntu. Elke keer dat de server wordt opgestart, moet het mkdir- en chown-commando opnieuw worden uitgevoerd. - Tim
@Tim wat over Bewerkhet antwoord en vul het in? - kaiser
Als je te maken hebt met daemon dan is een schone oplossing om het pad / var / run / mydaemon toe te voegen aan het systemd unit-bestand zoals beschreven hier. Een eenvoudigere hacky-oplossing zou zijn om de opdrachten mkdir en chown aan het init.d-script toe te voegen (indien aanwezig) - odedfos
Een beter uitgebreid antwoord is hier: superuser.com/a/1127720/71795 een verkeerd antwoord dat erg elegant lijkt, is hier: stackoverflow.com/a/5174433. Samenvatting: gebruik een van beide /tmp of ~. - Tim


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

dit zal niet werken, omdat het bij de volgende herstart verloren gaat (/var/run is een tmpfs op Ubuntu).

De enige haalbare oplossing is om mkdir en chmod uit te voeren als onderdeel van de opstartscripts.


11
2018-01-07 17:13





Je kunt dit proberen. Maak een map / var / run / test / en wijzig vervolgens de toestemming van deze map voor dezelfde gebruiker als uw programma wordt uitgevoerd. "chown / var / run / test /". Zet nu in je applicatie de locatie van het PID-bestand in /var/run/test/test.pid. Dit zou dingen voor u moeten laten werken.


2
2017-07-11 10:34





Hoe zit het met het gebruik van het "plakkerige" bit op / var / run?

chmod + t / var / run?

Waarschijnlijk verknoeien sommige andere apps, maar het lijkt erop dat het een andere oplossing zou zijn.

Ik blijf echter voorlopig een aparte / var / run-map maken.


1
2018-02-01 00:06





Invoer in de /etc/permissions zijn permanent. Voer hier een vermelding in om het eigendom en de machtigingen voor een map permanent te maken.


0
2017-08-22 01:49





Stel anderen in staat om schrijftoegang te geven om te voorkomen dat je je programmagebruiker in de rootgroep plaatst:

# chmod 757

-6
2017-07-11 10:30



Nooit een chmod 757 on / var / run doen! Dit zou een serieus beveiligingsprobleem veroorzaken - michel
Dit is een vreselijk idee. Het zou een mogelijk groot beveiligingsprobleem veroorzaken - Tom O'Connor
Zelfs als we het beveiligingsprobleem negeren, chmod 757 werkt ook alleen tot de volgende reboot. Sorry voor het maken van een nieuw antwoord, maar er lijkt geen manier te zijn om de andere opmerking te beantwoorden. - Vladimir Nicolici
@michel, de auteur heeft nooit gezegd om een ​​te doen chmod op /var/run. De auteur heeft het misschien bedoeld voor de submap van de toepassing. Ik weet niet zeker waar het allemaal om draait. - A-B-B