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ı?
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ı?
Yanıtlar:
Yaygın olarak /tmp
veya alt dizinlerinde bulunurlar . Her şeyin /tmp
kapanma 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. /tmp
Dünya tarafından okunabildiğinden , izinlerle erişimi kısıtlamak istiyorsanız bir alt dizin kullanmak isteyeceksiniz .
/run
ve /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 /run
Burada 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 /tmp
yerde 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ış /tmp
veya /run
. Bununla birlikte, jordanm yorumlarda belirtildiği gibi, /usr
salt 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, /etc
oldukç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 /run
veya /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 .
/run
veya /var/run
kök işlemleri için de sıklıkla kullanılır.
/tmp
. Bunu düzenleyeceğim.
/usr
salt okunur olarak monte edilebilir. Dosyalar hiçbir zaman çalışma zamanında orada oluşturulmamalıdır. Diğer öneriler iyidir.
/tmp/.APPNAME/.APPSOCK
çünkü arka plan programının kalıcı verilere ihtiyacı yok.
/tmp
ve /run
sadece kök yazma izni olmasıdır /run
.