Невозможно выполнить запись в / dev / console через узел не в / dev

Кто-нибудь может объяснить это:

Система Embedded Arm, Linux 3.18.44. Нет SELinux или что-то еще:

# ls -l /dev/console crw------- 1 root root 5, 1 Jan 6 02:40 /dev/console # ls -l /tmp/console crw------- 1 root root 5, 1 Jan 6 02:39 /tmp/console # echo foo > /dev/console foo # echo foo > /tmp/console -sh: can't create /tmp/console: Permission denied # ls -ld /tmp drwxr-xr-x 2 root root 80 Jan 6 02:39 /tmp # ls -ld /dev drwxr-xr-x 11 root root 5480 Jan 6 02:32 /dev 

Некоторые детали из strace :

 # strace sh -c 'echo foo > /tmp/console' 2>&1 | grep console execve("/bin/sh", ["sh", "-c", "echo foo > /tmp/console"], [/* 12 vars */]) = 0 open("/tmp/console", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = -1 EACCES (Pe) 

Против:

 # strace sh -c 'echo foo > /dev/console' 2>&1 | grep console execve("/bin/sh", ["sh", "-c", "echo foo > /dev/console"], [/* 12 vars */]) = 0 open("/dev/console", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3 foo 

Это одно и то же устройство: майор 5, минор 1. Почему устройство должно заботиться о имени пути узла файловой системы, который ссылается на него? Если это именно так, это выглядит так:

 # mknod -m 600 /tmp/cons c 5 1 # echo foo > /dev/cons foo # mknod -m 600 /tmp/cons c 5 1 # echo foo > /tmp/cons -sh: can't create /tmp/cons: Permission denied 

Какой-то «театр безопасности»? Он работает под Linux 3.14 на очень похожем аппаратном обеспечении.

Interesting Posts

Не показывайте вывод подзаголовка

беспроводной отключается аппаратным переключателем, даже если нет

Как заставить ssh использовать второй интерфейс с более высокой метрикой?

Служба Postfix включена, но не запускается при перезагрузке

gnome shell, как получить доступ к меню приложения gnome

Извлеките все имена изображений с именами подпапок в CSV-файл, используя сценарий оболочки

Как исправить «операция не разрешена» в ssh?

Как перезаписать начало устройства со случайными битами или нулями?

Можем ли мы транслировать в tmux

CentOS IPsec: мы не можем идентифицировать себя ни с каким концом этого соединения

Почему мой скрипт оболочки висит на `apt-get -y upgrade`?

Должен ли я использовать KVM или Xen? В чем основные отличия?

Имя указанной сети SAMBA больше не доступно

Почему пакеты поставляются без скриптов init.d?

Заменить сценарии развертывания с помощью незамысловатого

Linux и Unix - лучшая ОС в мире.