Рекурсивно порушуйте всі файли, які належать певному користувачеві


32

Чи можливо знайти та порушити всі файли, якими володіє конкретний користувач? Я зробив купу речей, як неправильний користувач, і мені потрібно надати правильне право власності на файли.

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

Відповіді:


60

Ви можете використовувати цю портативну команду знаходження з чимось подібним.

find . -user old-user -exec chown new-user:new-group {} \;

Ви можете розширити це, щоб знайти конкретні файли з опціями -iname (не POSIX, але доступні на OSX)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

The. означає поточну папку та нижче, тому ви можете використовувати певний шлях як основу.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Що я шукав. Але лише зауважимо, що варіанти після чауна, new-user:new-userмабуть, повинні сказатиnew-user:new-group
чауна,

2
Я здогадуюсь, фігурні дужки повинні бути в лапках, щоб правильно обробити шляхи з пробілами. Отжеfind . -user old-user -exec chown new-user:new-group "{}" \;
Ден Бенамі

У разі, якщо хтось інший шукає, як знайти файли, які не належать певному користувачеві (файли користувача у домашній каталог, які не належать цьому користувачеві), ви можете додати "!" до -user other-userрозділу, щоб знайти протилежне. Наприклад, find . ! -user other-user.
Джон

Часто вищесказане корисніше при додаванні -group old-group. Таким чином ви зможете зберегти групове право власності (адміністратор, персонал, sillyothergroupname)
brianlmerritt

ps - чуун може знадобитися судо
судо

12

Можна використовувати

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

З посібника chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

редагувати : це, звичайно, працює лише в Linux та більшості UNIces. Для OSX (який базується на BSD) див. Рішення @StephenTrapped.


+1, але це не буде працювати на OSX, у нього chownнемає такої опції, дивіться тут .
тердон

На жаль, я пропустив тег osx :) Проголосував @StephenTrapped.
Рік

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *буде пропускати приховані файли в папці, запускається команда, однак chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .працює і для прихованих файлів у батьківській папці.
Lashae

3

The -hВаріант Chown змінює дозвіл самих символічних посилань на файли , а не тільки мета.

Що може бути вирішальним при цьому на бінарних папках програмного забезпечення, які використовують симоблічні посилання для перемикання між версіями.

find . -user old-user -exec chown -h new-user:new-group {} \;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.