1

В Windows, когда я смотрю на разрешения для удаленной папки, учетные записи указываются с именем компьютера или доменом, то есть с правами доступа к имени учетной записи.

В Linux, если у меня есть виртуальная машина с подключением к удаленному диску, а владельцем папки на подключении является «root», то это мой корень или корень удаленной системы?

В Linux все кажется слишком простым, чтобы работать, как только включается сеть. Я явно что-то упускаю.

Люк

2 ответа2

1

Это, к сожалению, одна из самых запутанных вещей в совместном использовании файлов в Unix. И я плохо объясняю непонятные вещи.

Например, в выводе ls -l вы видите идентификатор удаленного пользователя, переведенный с точки зрения локальной системы.

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

Например, если на сервере есть два файла, один из которых принадлежит root (UID 0), а другой принадлежит Luke (UID 1000), ls будет знать только, что они принадлежат "0" и "1000", и будет ищите локальные учетные записи с одинаковыми UID. "0" всегда корень, но "1000" может быть, а может и не быть Люком. Если UID принадлежит учетной записи, хранящейся в LDAP или NIS или AD, и если клиентская ОС фактически настроена на поиск учетных записей пользователей в LDAP, она выдаст правильное имя пользователя. В противном случае это может фактически быть ложью, поскольку UID локальной учетной записи (1000, 1001, ...), как правило, соответствуют разным людям на разных компьютерах.

(Существуют способы, которыми драйвер файловой системы может сообщать программам полное имя пользователя в форме "расширенных атрибутов". К сожалению, несмотря на различные попытки, стандартного способа сделать это не существует, и программы, подобные ls обычно стараются избегать хитростей, связанных с файловой системой. Более того, к сожалению, не все сетевые протоколы файловой системы могут передавать имена пользователей: CIFS, то есть SMB, может, NFSv4, большинство других - нет.)

Но ничего из этого не имеет значения, поскольку то , что вы можете сделать с файлом, всегда определяется тем, что знает сервер, а не тем, что видит клиент. Например, если вы используете sshfs , он входит на сервер через SSH, используя ваше имя пользователя (например, sshfs luke@fileserver), и сервер не позволит вам делать то, что вы не должны делать. То же самое с CIFS, AFS и так далее.

0

Владелец - пользователь root на удаленной машине. Если вы хотите иметь доступ к нему как root на удаленной машине, вам нужно будет смонтировать его как root на удаленной машине.

Другими словами, это должно работать (локальный пользователь, удаленный пользователь root):

aye@ayes-machine$ sshfs root@bees-machine:/path /local-path

Это не будет работать (локальный пользователь root, удаленный пользователь bee):

aye@ayes-machine$ sudo sshfs bee@bees-machine:/path /local-path

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .