Soru Dosya sistemi veya bölümün Bash Script üzerinden RO veya RW monte edilip edilmediğini belirleyin.


Monte edilmiş bir dosya sisteminin Salt Okunur veya Oku-Yaz olarak mı kurulduğunu belirlemenin kolay bir yolu var mı? Sadece pipo yapmayı düşünüyordum mount ama daha kolay bir yol olabileceğini düşündüm.


28
2017-10-22 19:31


Menşei


Bunun için ideal sistem çağrısı statvfs diğer şeylerin yanı sıra salt okunur okuyucuyu gösteren bir bayrakla bayrak alanlarını döndürür. Maalesef bunu doğrudan yapmak için bir kabuk komutunu bilmiyorum. Kullanırdım stat -fama bu komut bayraklar hariç her şeyi gösterir. - kasperd
Not: @Travis Campbell yaptığı yorumda yaptığı açıklamada serverfault.com/a/277449/236916, mount her zaman sana ne istediğini söylemez: /etc/mtabVerilerin önbelleğe alınmış bir sürümüdür ve bazı durumlarda eski olabilir. İçindeki bilgi /proc/mounts gerçekten istediğin şey. - mwfearnley


Cevaplar:


Bir ro dosya sistemi varsa, bu küçük tek liner bir şey çıkartacaktır.

grep "\sro[\s,]" /proc/mounts 

Sürücüde bir CD gibi genellikle bir ro dosya sisteminiz olmadığı varsayılırsa, bazı temel izleme türündeki şeyler için yeterlidir ve mevcut durumu bulmak için dosya sistemini değiştirmeye gerek yoktur. Ayrıca dosya sisteminizin türünü de üstlenmez. CD'lerinizi kayıt dışı tutmak istiyorsanız grep -v iso9660'a aktarın.


41
2018-01-11 20:56



Kullanmak zorundaydım grep -P "\sro[\s,]" /proc/mounts veya grep " ro[ ,]" /proc/mounts - WhiteKnight
Bu, "bir dosya oluşturmayı deneyin" den çok daha iyi bir yanıttır. - Vagnerr
Bu sadece size mevcut durumu değil, monte etmek için kullanılan seçenekleri söylemez mi? Örneğin. seçenekler ile bir giriş ext4 rw,noatime,nobarrier,errors=remount-ro,data=ordered 0 0 yalnızca bir hata durumunda okunmuş olarak yeniden bağlanacak şekilde ayarlanır, dolayısıyla kontrol edilmeden mount Bu remountın meydana gelip gelmediğini bilmiyorsunuz, çünkü eğer şu anda ro. - Walf
Bu benim deneyimim olmadı. - flickerfly
Bugün yeni bir tane aldım. Bu rodaki kök dosya sistemidir, ancak başladığında rw'dir. $ grep "\sro[\s,]" /proc/mounts Çıktı: /dev/mapper/root / ext4 ro,relatime,errors=remount-ro,user_xattr,acl,barrier=1,data=ordered 0 0 - flickerfly


Eski soru, ama aynı yardım arayışına rastladım ve dosya oluşturmaya gerek kalmadan daha kolay bir yol gibi görünüyor.

    [ -w /root-rw ] && echo "rw" || echo "ro"
    rw
    [ -w /root-ro ] && echo "rw" || echo "ro"
    ro

Tabii ki, kök-ro ro fs'ye monte edilir ve root-rw rw fs'dir.


10
2018-01-31 04:18



Bu, dosya sistemi iznini sınamakta, ancak durumu değil. - Robert Calhoun
Doğru, ama bu çok basit ve bazı durumlarda (benimki gibi) çalışabilir. - Yajo
itibaren man dash için -w option - 'Bu test doğru olsa bile dosya salt okunur dosya sisteminde yazılabilir değil.' AFAIK bu diğer kabuklar için aynıdır. - Graeme


Dosya sistemi monte edilmişse, geçici bir dizine cd yapıp bir dosya oluşturmayı denerdim. Geri dönüş kodu, dosya sisteminin dolu olmadığında (sadece Willem) dosya sisteminin Salt Okunur veya Oku-Yaz olup olmadığını söyleyecektir.


7
2017-10-22 19:59



Sadece bir dosya grubunun nasıl monte edildiğini kontrol ediyorsanız, çıkışı çıkıştan almak yeterli olmalıdır. Ama katılıyorum, bu kontrol etmek için daha kapsamlı bir yol. Olaylar, okunabilir / okunabilir olduğunu, ancak aslında salt okunur olduğunu bildirebilir. Bunun yaygın bir örneği, bir cihazdaki çok sayıda SCSI hatasıdır ve salt okunur hale gelip kendini korumasına neden olur. Bir dosya oluşturmak, şüphe duymadan salt okunur / yaz / oku doğrulayacaktır. - Alex
Bu düzenli olurdu: touch afile && { rm afile; echo "read-write"; } || echo "read-only" - glenn jackman
Yazılı olarak senaryoyu bir yarış durumu vardır. FILE kullanırım =mktemp -p /filesystem/of/interest/ Dosya ve dosya adı oluşturmak için 'afile' kullanmak yerine. en iyi - Rik Schneider
Bu, tam bir dosya sistemini salt okunur olarak hatalı rapor edecektir. - Willem
@David, Bu gerçek bir çözüm yerine bir stopgap kesmek gibi görünüyor. - Pacerier


Bu konuyu yeni aldım ve bunlar gerçek macunlar ...

/ Proc / mounts'a bir göz atın -

egrep " ro,|,ro " /proc/mounts 
/dev/sda3 / ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0    
/dev/sda5 /var ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0

FYI - Bu iki bölüm sadece mount komutunu kullanırken rw olarak gösteriliyor.


2
2017-08-17 02:51



'Ro' tek montaj seçeneği ise bu işe yaramaz - Willem


Dayanarak bir flickerdfly'nin cevabı, WhiteKnight'dan bir yorumdan etkilendi

Sinek dedektör fonksiyonu oluşturun.

eval "function is_readonly () {
          $( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
      return 1;}";    

Bir yolun salt okunur bir okuma olup olmadığını belirlemek için kullanın

is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"

Ve bittiğinde atın

#dump temp function
unset -f is_readonly;

2
2018-06-08 07:07





Örneğin, kök bölümünün Salt Okunur modunda olup olmadığını kontrol etmek için:

if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]]
then
   echo "It's in read-only mode"
fi

0
2018-06-06 14:09



Bu tüm vakaları yakalamaz. / sbin / mount, halihazırda takılı olan dosya sistemlerinin önbelleğe alınmış sürümü için (ve bunların mevcut seçenekleri) / etc / mtab dosyasına bakacaktır. Eğer herhangi bir nedenden dolayı ro sökme / yönetme yetkisi varsa, mtab doğru şekilde güncellenmeyebilir, bu yüzden / hala rw görünebilir. / proc / mounts her zaman doğru değeri göstermelidir. - Travis Campbell
/ Proc / mounts kullanma ihtiyacına katılıyorum. Bu sınamanın, başvurulan dizenin başka bir yolun alt dizesi olmadığından emin olmasını sağlayan bir kabuk (baskın olarak OP sorar) işlevine indirgenmesi gerektiğini düşünüyorum. - Skaperen


İşte benim çözümüm:

if findmnt ${YOUR_MOUNT_POINT} | awk '{print $4}' | grep "ro,"; then
  echo "Read only!"
fi

0
2017-09-18 07:27