Jak zmienić właściciela na bieżącego użytkownika w folderze i folderach wewnątrz mojego katalogu domowego?

12

Za pomocą sudo nautilusutworzyłem niektóre foldery i chcę pozbyć się na nich uprawnień roota. Ale mam wiele i chcę to zrobić dla całego katalogu i jego folderów.

Jak więc zezwolić na odczyt / zapis aktualnemu użytkownikowi do wszystkich plików i folderów w określonym katalogu znajdującym się w domu?

Vitor Abella
źródło

Odpowiedzi:

14

Aby przywrócić szkody wyrządzone przy użyciu sudo nautilus, powinieneś zostać właścicielem wszelkich katalogów (i ich zawartości), które są własnością root.

Możesz findto zrobić, ponieważ ma test, aby znaleźć tylko pliki należące do określonego użytkownika.

W ten sposób znajdziesz wszystkie katalogi w twoim domu należące do roota:

sudo find ~ -type d -user root

Następnie możesz powtórzyć findpolecenie i dodać akcję, którą chcesz wykonać - rekurencyjnie zmieniając własność wszystkich znalezionych katalogów i ich zawartości do bieżącego użytkownika:

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

Wyjaśnienie:

  • ~ katalog domowy
  • -type d znajdź tylko katalogi
  • -user root znajdź tylko rzeczy należące do roota
  • -exec wykonaj następujące polecenie na tym, co znaleziono
  • sudo chown -R rekurencyjnie zmieniaj właściciela
  • $USER aktualny użytkownik
  • : również zmień grupę na konkretnego użytkownika

Bardziej efektywnie, można pominąć -type d, aby znaleźć pliki dowolnego typu należące do korzeni, a także pominięcie -Rjak findzrobi rekursji dla ciebie, działając na wszystkie pliki

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
źródło
Musisz uruchomić swoją za findpomocą sudo( sudo find ...), aby sprawdzić rootposiadane podkatalogi z 0700zabezpieczeniami i wszystko pod nimi. To samo dotyczy naprawy.
waltinator,
„bronić się przed tym, co prawdopodobne” czy „bronić się przed tym, co jest możliwe”? Twój wybór.
waltinator
@waltinator na pewno :) dzięki za wzmiankę o tym, bym mógł poprawić Po prostu staram się nie używać, sudodopóki nie będzie potrzebna
Zanna
10

Uruchamianie narzędzi graficznych, podobnie nautilusjak rootzostało uznane za niebezpieczne z tego powodu, między innymi (ukryte funkcje, możliwość dyskretnego fragmentów programu realizowanego od kto wie gdzie, ...).

Nie masz problemu z „pozwoleniem”, masz problem z „własnością”.

Aby znaleźć wszystkie pliki należące do root(naprawdę należącego do kogokolwiek innego):

sudo find $HOME \! -user $USER

Aby zmienić własność z powrotem na ciebie, możesz

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

ale to zmieni własność wszystkich plików do i poniżej $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

Daje to możliwość dostosowania listy plików, które nie należą do Ciebie, i których własność zostanie zmieniona.

waltinator
źródło
5

To, co musisz zrobić, to zmienić własność folderu z użytkownika root (i grupy) na innego użytkownika (i grupę), którego chcesz.

Wyobraź sobie, że chcesz pracować na / home / randomFolder i że użytkownik, któremu chcesz zarządzać własnością, to vitor-abella , to po prostu wykonaj to jako root:

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

Może być trochę czasu, jeśli jest dużo plików i podfolderów, ale potem powinieneś być na dobrej drodze.

Twoje zdrowie.

Javier Caselli
źródło
3
Używam $(id -u):$(id -g)zamiast prosić OP o wyobrażenie sobie i $HOME/randomFolder.
waltinator