Làm cách nào để thay đổi chủ sở hữu thành người dùng hiện tại trên thư mục và chứa các thư mục trong thư mục chính của tôi?


12

Sử dụng sudo nautilustôi đã tạo một số thư mục và tôi muốn thoát khỏi quyền root trên chúng. Nhưng tôi có nhiều và tôi muốn làm điều đó với toàn bộ thư mục và các thư mục chứa nó.

Vậy làm thế nào để cho phép đọc / ghi cho người dùng hiện tại vào tất cả các tệp và thư mục bên trong một thư mục cụ thể ở trong nhà?

Câu trả lời:


13

Để hoàn nguyên thiệt hại khi sử dụng, sudo nautilusbạn nên biến mình thành chủ sở hữu của bất kỳ thư mục nào (và nội dung của chúng) thuộc sở hữu của root.

Bạn có thể sử dụng findđể làm điều này, vì nó có một bài kiểm tra để chỉ tìm các tệp thuộc sở hữu của một người dùng cụ thể.

Điều này sẽ tìm thấy tất cả các thư mục trong nhà của bạn thuộc sở hữu của root:

sudo find ~ -type d -user root

Sau đó, bạn có thể lặp lại findlệnh và thêm hành động bạn muốn làm - thay đổi quyền sở hữu đệ quy của tất cả các thư mục tìm thấy và nội dung của chúng cho người dùng hiện tại:

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

Giải trình:

  • ~ thư mục nhà
  • -type d chỉ tìm thư mục
  • -user root chỉ tìm những thứ thuộc về root
  • -exec thực hiện các lệnh sau trên bất cứ điều gì đã được tìm thấy
  • sudo chown -R đệ quy thay đổi chủ sở hữu
  • $USER người dùng hiện tại
  • : cũng thay đổi nhóm thành người dùng cụ thể

Hiệu quả hơn, bạn có thể bỏ qua -type dđể tìm các file của bất kỳ loại thuộc gốc, và cũng có thể bỏ qua -Rnhư findsẽ thực hiện đệ quy cho bạn bằng cách tác động lên tất cả các file

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

Bạn phải chạy của bạn findvới sudo( sudo find ...) để kiểm tra các rootthư mục con được 0700bảo vệ với các biện pháp bảo vệ và mọi thứ bên dưới chúng. Ditto cho việc sửa chữa.
ví von

"Bảo vệ chống lại những gì có thể" hoặc "bảo vệ chống lại những gì có thể"? Lựa chọn của bạn.
ví von

@waltinator chắc chắn :) cảm ơn vì đã đề cập đến nó để tôi có thể cải thiện. Tôi chỉ cố gắng không sử dụng sudocho đến khi cần
Zanna

10

Chạy công cụ GUI, giống như nautilusrootđược coi là có hại vì lý do này, trong số những người khác (chức năng ẩn, khả năng các mảnh vỡ chương trình chạy âm thầm từ những người hiểu biết ở đâu, ...).

Bạn không có vấn đề "cho phép", bạn có vấn đề "quyền sở hữu".

Để tìm tất cả các tệp thuộc sở hữu của root(thực sự thuộc sở hữu của bất kỳ ai khác), hãy làm:

sudo find $HOME \! -user $USER

Để thay đổi quyền sở hữu trở lại với bạn, bạn có thể

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

nhưng điều đó sẽ thay đổi quyền sở hữu của tất cả các tệp trong và dưới $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

Cung cấp cho một cơ hội để điều chỉnh danh sách các tệp, không thuộc sở hữu của bạn, điều đó sẽ khiến quyền sở hữu của họ bị thay đổi trở lại với bạn.


5

Những gì bạn cần làm là thay đổi quyền sở hữu của thư mục từ người dùng (và nhóm) gốc cho người dùng khác (và nhóm) mà bạn muốn.

Hãy tưởng tượng bạn muốn làm việc trên / home / RandomFolder và người dùng mà bạn muốn xử lý quyền sở hữu là vitor-abella , điều bạn cần làm chỉ đơn giản là thực thi điều này với quyền root:

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

Có thể mất một lúc nếu có nhiều tệp và thư mục con, nhưng sau đó bạn sẽ đi đúng hướng.

Chúc mừng.


3
Tôi sử dụng $(id -u):$(id -g), thay vì yêu cầu OP tưởng tượng, và $HOME/randomFolder.
ví von
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.