/ 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.