Определите, смонтированы ли файловая система или раздел RO или RW с помощью Сценария Bash?

Мне установили его на моем веб-сервере. У меня есть полномочия на каталоге d--------- если я не должен получать доступ к нему, затем я:

  • ssh к серверу
  • изменение перманент
  • установите at задание для возврата их
  • и используйте .htaccess файл для апачского входа в систему.

Я также удостоверяюсь, что держал его в курсе.

37
задан 22 October 2010 в 22:38
8 ответов

Эта маленькая однострочная строка выскакивает, если существует файловая система ro.

grep "[[:space:]]ro[[:space:],]" /proc/mounts 

Предполагая, что у вас обычно нет файловой системы ro, такой как компакт-диск в приводе, этого достаточно для некоторых базовых типов мониторинга и не требуется изменять файловую систему для определения текущего состояния. Он также не предполагает тип вашей файловой системы. Вставьте его в grep -v iso9660, если вы хотите, чтобы ваши компакт-диски не записывались.

51
ответ дан 28 November 2019 в 19:48

Если файловая система смонтирована, я был бы CD к временному каталогу и попытке создать файл. Код возврата скажет Вам, если файловая система будет Только для чтения или Чтение-запись при условии, что файловая система не полна (благодарит Willem).

7
ответ дан 28 November 2019 в 19:48

Например, чтобы проверить, находится ли корневой раздел в Режиме только для чтения:

if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]]
then
   echo "It's in read-only mode"
fi
0
ответ дан 28 November 2019 в 19:48

У меня только что возникла эта проблема, и это настоящие пасты ...

Взгляните на / proc / mounts -

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 - Эти два раздела отображаются как монтируемые rw, когда просто с помощью команды mount.

4
ответ дан 28 November 2019 в 19:48

Старый вопрос, но я наткнулся на него в поисках той же помощи и, похоже, нашел еще более простой способ без необходимости создания файла.

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

Конечно, root-ro смонтирован ro fs, а root-rw - это rw fs.

11
ответ дан 28 November 2019 в 19:48

На основе ответа мерцающей мухи, под влиянием комментария WhiteKnight

Создайте функцию детектора мухи.

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

используйте ее для определения, находится ли путь на прочитанном только fs

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

, и избавьтесь от него, когда это будет сделано

#dump temp function
unset -f is_readonly;
3
ответ дан 28 November 2019 в 19:48

Вот мое решение:

if findmnt -n -o OPTIONS ${YOUR_MOUNT_POINT} | egrep "^ro,|,ro,|,ro$"; then
  echo "Read only!"
fi
1
ответ дан 28 November 2019 в 19:48

Подобно Антонио, вы можете использовать / proc / mounts, чтобы сделать то же самое. Используйте свой собственный диск вместо sda4.

cat / proc / mounts | grep / dev / sda4 | awk '{print substr ($ 4,1,2)}'

0
ответ дан 28 November 2019 в 19:48

Теги

Похожие вопросы