У меня есть корневая файловая система RFS1, которая имеет свои группы и пользователей и в настоящее время используется ядром. Я монтирую другую корневую файловую систему RFS2, у которой есть свои группы и пользователи. Как запустить chown для файла/каталога в RFS2, чтобы создать владельца из групп, перечисленных в /etc/groups RFS2. Я выполняю chown, пока ОС (linux) использует RFS1.
Как использовать chown в смонтированной файловой системе
Ответы (1)
Поскольку вы хотите передать файлы RFS2 пользователю RFS2, вам не нужен RFS1 для chown, поэтому самый простой способ — chroot(1).
Вы монтируете RFS2, например. на /mnt/rfs2
. Затем вы подключаетесь к целевому /mnt/rfs2
, как указано здесь.
chroot
создает новый процесс, заключенный в тюрьму внутри /mnt/rfs2
. Когда этот процесс ссылается на /
, ОС преобразует его как /mnt/rfs2
. Если процесс ссылается на /hello/world
, ОС переведет его как /mnt/rfs2/hello/world
.
Если у RFS2 есть свои пользователи, то у него есть свои /etc/passwd
, и справедливо предположить, что у него есть свои /bin/
, /usr/lib/
и т. д.
После chroot убедитесь, что ваш PATH
совпадает с фактическим расположением двоичных файлов.
Внутри chroot-тюрьмы каждая выполняемая вами команда, например chown
, будет искаться в папке PATH
. Вероятно, он будет найден в /bin/chown
, но теперь это /bin/chown
RFS2 (а именно /mnt/rfs2/bin/chown
), а не RFS1. Каждая динамическая библиотека, которую может использовать chown, также будет исходить из файловой системы RFS2.
Когда вы chown user:group
, chown
будет искать пользователя и группу в /etc/passwd
и /etc/group
, но это файл пароля и группы RFS2.
Когда вы закончите, вы запустите exit
, и процесс оболочки, созданный chroot
для вас, завершится. Пока все это происходило, остальные процессы на машине все еще использовали RFS1.
chown
.chown
принимает идентификаторы пользователей:chown 123 filespec....
или также для групп:chown 123:200 filespec...
. - person lurker   schedule 06.05.2020useradd
иgroupadd
. На самом деле я ожидал, что они будут использовать назначенный системный диск. Разве файл паролей для RFS2 не похож на/mount-path/etc/passwd
? Я не вижу никаких вариантов вchown
для выбора другого диска, поэтому вам, возможно, придется использовать необработанные идентификаторы. - person lurker   schedule 06.05.2020-R
. Вы можете получить идентификатор пользователя из файла паролей RFS2, учитывая имя пользователя (вы можете использоватьsed
илиgrep
иcut
, если хотите сделать это программно). Затем вы можете использовать как идентификатор группы, так и идентификатор пользователя вchown
. Или, может быть, вы могли бы сделатьchroot
для RFS2, сделатьchown
так, как вы хотите, а затемchroot
вернуться к RFS1. - person lurker   schedule 06.05.2020