Знает ли блочное устройство о фактическом пользователе / ​​процессе, который инициирует чтение / запись?

Пользователь идентифицируется в работающей системе и в большинстве файловых систем по числовому идентификатору, а не по имени. Вы не можете заменить числовой идентификатор (uid) именем внутри файловой системы: это делает команда ls на основе пользовательской базы данных системы, в которой она выполняется.

Современные версии протокола NFS (NFSv4) позволяют переназначать идентификаторы пользователей и групп. На клиенте настройте nfsidmap для сопоставления пользователя сервера 4016 с любым пользователем, которого вы хотите иметь локально.

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

Если вы настраиваете это только для одного пользователя, обычно гораздо проще использовать другой протокол, чем NFS. Убедитесь, что на сервере работает SSH-сервер с включенным SFTP, и смонтируйте удаленную файловую систему через SSHFS.

1
06.09.2017, 12:01
1 ответ

Нет, блочное устройство не знает, какой процесс или пользователь вызвал доступ к диску. Фундаментальная причина, по которой он не знает, состоит в том, что это понятие -плохо определено. Прямой связи между доступом к диску и доступом к файлу нет. Например, если несколько процессов читают из одного и того же места в одном и том же файле практически в одно и то же время, то у них обоих может быть ожидающий запрос на чтение, который просачивается на оборудование. Другой пример: буферизованная запись может иметь место после того, как процесс, активность которого вызвала запись, умерла.

0
28.01.2020, 00:49

Теги

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