Как системный вызов (по адресу )приводит к записи файла на диск?

похоже, вы пропустили -настройку вашего сервера :сначала проверьте свои /etc/hosts.allow и /etc/hosts.deny

root@host # grep sshd /etc/hosts.allow
sshd: ALL

или если вы установили открытый ключ на своем сервере, проверьте их также -, возможно, он неисправен.

возможно, вы найдете больше информации о:http://edoceo.com/notabene/ssh-exchange-identification

0
26.08.2020, 17:34
1 ответ

Вы в основном правы, но примешиваете некоторые несущественные детали (из-за того, как работает C, в основном ).

Программа вызываетopen(2)(системный вызов, т. е. обращение к ядру ). Как это делается, в частности, зависит от архитектуры и некоторых других деталей.

Внутренняя часть системного вызова ядра вызывается (снова, детали зависят от архитектуры, точной версии операционной системы,... )с аргументами (здесь запрошенный путь )и прочее информация, такая как учетные данные процесса.

По заданному пути ядро ​​знает, какая файловая система смонтирована по данному пути.Он может выполнять обычный обход от корня вниз, проверяя каждый шаг, есть ли у вызывающей стороны необходимые разрешения, существуют ли каталоги и т. д. Это может включать чтение данных с диска. Если все в порядке, он инициирует соответствующие изменения в структурах данных файловой системы, чтобы записать новый открытый файл, зарезервировать место, зарегистрировать его в каталоге и так далее.

Изменения в структурах данных файловой системы (в памяти пока )предположительно должны быть записаны на диск (или отправлены по сети, или... ). Ядро поставит в очередь операции записи, чтобы выполнить их (, если это не требуется немедленно ), и вернуть их пользователю.

0
18.03.2021, 23:10

Теги

Похожие вопросы