Могу ли я изменить владельца всех файлов определенного пользователя?


9

Есть ли способ рекурсивно найти все файлы, принадлежащие пользователю, и изменить их на другого пользователя / группу в Gnu / Linux?

Я предполагаю, что должен быть какой-то волшебный вкладыш, но мои навыки командной строки не подходят для этого :)

Спасибо!

Ответы:


14

Используйте findкоманду с -userопцией. Что-то вроде:

find / -user john

в конечном итоге включит все файлы, принадлежащие пользователю "Джон".

Если вы хотите изменить их владельца (я бы запустил findбез выполнения, чтобы убедиться, что у вас есть список, который вы хотите), то что-то вроде:

find / -user john -exec chown harry {} \;

сделаю это.


1
Я обычно использую UID и запускаю, chown harry:harryесли мне нужно убедиться, что членство в группе тоже верно. Но это сильно зависит от приложения здесь.
2012 года

Это на самом деле не будет работать для меня, если я не использовал UID. UID можно найти в / etc / passwd
user222054

7

Уже поздно, но сегодня я наткнулся на этот вопрос, потому что у меня rsyncнет --usermapвыбора.

My chown(v. Chown (GNU coreutils) 8.13) предлагает встроенную функцию recurse ( -R) и --fromопцию, чтобы ваша (и моя) проблема также могла быть решена с помощью

chown -R --from=john harry /


Точнее говоря, я перевожу сервер из OpenSuse в debian, а пользователь и группа apache2 различаются в разных дистрибутивах. В OpenSuse его пользователь wwwrun (id:30)и группа www (id:8), в Debian www-data (id: 33)для обоих. После того, как я скопировал файлы, используя

rsync -az /path/to/files me@debian:/path/to/

я использовал

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

на целевой (Debian) машине.


Примечание. rsync version 3.1.0 protocol version 31Имеется ли вышеупомянутое, --usermapпоэтому, если бы у меня было это, я мог бы выполнить все три шага с помощью одной команды на исходном компьютере:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

Я предпочитаю этот, особенно для возможности изменить группу. Один find -execлайнер для меня - последнее средство перед тем, как делать что-то вручную. (Кроме того, я ненавижу писать {} \;, но это личное)
Томаш Гандор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.