/ var / run'da PID dosyası yazma izni var


51

Ubuntu

dokunma: `/var/run/test.pid 'dokunamıyorum: İzin reddedildi

Start-stop-daemon'u başlatıyorum ve / var / run PID dosyasını yazmak istiyorum start-stop-daemon-program-kullanıcım olarak çalışıyor

/ var / run ayarı drwxr-xr-x 9 kök köküdür

Program kullanıcımı kök gruba koymaktan kaçınmayı seviyorum.

Yanıtlar:


71

Varsayılan olarak, / var / run komutunu yalnızca 0 etkin kullanıcı kimliğine sahip bir kullanıcı olarak yazabilirsiniz (örn. Root olarak). Bu iyi sebeplerden dolayı, ne yaparsanız yapın, gitmeyin ve / var / run izinlerini değiştirmeyin ... Bunun yerine, root olarak / var / run altında bir dizin oluşturun :

# mkdir /var/run/mydaemon

Ardından, işleminizi yürütmek istediğiniz kullanıcı / gruba sahipliğini değiştirin:

# chown myuser:myuser /var/run/mydaemon

Şimdi / var / run yerine / var / run / mydaemon işlevini kullanın.

Bunu her zaman, söz konusu kullanıcı olarak bir test çalıştırarak test edebilirsiniz.


5
Bu benim için iyi çalıştı ama sunucumu yeniden başlattığımda daha sonra /var/run/mydaemondizin gitti.
myborobudur

17
Bu tam bir cevap değildir, / var / run, Ubuntu'da varsayılan olarak tmpfs'dir. Sunucu her başlatıldığında mkdir ve chown komutunun yeniden çalıştırılması gerekir.
Tim

1
@Tim cevabı değiştirip tamamlamaya ne dersiniz ?
kaiser

Daemon ile uğraşıyorsanız, temiz bir çözüm burada / var / run / mydaemon yolunu burada açıklandığı gibi sistemd birim dosyasına eklemek olacaktır . Daha kolay bir hack çözümü mkdir ve chown komutlarını init.d betiğine eklemek olacaktır (eğer varsa)
odedfos

1
Daha kapsamlı bir cevap burada: superuser.com/a/1127720/71795 burada çok şık görünen yanlış bir cevap var: stackoverflow.com/a/5174433 . Özet: /tmpveya birini kullanın ~.
Tim

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

Bu işe yaramayacak, çünkü bir sonraki /var/runaçılışta kaybolacak ( Ubuntu'da bir tmpfs).

Tek uygun çözüm, başlangıç ​​komut dosyalarının bir parçası olarak mkdir ve chmod komutunu çalıştırmaktır.


3

Bunu deneyebilirsin. Bir dizin / var / run / test / dizinini oluşturun ve ardından bu dizinin iznini, programınızın çalıştığı kullanıcı ile değiştirin. "chown / var / run / test /". Şimdi uygulamanızda PID dosyasının konumunu /var/run/test/test.pid olarak değiştirin. Bu işlerin sizin için çalışmasını sağlamalıdır.


2

/ Var / run'da "yapışkan" biti kullanmaya ne dersiniz?

chmod + t / var / run?

Muhtemelen diğer bazı uygulamaları karıştırmakla birlikte, başka bir çözüm gibi görünüyor.

Ancak şimdilik ayrı bir / var / run klasörü oluşturmaya devam edeceğim.


1

İçindeki girişler /etc/permissionskalıcıdır. Bir dizinin sahipliğini ve izinlerini kalıcı yapmak için oraya bir giriş yapın.


-6

Program kullanıcınızı kök gruba koymaktan kaçınmak için başkalarının yazma erişimine izin verin:

# chmod 757

3
Asla bir chmod 757 / var / run çalıştırmayın! Bu ciddi bir güvenlik sorununa neden olur
michel

1
Bu korkunç bir fikir. Potansiyel olarak büyük bir güvenlik sorununa neden olur
Tom O'Connor

Güvenlik sorununu görmezden gelsek bile, chmod 757yalnızca bir sonraki yeniden başlatmaya kadar çalışacaktır. Yeni bir cevap oluşturduğum için üzgünüm, ancak diğer yoruma cevap vermenin yolu yok gibi görünüyor.
Vladimir Nicolici

@michel, yazar bir yapılacak demedim chmodüzerinde /var/run. Yazar, uygulama alt dizini için bunu ifade etmiş olabilir. Bütün bu yaygara hakkında ne olduğundan emin değilim.
Acumenus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.