Как изменить владельца на текущего пользователя в папке, содержащей папки внутри моего домашнего каталога?

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 найти только материал, принадлежащий root
  • -exec выполните следующую команду на том, что было найдено
  • sudo chown -R рекурсивно сменить владельца
  • $USER текущий пользователь
  • : также измените группу на конкретного пользователя

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

sudo find ~ -user root -exec sudo chown $USER: {} +
Занна
источник
Вы должны запустить findwith sudo( sudo find ...), чтобы проверить собственные rootподкаталоги с 0700защитой и всем, что находится под ними. То же самое для ремонта.
Вальтинатор
«защищаться от того, что вероятно» или «защищаться от того, что возможно»? Твой выбор.
вальтинатор
@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

Предоставляет возможность настроить список файлов, принадлежащих не-вам, чье право собственности будет изменено на вас.

waltinator
источник
5

Что вам нужно сделать, это изменить владельца папки с пользователя (и группы) root на другого пользователя (и группы), который вы хотите.

Представьте, что вы хотите работать с / home / randomFolder , и что пользователь, которому вы хотите управлять владельцем, это vitor-abella , вам нужно просто выполнить это как root:

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

Это может занять некоторое время, если есть много файлов и подпапок, но после этого вы должны быть в курсе.

Приветствия.

Хавьер Казелли
источник
3
Я использую $(id -u):$(id -g), а не спрашиваю OP, а $HOME/randomFolder.
Вальтинатор