Bagaimana cara mengubah pemilik menjadi pengguna saat ini di folder dan berisi folder di dalam direktori home saya?

12

Menggunakan sudo nautilussaya membuat beberapa folder dan saya ingin menyingkirkan izin root pada mereka. Tapi saya punya banyak dan saya ingin melakukannya ke seluruh direktori dan folder-foldernya.

Jadi bagaimana mengizinkan baca / tulis untuk pengguna saat ini untuk semua file dan folder di dalam direktori tertentu yang ada di dalam rumah?

Vitor Abella
sumber

Jawaban:

13

Untuk mengembalikan kerusakan yang dilakukan menggunakan sudo nautilusAnda harus menjadikan diri Anda sendiri pemilik direktori (dan isinya) yang dimiliki oleh root.

Anda dapat menggunakannya finduntuk melakukan ini, karena memiliki tes untuk menemukan hanya file yang dimiliki oleh pengguna tertentu.

Ini akan menemukan semua direktori di rumah Anda yang dimiliki oleh root:

sudo find ~ -type d -user root

Anda kemudian dapat mengulangi findperintah dan menambahkan tindakan yang ingin Anda lakukan - mengubah kepemilikan semua direktori yang ditemukan dan isinya secara rekursif kepada pengguna saat ini:

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

Penjelasan:

  • ~ direktori home
  • -type d hanya temukan direktori
  • -user root temukan hanya barang milik root
  • -exec lakukan perintah berikut pada apa pun yang ditemukan
  • sudo chown -R ganti pemilik secara rekursif
  • $USER pengguna saat ini
  • : juga ubah grup menjadi pengguna tertentu

Lebih efisien, Anda bisa menghilangkan -type duntuk menemukan file dari jenis apa pun milik root, dan juga menghilangkan -Rkarena findakan melakukan rekursi untuk Anda dengan bertindak pada semua file

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
sumber
Anda harus menjalankan findwith sudo( sudo find ...) untuk memeriksa rootsubdirektori yang dimiliki dengan 0700perlindungan, dan semua yang ada di bawahnya. Ditto untuk perbaikan.
waltinator
"bertahan melawan apa yang mungkin" atau "bertahan melawan apa yang mungkin"? Pilihanmu.
waltinator
@waltinator tentu :) terima kasih sudah menyebutkannya sehingga saya bisa meningkatkan. Saya hanya mencoba untuk tidak menggunakan sudosampai diperlukan
Zanna
10

Menjalankan alat GUI, seperti nautilussebagai rootyang Dianggap Berbahaya untuk alasan ini, antara lain (fungsi tersembunyi, kemampuan untuk fragmen program yang dijalankan diam-diam dari siapa yang tahu di mana, ...).

Anda tidak memiliki masalah "izin", Anda memiliki masalah "kepemilikan".

Untuk menemukan semua file yang dimiliki oleh root(benar-benar dimiliki oleh orang lain), lakukan:

sudo find $HOME \! -user $USER

Untuk mengubah kepemilikan kembali kepada Anda, Anda bisa

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

tapi itu akan mengubah kepemilikan semua file di dalam dan di bawah $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

Memberi Anda satu kesempatan untuk menyesuaikan daftar file, yang dimiliki oleh bukan-Anda, yang kepemilikannya akan diubah kembali kepada Anda.

waltinator
sumber
5

Yang perlu Anda lakukan adalah mengubah kepemilikan folder dari root pengguna (dan grup) menjadi pengguna lain (dan grup) yang Anda inginkan.

Bayangkan Anda ingin bekerja di / home / randomFolder , dan bahwa pengguna yang ingin Anda tangani kepemilikannya adalah vitor-abella , yang perlu Anda lakukan hanyalah menjalankan ini sebagai root:

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

Mungkin perlu beberapa saat jika ada banyak file dan subfolder, tetapi setelah itu Anda harus berada di jalur.

Bersulang.

Javier Caselli
sumber
3
Saya menggunakan $(id -u):$(id -g), daripada meminta OP untuk membayangkan, dan $HOME/randomFolder.
waltinator