Як змінити власника на поточного користувача в папці, що містить папки всередині мого домашнього каталогу?


12

Використовуючи, sudo nautilusя створив декілька папок і хочу позбутися дозволу root на них. Але мене багато, і я хочу зробити це для цілого каталогу та його папок, що містять його.

Тож як дозволити читати / записувати поточному користувачеві всі файли та папки всередині певного каталогу, який знаходиться всередині будинку?

Відповіді:


14

Щоб повернути шкоду, заподіяну за допомогою, sudo nautilusви повинні зробити себе власником будь-яких каталогів (та їх вмісту), які належать root.

Ви можете використовувати findце, оскільки в ньому є тест на пошук лише файлів, що належать конкретному користувачеві.

Тут ви знайдете всі каталоги у вашому домі, що належать root:

sudo find ~ -type d -user root

Потім можна повторити findкоманду та додати дію, яку ви хочете зробити - рекурсивно змінюючи право власності на всі знайдені каталоги та їх вміст на поточного користувача:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

Пояснення:

  • ~ домашній каталог
  • -type d знайти тільки каталоги
  • -user root знайдіть лише речі, що належать до кореня
  • -exec виконайте наступну команду щодо того, що було знайдено
  • sudo chown -R рекурсивно змінювати власника
  • $USER поточного користувача
  • : також змінити групу для конкретного користувача

Більш ефективно, ви можете пропустити -type dпошук файлів будь-якого типу, що належать до root, а також опустити так, -Rяк findце зробить рекурсія для вас, діючи на всі файли

sudo find ~ -user root -exec sudo chown $USER: {} +

Ви повинні запустити свої findз sudo( sudo find ...) для перевірки root-ний підкаталогів з 0700захистом, і все , що під ними. Дітто на ремонт.
waltinator

"захищати від можливого" або "захищати від можливого"? Твій вибір.
waltinator

@waltinator впевнений :) дякую, що згадав про це, щоб я міг покращити. Я просто намагаюся не використовувати, sudoпоки потрібно
Zanna

10

Запуск інструментів GUI, як, наприклад nautilus, rootвважається шкідливим з цієї причини, серед інших (приховані функції, можливість безшумно запускати фрагменти програми від того, хто знає, де ...).

У вас немає проблеми з "дозволом", у вас є проблема "власності".

Щоб знайти усі файли, які належать root(насправді хтось інший), виконайте:

sudo find $HOME \! -user $USER

Щоб змінити право власності на вас, ви могли

sudo chown -R $(id -u):$(id -g) $HOME

але це змінить право власності на всі файли в і під $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

Дає можливість скорегувати список файлів, які належать вам не тим, хто змінить їх право власності на вас.


5

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

Уявіть, що ви хочете працювати над / home / randomFolder , і що користувач, з яким ви хочете обробляти право власності, - vitor-abella , що вам потрібно зробити, це просто виконати це як root:

chown -R vitor-abella:vitor-abella /home/randomFolder

Якщо файлів і підпапок багато, але це може зайняти деякий час, але після цього ви повинні бути на шляху.

Ура.


3
Я використовую $(id -u):$(id -g), а не прошу уявити ОП, і $HOME/randomFolder.
waltinator
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.