LINUX.ORG.RU

Точки монтирования в режиме только для чтения


0

0

Как ожидается, в Линуксе команда mount --bind будет скоро поддерживать режим read only, что может значительно увеличить безопасность, например, chroot'ed сервисов. Кроме того, вы просто можете переводить в этот режим любые части вашего сервера.

>>> Подробности

★★★★★

Проверено: svu ()

Всем чмоки в этом чати:)

s/чати/части

UserUnknown ★★★★★
()
Ответ на: комментарий от dmiceman

зачем обязательно chroot

мне такой вариант нравится:

for i in bin boot etc lib opt sbin usr; do mount --bind -o ro "/$i" "/$i"; done

;-)

birdie ★★★★★
() автор топика
Ответ на: комментарий от birdie

> for i in bin boot etc lib opt sbin usr; do mount --bind -o ro "/$i" "/$i"; done

Ага, у меня тоже сразу возникла та же идея ;))

Ingwar ★★★★★
()
Ответ на: комментарий от birdie

> зачем обязательно chroot мне такой вариант нравится: for i in bin boot etc lib opt sbin usr; do mount --bind -o ro "/$i" "/$i"; done

что только не придумают люди, лишь бы не хранить /home и /var на отдельных rw-разделах, а / - на ro.

gaa ★★
()

ну неужели будущее наступило (:

magesor ★☆
()
Ответ на: комментарий от anonymous

>А как тогда софт устанавливать, простите?

В астрал конечно, не забудь вкомпилить в ядро соответствующий модуль и компресор, иначе тормозить будет :)

FiXer ★★☆☆☆
()
Ответ на: комментарий от gaa

Действительно, как я сразу не догадался? :)

А главное - очень удобно.
</сарказм>

anonymous
()

> Кроме того, вы просто можете переводить в этот режим любые чати вашего сервера.

А также вы сможете грабить корованы.

Всем чмоки в етом чати.

MaratIK
()

2birdie ***** (*) (25.09.2007 8:55:58)

Ты хотьбы объяснил людям что к чему. Такое ощущение, что сам не понял для чего это, когда новость постил. А то люди подумают что раньше нельзя было в режиме только для чтения монтировать.

anonymous
()
Ответ на: комментарий от anonymous

>Ты хотьбы объяснил людям что к чему. Такое ощущение, что сам не понял для чего это, когда новость постил. А то люди подумают что раньше нельзя было в режиме только для чтения монтировать.

Да уж, было бы неплохо. А то я и так монтировал в режиме "только чтение"

argin ★★★★★
()
Ответ на: комментарий от argin

> Да уж, было бы неплохо. А то я и так монтировал в режиме "только чтение"

скроее всего новость была запостена "для понта", типа посмотрите какой я крутой. Ну понятно да, что он не шарит.

anonymous
()
Ответ на: комментарий от anonymous

>Мне оно пишет:

>root@localhost:/home/user# mount -o remount,ro /
>mount: / занят

mount -l -o remount,rw /

ig0r
()

Классно! Спасибо за приятную новость. Коротко и по делу. Побольше бы таких новостей.

Sectoid ★★★★★
()
Ответ на: комментарий от Gharik

>А конфиги как править?

Вы про UnionFS слышали ?

По теме, слабые попытки реализовать per process namespaces (не на уровне ядра)

robot12 ★★★★★
()
Ответ на: комментарий от Gharik

>> mount -o remount,rw /

> А обратно? А конфиги как править?

Забыл сказать, что /etc тоже надо бы на rw сунуть. а обратно, если мне не изменяет память, mount -o remount,ro.

Для тех, кто возмущался по поводу удобства: а почему Вы под рутом не сидите? Так же гораздо удобнее ;)

gaa ★★
()

Из Debian security FAQ :)

4.9.2 Setting /usr read-only
If you set /usr read-only you will not be able to install new packages on your Debian
GNU/Linux system. You will have to first remount it read-write, install the packages and
then remount it read-only. The latest apt version (in Debian 3.0 ’woody’) can be configured to
run commands before and after installing packages, so you might want to configure it properly.
To do this modify /etc/apt/apt.conf and add:
DPkg
{
Pre-Invoke { "mount /usr -o remount,rw" };
Post-Invoke { "mount /usr -o remount,ro" };
};
Note that the Post-Invoke may fail with a “/usr busy” error message. This happens mainly
when you are using files during the update that got updated. You can find these programs by
running lsof +L1

FiXer ★★☆☆☆
()

Какая приятная новость!!!
Давно об этом мечтал - задолбался по ошибке (забыл отмонтировать) из чрута херить нужные папочки по rm -rf /
А никто не знает, это в ядре и/или утилитка mount должна уметь?!

Ant0
()
Ответ на: комментарий от anonymous

>А то люди подумают что раньше нельзя было в режиме только для чтения монтировать.

#!/bin/sh

mount --bind -o ro /home/ /mnt/

mkdir /mnt/CheckMount

if [ -d "/mnt/CheckMount" ] ; then echo "анонимус гонит";else echo "анонимус светочЪ истины"; fi

rmdir /mnt/CheckMount

umount /mnt/

Какой у кого результат?

madcore ★★★★★
()
Ответ на: комментарий от execve

>А что за файлы-то? Потому как у меня не занято.

COMMAND PID USER FD TYPE DEVICE SIZE NLINK NODE NAME
init 1 root 0u CHR 5,1 0 2132 /dev/console (deleted)
init 1 root 1u CHR 5,1 0 2132 /dev/console (deleted)
init 1 root 2u CHR 5,1 0 2132 /dev/console (deleted)
mysqld 5338 mysql 5u REG 8,1 0 0 765542 /tmp/ibxIx1w2 (deleted)
mysqld 5338 mysql 6u REG 8,1 0 0 765543 /tmp/ib5bArXQ (deleted)
mysqld 5338 mysql 7u REG 8,1 0 0 765544 /tmp/ibP6NRnF (deleted)
mysqld 5338 mysql 8u REG 8,1 0 0 765545 /tmp/ib5FJVOt (deleted)
mysqld 5338 mysql 12u REG 8,1 0 0 765546 /tmp/ibla65pi (deleted)

