Я собираюсь взять предположение на этом, но я довольно уверен.
Я держал пари, что существует a PermitRootLogin yes
строка уже в Вашем файле. SSH будет только использовать первую строку, которую она находит и проигнорирует дубликат далее вниз. Таким образом, если Вы просто добавили PermitRootLogin no
в конец файла, не удаляя строку выше, не будет никакого эффекта.
Каналы просто связываются с различными дескрипторами файлов, чем 0 (stdin):
$ echo <(true)
/dev/fd/63
$ echo <(true) <(true)
/dev/fd/63 /dev/fd/62
Процесс может, конечно, иметь больше чем один открытый дескриптор файла за один раз, таким образом, нет никакой проблемы.
pipe()
системный вызов. – Sven Marnach 08.02.2012, 16:26pipe()
и затем разветвляет подпроцессы. Основной процесс действительно имеет дополнительные дескрипторы файлов открытыми, если неименованный канал используется. Эти дополнительные дескрипторы файлов передаются в форме/dev/fd/...
, и процесс будет обычно просто открывать их использующий эти имена файлов. Это приведет к ним бытьdup()
редактор, создавая еще более открытые дескрипторы файлов. Процесс мог также использовать именованный дескриптор файла сразу же без любых прослушиваний... – Sven Marnach 08.02.2012, 23:46a
, Я назвал его как./a <(ls)
, и это успешно распечатало список файлов, доказав, что именованный дескриптор файла (63 в моем случае) был уже открыт. Удар мог бы использовать именованные каналы во временном каталоге на различной архитектуре, чем Linux, в этом случае никакие дополнительные дескрипторы файлов не будут открыты при вводе основного процесса. – Sven Marnach 08.02.2012, 23:49