XDG_RUNTIME_DIR için iyi bir varsayılan var mı?


10

XDG Base Directory Şartname kullanıcı dizinleri için çok ilginç bir spec olduğunu. Ayrıca, iyi varsayılan değerler de sağlar XDG_RUNTIME_DIR.

Şimdi adlandırılmış kanallar oluşturmak için bir yazılım yazıyorum. Kullanıcı başına istemci-sunucu çerçevesidir (sunucu için bir FIFO ve istemci başına bir FIFO vardır).

Eğer XDG_RUNTIME_DIRtanımlı değil, Şu anda kullanıcı başına alt dizini içinde kullanıyorum /tmp- ama hepsi belirli koşulların sağlanması vermez (yani başlayarak paragraf. "Dizinin ömrü varlık kaydedilir kullanıcıya bağlı GEREKİR ..." )

/tmp/myserver-$USERyeterince iyi?

Düzenle

Başka yerlerde birkaç öneri gördüm:

  • . (en azından mutlak bir yol olmadığı için) oldukça tatmin edici değildir.
  • Ayrıca gördüm /var/run/user/$USER- kötü değil, ama bu dizin mevcut değil (en azından benim Debian testi çalıştıran kutumda )

Yanıtlar:


4

/tmpzaten birçok program tarafından benzer şekilde kullanılıyor. Sistemimde /tmp/orbit-$USER(Gnome'un ORBit2 tarafından kullanılan) ve /tmp/.X11-unix/(Xorg ve X11) dizinlerinde bol miktarda boru, ehm, soket bulunan dizinleri görebiliyorum. Eminim başkaları da vardır, bu yüzden yaptığınız şeyde yanlış bir şey görmüyorum. Sadece dünya tarafından yazılabilir bir yer olduğu için kötü niyetli bir işlemin konumu ele geçirebileceğini unutmayın (yazmadan önce izinleri doğrulayın).

Ben de tavsiye ederim $TMPDIRkullananlar için pam_mktemp bu dizin kullanıcı tarafından erişilebilir olduğu gibi.


PAM doğru çözümdür, teşekkürler! Debian'da libpam-tmpdir denir
cadrian

5

SystemD /run/user/$USERbiraz zorunlu hale getirir .

http://www.freedesktop.org/software/systemd/man/file-hierarchy.html

Ayrıcalıklı Yazma Erişimi

Ayrıcalıksız işlemler genellikle hiyerarşinin çoğuna yazma erişiminden yoksundur.

Normal kullanıcılar için istisnalar vardır /tmp, /var/tmp, /dev/shmyanı ev dizini olarak $HOME(genellikle aşağıda bulunan /home) ve çalışma zamanı dizininde $XDG_RUNTIME_DIR(aşağıda bulunan /run/user) tüm yazılabilir olan kullanıcı, bir.

İmtiyazsız sistemi için tek işler /tmp, /var/tmpve /dev/shmyazılabilir bulunmaktadır. Ayrıcalıksız bir sistem işlemi /varveya içinde özel, yazılabilir bir dizine ihtiyaç duyuyorsa /run, arka plan kodunda ayrıcalıkları bırakmadan önce oluşturmanız, önyükleme sırasında tmpfiles.d (5) parçaları veya RuntimeDirectory= hizmet birimleri yönergesi ile oluşturulması önerilir. (ayrıntılar için bkz. systemd.unit (5)).


2

Benzersiz kimliğe sahip /tmp/service-$USER.id dizini oluşturun. Örnek için, kabukta:

mktemp -d /tmp/service-"$USER".XXX

1
Kullanıcının ilk oturum açmasından son oturum kapatmasına kadar aynı dizinin kullanılmasını nasıl sağlarsınız?
cadrian

Hmmm ... symlink ~ user / .service / tmp_dir oluşturun. Bağlantılı dizin yoksa, yeni oluşturun
Selivanov Pavel
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.