Измените принадлежность файла, на основе предыдущего владельца

Если Вы хотите создать загрузочный usb с отслеживанием в обратном порядке в Вас, может использовать Universal Установщик USB, http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/. Я использую UUI для установки дистрибутива Linux на USB. Это - портативное программное обеспечение никакая необходимая установка. UUI работают прекрасные для создания загрузочного Linux и окон. Размер программного обеспечения - всего 1 МБ.

Используя UUI Вы не должен извлекать файл ISO.

4
24.09.2014, 02:21
2 ответа

Если я вас правильно понял, вы хотите изменить владельца всех файлов внутри некоторого каталога (или корня), который принадлежат пользователю # 500, чтобы принадлежать другому пользователю, без изменения файлов, принадлежащих любому другому пользователю. Вы попали в такую ​​ситуацию, потому что вы скопировали все дерево каталогов с другого компьютера, где файлы внутри этого дерева принадлежали множеству разных пользователей, но вас интересует только обновление тех, которые принадлежали «вашему» пользователю в момент, а не какие-либо файлы, принадлежащие пользователю № 501 или любому другому.

GNU chown поддерживает параметр - from = 500 , который для этого можно использовать в сочетании с рекурсивным параметром -R :

chown -R --from=500 yourusername /path/here

Это будет самый быстрый вариант, если у вас есть GNU chown , что и должно быть в CentOS.

В качестве альтернативы можно использовать find в любой системе:

find /path/here -user 500 -exec chown yourusername '{}' '+'

find будет рекурсивно проверять каждый файл и каталог внутри / path / here , сопоставляя все те, которые принадлежат пользователь # 500. Со всеми этими файлами он будет выполнять chown yourusername file1 file2 ... столько раз, сколько потребуется. После завершения команды все файлы, принадлежащие пользователю №500, будут принадлежать yourusername . Вам нужно будет запустить эту команду от имени root , чтобы иметь возможность изменять владельцев файлов.

Вы можете проверить наличие отставших, выполнив ту же команду find без команды для запуска:

find /path/here -user 500

На этом этапе не должно быть никаких файлов.


Важное предупреждение: если какой-либо из файлов, принадлежащих пользователю # 500, является символической ссылкой, chown по умолчанию изменит владельца файла, на который указывает символическая ссылка, а не сама ссылка. Если вы не доверяете файлам, которые исследуете, это дыра в безопасности. В этом случае используйте chown -h .

6
27.01.2020, 20:49

Одна из проблем с командой chown (но на самом деле, это связано с системным вызовом chown()) заключается в том, что в качестве меры безопасности она удаляет биты setuid и setgid в разрешениях.

Это также не распространяется на ACL.

Для работы с этим можно использовать rsync на каталоге поверх себя в режиме update и с опцией --usermap:

$ ls -ln
total 6732
-rwsr-xr-x  1 1002 1000 6888896 Nov  3 21:50 a
drwxr-xr-x+ 2 1002 1000    4096 Nov  3 21:46 x

$ getfacl -n x
# file: x
# owner: 1002
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1002:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

$ sudo rsync -rAau --usermap=1002:1000 . .

$ ls -ln
total 6732
-rwsr-xr-x  1 1000 1000 6888896 Nov  3 21:50 a
drwxr-xr-x+ 2 1000 1000    4096 Nov  3 21:46 x

$ getfacl -n x
# file: x
# owner: 1000
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1000:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

1002 изменено на 1000 как в владельцах файлов, так и в записях ACL.

Она также корректно обрабатывает сим-ссылки.

3
27.01.2020, 20:49

Теги

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