Чи можу я змінити право власності на всі файли конкретного користувача?


9

Чи є спосіб рекурсивно знайти всі файли, що належать користувачеві, та змінити їх на іншого користувача / групу в Gnu / Linux?

Я припускаю, що має бути якийсь магічний один вкладиш, але мої навички майстра командного рядка не до цього :)

Дякую!

Відповіді:


14

Скористайтеся findкомандою з -userопцією. Щось на зразок:

find / -user john

з часом з'являться всі файли, що належать користувачеві "john".

Якщо ви хочете змінити їх власність (я б запустив findбез виконання, щоб переконатися, що у вас потрібний список), то щось на кшталт:

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

зробимо це.


1
Зазвичай я використовую UID і запускаю, chown harry:harryякщо мені потрібно, щоб переконатися в правильності і членства в групі. Але це в значній мірі залежить від застосування тут.
ewwhite

Він насправді не працював би для мене, якщо я не використовував UID. UID можна знайти в / etc / passwd
user222054

7

Це пізно, але сьогодні я натрапив на це питання, тому що у мене rsyncнемає --usermapможливості.

Мій chown(v. Chown (GNU coreutils) 8.13) пропонує вбудований рекурс ( -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.