Sabit diskim takılı olduğunda asıl / tmp içeriğine ne olur?
Neredeyse hiçbir şey. Onlar sadece görünümden gizlenmiştir, normal dosya sistemi geçişi ile ulaşılamazlar.
Sabit sürücü takılıyken asıl / tmp içeriği üzerinde r / w işlemleri yapmak mümkün müdür?
Evet. “Orijinal” inizde açık dosya tanıtıcıları olan işlemler /tmp
bunları kullanmaya devam edecektir. Ayrıca başka bir yere bağlayarak "yeniden ortaya çıkmasını" sağlayabilirsiniz /
.
# mount -o bind / /somewhere/else
# ls /somewhere/else/tmp
İşte olanlar için daha iyi (umarım) bir his elde etmek için deneyebileceğiniz küçük bir deney.
Not: Bu tam olarak doğru olma çabası ya da gerçekte ne olduğuna dair ayrıntılı bir açıklama değildir. Sadece büyük resmi verecek kadar kesin olmalı.
Makinemde adı verilen bir kullanıcı me
ve evinde rastgele bir dizin oluşturdum, içinde bir dosya var:
me@home $ pwd
/home/me/tmp
me@home $ echo hello > some_file
me@home $ ls
some_file
me@home $ cat some_file
hello
Bu noktada, sıradışı bir şey değil - sadece düz bir dosya ile düz bir dizin. Bu oturumu olduğu gibi açık bırakıyorum, cwd
içindeki test dizini içinde.
Kök olarak küçük bir dosya sistemi oluşturup üzerine kurarım /home/me/tmp
.
root@home # dd if=/dev/zero of=./fs bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00467318 s, 2.2 GB/s
root@home # mkfs -t ext2 ./fs
mke2fs 1.42.12 (29-Aug-2014)
[... snip ...]
Writing superblocks and filesystem accounting information: done
root@home # mount ./fs /home/me/tmp
Sonra yeni bir terminal açtım me
ve etrafa baktım :
me@home #2 $ cd tmp
me@home #2 $ ls
lost+found
me@home #2 $ cat some_file
cat: some_file: No such file or directory
me@home #2 $ echo bye bye > some_file
-su: some_file: Permission denied
Yani, yarattığımız dosya açıkça orada değil. lost+found
Dizin bir ext dosya sisteminin köküne göstergesidir. Ve yazma iznini kaybettim, bu yüzden kesinlikle orijinal dizin değil.
İlk me
oturuma geri dönelim, dünyayı nasıl gördüğüne bakalım:
me@home $ echo something else > other_file
Yazma problemi yok.
me@home $ cat some_file other_file
hello
something else
Orijinal dosya hala orada, yeni dosya sorunu olmadan yarattı.
Ha? Neler oluyor?
İlk oturum, üzerine başka bir dosya sistemi kurularak root tarafından yerleştirilmeden önce dizine girdi. Bu takma işlemi, orijinal dosya sistemini hiç etkilemez. Kabuk işlemi, orijinal dosya sistemindeki dizin için mükemmel bir geçerli tutamağa sahiptir ve onunla etkileşime devam edebilir. Tür koşturup oluyor altındaki halı bağlama noktası.
İkinci oturum, bağlama bırakıldıktan sonra dizine girdi. Böylece yeni, boş dosya sistemini görür. Ve sysadmin izinleri aldı, bu yüzden istenen boşluğu kullanamıyor ... düzeltelim.
root@home # chown me:users /home/me/tmp
me@home #2 $ echo bye bye > some_file
me@home #2 $ ls
lost+found some_file
me@home #2 $ cat some_file
bye bye
1. seans halının altından kaçabilir mi? (Küflenmeye başladı.)
Elbette! Oturum 1, dosya sistemi ağacını montajdan çıkarırsa, bu tanıtıcıyı içeriden kaybeder ve montajı herkes gibi takip eder.
me@home $ cd
me@home $ pwd
/home/me
me@home $ cd tmp
me@home $ cat some_file other_file
bye bye
cat: other_file: No such file or directory
2. seans görünümüyle aynı, normale döndük.
Ama dosyaların kaybolmadığını nereden biliyorsunuz? Artık kimse aramıyor!
Bu, bağlama bağlarının kullanışlı olduğu anlardan biri. Zaten monte edilmiş bir dosya sistemini başka bir yere monte etmenize izin veriyorlar.
me@home $ mkdir ~/bind
root@home # mount -o bind /home/me /home/me/bind
(Evet, bir dosya sistemini "kendi içinde" bağlayabilirsiniz. Cool trick, ha?)
me@home $ ls bind/tmp
other_file some_file
me@home $ cat bind/tmp/*
something else
hello
Yani gerçekten oradalar, harekete geçmeye hazırlar. Basitçe orjinal konumlarında görünmez / ulaşılamıyorlar, montaj onları normal dizin geçişlerinden gizliyor.
Bununla oynamanı tavsiye ediyorum, çalınan "hileyi" anladıktan sonra bu gerçekten karmaşık değil. Bir kez Got It ™ 'i seçtikten sonra, daha da halı çekmek için birleşik dosya sistemlerine bakın.
Bir Not olsa: üzerinde montaj /tmp
veya /var
önyükleme işlemi tamamlandıktan sonra gerçekten (veya çekirdek işletim sistemi dizinleri herhangi biri) iyi bir fikir değildir. Bir çok uygulama bu dizinlerde eyaletten çıkar ve etraflarında dağınık oyunlar oynarsanız ciddi şekilde kafaları karışabilir.