anonymous
()
Ответ на: комментарий от gaa

> а / - на ro

А не всегда можно. В /etc организуется файл mtab, который меняется на ходу (поэтому только rw), а /etc в отдельную файловую сиситему выносить, как известно, нельзя.

VladimirP ★★★★
()
Ответ на: комментарий от gaa

> /tmp должен лежать в tmpfs, /dev - в udev.

кстати, а как правильно выглядит строчка в fstab для tmpfs?

gaa (*) (25.09.2007 17:08:35)

А ты Линукс как ставил? Из LFS собирал?

anonymous
()
Ответ на: комментарий от anonymous

>>> /tmp должен лежать в tmpfs, /dev - в udev.

>> кстати, а как правильно выглядит строчка в fstab для tmpfs?

> А ты Линукс как ставил? Из LFS собирал?

когда-то давно скопировал knoppix на hd, а потом конфиги за собой таскал

gaa ★★
()
Ответ на: комментарий от gaa

> кстати, а как правильно выглядит строчка в fstab для tmpfs?

tmp /tmp tmpfs defaults 0 0

execve
()
Ответ на: комментарий от VladimirP

>а /etc в отдельную файловую сиситему выносить, как известно, нельзя.
убей того, кто научил тебя этому апстенку! ;)

создаем initrd в котором /linurc - скриптик монтирует корень, поверх монтирует /etc и передает управление init-у! ;)

Ant0
()
Ответ на: комментарий от VladimirP

> А не всегда можно. В /etc организуется файл mtab, который меняется на ходу (поэтому только rw), а /etc в отдельную файловую сиситему выносить, как известно, нельзя.

ln -s /proc/mounts /etc/mtab

execve
()
Ответ на: комментарий от execve

Странная команда. Вообщето /etc/mtab создаётся libc.

Обычно cat /etc/mtab и cat /proc/mounts показывают разные результаты, которые могут частично совпадать.

yantux
()
Ответ на: комментарий от yantux

> Обычно cat /etc/mtab и cat /proc/mounts показывают разные результаты, которые могут частично совпадать.

"могут частично совпадать" - это 5. Ты эти свои "cat" пробовал выполнить?

/etc/mtab - это информация о точках монтирования с точки зрения mount, /proc/mounts - с точки зрения ядра. Различия есть, но изменения в поведении системы после замены одного другим для обычного пользователя минимальны.

execve
()
Ответ на: комментарий от execve

>/etc/mtab - это информация о точках монтирования с точки зрения mount

не mount, а libc Если вы вызовете не mount(), а sys_mount() этого файла не будет.

>/proc/mounts - с точки зрения ядра
а если сделать df? Чья будет эта точка зрения?

>Различия есть, но изменения в поведении системы после замены одного другим для обычного пользователя минимальны.

Они не просто есть, они очень сильно различаются. Даже если ни чего не монтировать ручками результаты будут разными. Сколько раз, проверено...
1. cat /etc/mtab
2. cat /proc/mounts
3. df


Для эксперимента пробуйте:

mkdir /home/a
mkdir /home/b
mount --bind /home/a /home/b
rm -R /home/a

делаем:
1. cat /etc/mtab
2. cat /proc/mounts
3. df

У кого они совпадают?

После этого делаем ради прикола:
mkdir /home/a
mount --bind /home/a /home/b
Мусор в ядре ни кому не помешал?

yantux
()
Ответ на: комментарий от yantux

Сори, може ещё так, будет нагляднее:

mkdir /home/a
mkdir /home/b
mount --bind /home/a /home/b
rm -R /home/a

делаем:
1. cat /etc/mtab
2. cat /proc/mounts
3. df

У кого они совпадают?

После этого делаем ради прикола:
mkdir /home/d
mount --bind /home/d /home/b
Мусор в ядре ни кому не помешал?

yantux
()
Ответ на: комментарий от yantux

А можно ещё так:

mkdir /home/a mkdir /home/b mount --bind /home/a /home/b mount --bind /home/a /home/b mount --bind /home/a /home/b mount --bind /home/a /home/b mount --bind /home/a /home/b

делаем: 1. cat /etc/mtab 2. cat /proc/mounts 3. df

rm -R /home/a

делаем: 1. cat /etc/mtab 2. cat /proc/mounts 3. df

yantux
()
Ответ на: комментарий от execve

> Сюрприз: mount -o remount,ro /

Да ну? :)

> виайем.

А потом? Alt-SysRQ? :)

Gharik
()
Ответ на: комментарий от gaa

> Забыл сказать, что /etc тоже надо бы на rw сунуть. а обратно, если мне не изменяет память, mount -o remount,ro.

Это правильно конечно, но откуда едро узнает, что /etc лежит на другой FS, если fstab лежит не в "/", держать копию и пересинхронизироваться при выключении? ;)

Gharik
()
Ответ на: комментарий от yantux

А можно ещё так: 

mkdir /home/a mkdir /home/b
mount --bind /home/a /home/b
mount --bind /home/a /home/b
mount --bind /home/a /home/b
mount --bind /home/a /home/b
mount --bind /home/a /home/b 

делаем: 1. cat /etc/mtab 2. cat /proc/mounts 3. df 

rm -R /home/a 

делаем: 1. cat /etc/mtab 2. cat /proc/mounts 3. df

yantux
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.