Debian sistemlerindeki dosya tabanlı soketler için deyimsel konum


13

Unix Domain SocketC kullanan bir Debian sistemi için bir daemon süreci yazıyorum .

Daemon işleminin çalışma dizini kök dizinse, soketi dosya sistemine yerleştirmek için deyimsel bir dizin var mı?


Neden sadece yapılandırılabilir olmasına izin vermiyorsun?
BatchyX

3
@BatchyX Bir çeşit varsayılan değer (her yöneticiyi tamamen kendi başına karar vermeye zorlamak yerine) kesinlikle güzel olabilir. :)
CVn

Yanıtlar:


17

Yaygın olarak /tmpveya alt dizinlerinde bulunurlar . Her şeyin /tmpkapanma sırasında silinmeye tabi olduğunu unutmayın - mutlaka silinmesi gerekmez, sadece olabileceğine dikkat edin, bu yüzden bunu kullanırsanız, her seferinde alt dizini oluşturmanız gerekip gerekmediğini kontrol edin. /tmpDünya tarafından okunabildiğinden , izinlerle erişimi kısıtlamak istiyorsanız bir alt dizin kullanmak isteyeceksiniz .

/runve /var/run(birlikte sembolize edilmiş olabilir) benzer bir şekilde kullanılırlar, ancak genellikle tmpfs dosya sistemleri olarak monte edilirler - yani önyükleme sırasında oluşturulur ve diskte değil, bellekte bulunurlar (bu nedenle bunu dökülecek bir yer olarak kullanmayın) bol miktarda veri). Bir çalışma zamanı soketi için, muhtemelen iyi bir seçimdir.

Not /runBurada sözü ve diğer dizinleri tüm hariç /tmp , sadece root tarafından yazılabilir bulunmaktadır. Bir sistem işlemi için bu sorun olmaz, ancak uygulama ayrıcalıklı olmayan bir kullanıcı tarafından çalıştırılabilirse, bir /tmpyerde kalıcı bir dizin kullanmak veya oluşturmak ve bu konuda izinler ayarlamak ya da kullanıcının $ HOME uygulamasında bir konum kullanmak istersiniz .

Yükleme sırasında /usr/share(veya /usr/local/share) içinde bir dizin oluşturmak mümkündür . Dizinler ve içerikler, botlarda olduğu gibi potansiyel olarak sıkıştırılmamış /tmpveya /run. Bununla birlikte, jordanm yorumlarda belirtildiği gibi, /usrsalt okunur olarak monte edilebilir ve linux dosya sistemi hiyerarşisi yönergeleri bunu yansıtır . Tabii ki, uygulamanız yüklendiğinde salt okunur olamaz, bu yüzden orada bir soket oluşturmakta rahatsanız, daha sonra bırakabilir ve kullanabilirsiniz (yine de sokete yazabilirsiniz. dosyası salt okunurdur).

Sadece salt okunur olarak monte edilmeyen botlar arasında kalıcı bir yer istiyorsanız, /etcoldukça güvenli bir bahistir, çünkü bu genellikle sistem çapında yapılandırmalar ve yeniden yapılandırmalar için kullanılır. OTOH, tüm kök dosya sisteminin altında yatan aygıtın salt okunur olduğu (örneğin, gömülü sistemler), başka bir aygıtta / tmp ve / run (muhtemelen: bellekteki tmpfs) olan sistemlere sahip olmak mümkündür. Yani en sağlam iki strateji şöyle görünecektir:

  • Uygulama yüklendiğinde soketi kalıcı bir yere takın.

  • Çalışma zamanında /runveya /var/runçalışma zamanında bir dizin oluşturun ve soketi oraya koyun.

  • Aynı şeyi sadece içinde yap /tmp.

Birincisinin avantajı, uygulama yüklendikten sonra kullanmak için bir sokete sahip olmanızdır. İkincisi avantajı olmasıdır olabilir aklı başında programlama daha elverişli olduğunu. Üçüncüsünün avantajı, süper kullanıcı ayrıcalıkları gerektirmemesidir. Daha sonra fikrinizi değiştirirseniz, bir uygulamadan diğerine geçmek kolay olmalıdır.

Son olarak, BatchyX'in gündeme getirdiği gibi , en azından bunun için varsayılan seçiminize geri dönerek bir yapılandırma seçeneği sunmalısınız .


2
/runveya /var/runkök işlemleri için de sıklıkla kullanılır.
BatchyX

Sağ. Bunlar daha fazla tmp /tmp. Bunu düzenleyeceğim.
goldilocks

/usrsalt okunur olarak monte edilebilir. Dosyalar hiçbir zaman çalışma zamanında orada oluşturulmamalıdır. Diğer öneriler iyidir.
jordanm

1
Katıldığınız için hepinize teşekkür ederim, tartışma çok bilgilendiriciydi. Varsayılan konumu yapmaya karar verdim /tmp/.APPNAME/.APPSOCKçünkü arka plan programının kalıcı verilere ihtiyacı yok.
recursion.ninja

1
Arasındaki bir diğer önemli fark /tmpve /runsadece kök yazma izni olmasıdır /run.
BatchyX
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.