Bağlama bağlantım neden bağlanma ad alanının dışında görünüyor?


12

Bu yüzden Linux mount ad alanının nasıl çalıştığını ele almaya çalışıyorum. Böylece, küçük bir deney yaptım ve iki terminal açtım ve aşağıdakileri çalıştırdım:

Terminal 1

root@goliath:~# mkdir a b
root@goliath:~# touch a/foo.txt
root@goliath:~# unshare --mount -- /bin/bash
root@goliath:~# mount --bind a b
root@goliath:~# ls b
foo.txt

Terminal 2

root@goliath:~# ls b
foo.txt

Bağlantı Terminal 2'de nasıl görünür? Bağlama ad alanının bir parçası olmadığından dizinin burada boş görünmesini bekledim. Ayrıca seçenekleri aktarmayı -o shared=nove kullanmayı denedim , ama aynı sonucu aldım.--make-privatemount

Neyi kaçırıyorum ve gerçekte nasıl özel yapabilirim?


yuvalar sistem çapındadır, kabuk ortamına özgü değildir. paylaşılan, köle, özel ve paylaşılamaz olduklarını düşündüğünüz şeyler değildir. okuyun man mount.
cas

3
@cas: Kabul --make-privateediyorum istediğim bu değil. Ancak, montaj ad alanlarının noktası (sistem çapında olmadıkları) değil mi?
FatalError

Yanıtlar:


11

2.27'den util-linuxdaha düşük bir sürümle sistem tabanlı bir dağıtımdaysanız , bu sezgisel olmayan davranışı görürsünüz. Bunun nedeni , çekirdeğin bir ayara bağlı CLONE_NEWNSolarak bayraklar üretmesidir shared. Bu ayar privatenormaldir, ancak systemd bunu olarak değiştirir shared. İtibariyle util-linux2.27, bir yama yapıldı varsayılan davranışını değiştiren unsharekullanmak komuta privatedaha sezgisel olması için varsayılan yayılma davranış olarak.

Çözüm

<2.27 ile bir sistemd sisteminde util-linuxiseniz , komutu çalıştırdıktan sonra kök dosya sistemini yeniden monte etmelisiniz unshare:

# unshare --mount -- /bin/bash
# mount --make-private -o remount /

> = 2.27 olan bir sistemd sistemindeyseniz util-linux, sorunuza verdiğiniz örnekte, yeniden söylemeye gerek kalmadan, kelimesi kelimesine uygun şekilde çalışmalıdır. Değilse: bağlama ad alanının yayılımını özel olmaya zorlamak --propagation privateiçin unsharekomuta geçin.


0

bu ubuntu'da işe yaramadı, (15.04 ve 14.04). fedora üzerinde çalıştı. ve fedora için. ihtiyacınız olsun - özel veya değil, ayrıca kontrol edebilirsiniz

cat / proc / self / dağıtıcı | grep demir paylaştı

paylaşılırsa, bazı diğer ad alanlarının da bağlandığını görebilirsiniz. O zaman sistemd ile ilgili bir konudur. Çalışmasını sağlamak için --make-private komutunu kullanabilirsiniz.

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.