I don't know how to transfer ownership of files from an account on one installation to an account on another.
Файлы не принадлежат имени пользователя, они принадлежат UID. Сопоставление между именем пользователя и UID обычно управляется в файле базы данных пользователей /etc/passwd
. Вот пример фрагмента
root:x:0:0:root:/root:/bin/bash
tom:x:1000:1000:Tom Pearce,,,:/home/tom:/bin/bash
bill:x:1001:1001:Bill Brewer,,,:/home/bill:/bin/bash
jan:x:1002:1002:Jan Stewer,,,:/home/jan:/bin/bash
peter:x:1003:1003:Peter Gurney,,,:/home/peter:/bin/bash
При запуске ls -l
владельцы UID/GID для каждого файла преобразуются с помощью этой базы данных в соответствующие имена. Вы можете увидеть фактические имена с помощью ls -ln
.
Итак, для «передачи» права собственности на файлы у вас есть несколько вариантов
Убедитесь, что сопоставление имени с UID/GID одинаково в обеих системах. В этом случае chown
/ chgrp
не требуются, поскольку владельцы файлов сопоставляются с одним и тем же набором имен в обеих системах.
Узнайте исходный UID/GID и целевой UID/GID и измените каждый затронутый файл один за другим. Это не так просто, как кажется, потому что вы должны быть осторожны, чтобы не изменить файл на пару UID/GID, которая впоследствии будет изменена еще раз. Как правило, вы должны chown
/ chgrp
для каждого файла указать временный диапазон UID, который нигде не используется ни в одной из систем, а затем изменить их с этого набора на фактический набор.
# Example to change file UIDs from 1000 to 1010
find / -mount -user 1000 -exec chown 61010 {} +
# Later, when you've moved all the file ownwerships out of the 1xxx range
find / -mount -user 61010 -exec chown 1010 {} +
Я предполагаю, что преобразователь зависимостей выбрал первое, так как ему не нужно обновлять два пакета (libgcc, libgomp ). Если вы запустите ту же команду с --best
, я думаю, вы получите тот же результат, что и при более позднем запуске.