Вы по-прежнему можете создавать узлы устройств, но если файловая система смонтирована с опцией nodev
, любые узлы устройств в этой файловой системе не будут работать.
Например, давайте создадим простой файл изображения для временной файловой системы:
$ dd if=/dev/zero of=/tmp/test.img bs=1024 count=10240
10240+0 records in
10240+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0141206 s, 743 MB/s
$ sudo mke2fs /tmp/test.img
[normal mke2fs messages...]
$ sudo mount -o loop,rw /tmp/test.img /mnt
Теперь у нас есть временная дополнительная файловая система (размером 10M ), которую мы можем использовать для тестирования, смонтированная по адресу /mnt
.
Создадим дубликат узла устройства для второй виртуальной консоли текстового -режима, или/dev/tty2
:
$ ls -l /dev/tty2
crw--w---- 1 root tty 4, 2 Aug 4 18:34 /dev/tty2
$ sudo mknod /mnt/hacker_tty c 4 2
$ sudo chown $(whoami) /mnt/hacker_tty
$ ls -l /mnt/hacker_tty
crw-r--r-- 1 my_username root 4, 2 Aug 4 18:46 /mnt/hacker_tty
Обратите внимание, что имя нашего дополнительного устройства может быть любым :важно то, что тип устройства(c
для символа, b
для блочного устройства ), а также старший и младший номера устройства(4
и 2
, соответственно )соответствуют целевому устройству. Они определяют, с каким экземпляром устройства ядра взаимодействует узел устройства.
Теперь мы можем писать любой текст на виртуальную консоль без прав суперпользователя:
$ printf "I am an evil hacker\nin your computer\ndoing evil things.\n" >/mnt/hacker_tty
Нажмите Ctrl + Alt + F2 для просмотра сообщения. Затем вернитесь в виртуальную консоль, где находится ваш обычный сеанс, обычно либо Ctrl + Alt + F7 , либо Ctrl + Alt + F1 в зависимости от вашего дистрибутива и от того, используете ли вы сеанс GUI или нет.
Теперь давайте размонтируем тестовую файловую систему, снова смонтируем ее с опцией монтирования nodev
и попробуем еще раз.
$ sudo umount /mnt
$ sudo mount -o loop,rw,nodev /tmp/test.img /mnt
$ printf '\nCurses!\nI have been foiled!\n' >/mnt/hacker_tty
bash: /mnt/hacker_tty: Permission denied
$ ls -l /mnt/hacker_tty
crw-r--r-- 1 my_username root 4, 2 Aug 4 18:46 hacker_tty
Видимые разрешения не изменились, но узел устройства просто не работает.
Даже рут не поможет:
$ sudo -i
[sudo] password for my_username:
# printf '\nCurses!\nI have been foiled!\n' >/mnt/hacker_tty
bash: /mnt/hacker_tty: Permission denied
# exit
$
После того, как мы успешно поэкспериментировали, давайте уберем за собой:
$ sudo umount /mnt
$ rm /tmp/test.img
Обратите внимание, что это тщательно продуманный пример, который должен быть относительно безопасным. Клонируя узел устройства, который соответствует блочному устройству, содержащему вашу корневую файловую систему, и используя подходящий инструмент для понимания структуры файловой системы, вы можете:например, обойти разрешения файловой системы и прочитать содержимое /etc/shadow
(, то есть хэши паролей каждого пользователя! ). Или вы можете просто перезаписать блок, содержащий хэш пароля root, содержимым по вашему выбору.
В mount -t hugetlbfs nodev /mnt/huge
тип файловой системы hugetlbfs
на самом деле не нуждается в связанном с ним устройстве, но команда монтирования не знает об этом. В результате все, что указано в параметре «device», как и в вашем случае, nodev, полностью игнорируется.
Автор этой страницы просто использует nodev
как сокращение для «нет устройства» -в качестве фиктивного заполнителя, совершенно не связанного с параметрами монтирования. Чтобы указать параметр монтирования, вам понадобится -o nodev
. Да, это неудачный, запутанный выбор в документе.
Используйте одинаковую цветовую схему для обоих, как и в дистрибутивах на основе Arch Linux,kde-gtk-config
(есть все, что обеспечивает /usr/share/kcm-gtk-module/
, я думаю. Он добавляет настройки GTK в System Sttings ), посмотрите, что есть в вашем дистрибутиве. Скажем, если вы используете схему adwita
для KDE, установите ее для gtk в настройках системы. Внешний вид > Стиль приложения > Настроить стиль приложения GNOME/GTK. Вы можете скачать новые схемы под этой опцией и установить их. Подробнее читайте в ArchWiki