Назад | Перейти на главную страницу

Сделать / home / tmp noexec nodev без отдельного раздела

Мне нужно изменить некоторые параметры монтирования для частей корневой файловой системы, таких как / tmp / var и / home (добавить nodev, nosuid и quota), но у меня нет возможности создать отдельный раздел, и у меня недостаточно оперативной памяти для смонтируйте / tmp как tmpfs. Я пробовал монтировать -o bind, noexec, nodev, nosuid / tmp / tmp, но, похоже, он не работает, потому что после этого я все еще могу выполнять файлы из / tmp и делать кивки устройств на нем. Есть ли другой способ сделать это?

Вы можете перемонтировать / tmp с параметрами bind и noexec, nodev, nosuid, но не за один шаг. Из-за некоторых ограничений уровня VFS ядра Linux вы должны сначала подключить его, а затем перемонтировать с соответствующими параметрами.

root@utemp:/# /tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# mount -o bind,noexec /tmp /tmp
root@utemp:/# ./tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# umount /tmp
root@utemp:/# mount -o bind /tmp /tmp
root@utemp:/# mount -o remount,noexec /tmp
root@utemp:/# ./tmp/test.sh 
bash: ./tmp/test.sh: Permission denied
root@utemp:/# umount /tmp

Это неудобно - вместо одной строчки в / etc / fstab при загрузке системы нужно вызывать какой-то скрипт с двумя командами монтирования на каталог.

Больше информации в этом LWN статья. В старом ядре это не сработает - точка монтирования привязки всегда имеет те же параметры монтирования, что и базовая файловая система.