Tôi đã có một thư mục được gọi là pdfs có chứa một loạt các thư mục con và thư mục con. Tôi muốn thay đổi quyền sở hữu trên tất cả các tệp PDF trong tất cả các thư mục con. Tôi vừa thử điều này:
chown -R someuser:somegroup *.pdf
… nhưng nó không thay đổi quyền sở hữu các tệp PDF trong các thư mục con. Người dùng và nhóm tồn tại.
Theo trang nam cho chown, các -R nên có nghĩa là đệ quy:
-R, --recursive operate on files and directories recursively
Tôi đang thiếu gì?
Chế độ đệ quy chỉ hoạt động trên các thư mục, không phải tệp. Bằng cách sử dụng toàn cầu ‘* .pdf’, shell sẽ chuyển danh sách tệp sang chown, trong đó thấy đây là các tệp và thay đổi các quyền trên các tệp mà nó nhìn thấy và đó là nó.
Chế độ đệ quy chỉ hoạt động trên các thư mục, không phải tệp. Bằng cách sử dụng toàn cầu ‘* .pdf’, shell sẽ chuyển danh sách tệp sang chown, trong đó thấy đây là các tệp và thay đổi các quyền trên các tệp mà nó nhìn thấy và đó là nó.
Hãy nhớ rằng, trong shell, toàn cầu được đánh giá bằng shell chứ không phải lệnh. Nếu quả cầu khớp với các tệp, chúng được truyền cho lệnh và lệnh không bao giờ biết một quả địa cầu tồn tại. (Điều này khác với cách Windows Command prompt được sử dụng để thực hiện). Nếu bạn có một thư mục, với nội dung như:
machine:$ ls -F file1.pdf file2.pdf other.txt subdir/
Và bạn đã gõ:
chown -R someuser:somegroup *.pdf
Shell đầu tiên sẽ tạo danh sách: file1.pdf file2.pdf
và sau đó chạy lệnh của bạn:
chown -R someuser:somegroup file1.pdf file2.pdf
Xem, không có thư mục cho -R để hành động. Nó thực hiện những gì bạn yêu cầu – thay đổi quyền sở hữu trên hai tệp trên dòng lệnh, bỏ qua cờ -R kỳ quặc đó.
Để làm những gì bạn muốn, để sử dụng ‘* .pdf’ làm mẫu cho thư mục và thư mục con này, bạn có thể sử dụng find
, có thể tìm thấy các tệp khớp với mẫu tên tệp (hoặc nhiều tiêu chí khác) và chuyển đến một tiểu ban
find . -type f -name ‘*.pdf’ | xargs chown someuser:somegroup
Điều này bắt đầu trong thư mục hiện tại ‘.’ để tìm tập tin (filetype f) của mẫu tên '*.pdf'
sau đó chuyển đến xargs, nó xây dựng một dòng lệnh để chmod. Chú ý các trích dẫn xung quanh mẫu '*.pdf'
, hãy nhớ rằng shell sẽ tạo một quả địa cầu nếu có thể, nhưng bạn muốn mô hình được truyền đến find
, vì vậy bạn cần phải trích dẫn nó.
Vì tên tệp có thể có khoảng trắng trong chúng, bạn muốn sử dụng một mẹo để làm cho tên tệp có dấu cách an toàn:
find . -type f -name ‘*.pdf’ -print0 | xargs -0 chown someuser:somegroup
Trong bash 3 trở xuống, đây là cách bạn cần làm. Globing mạnh hơn có sẵn trong bash 4 (với shopt -s globstar
) và các vỏ khác. Tương tự trong zsh, sử dụng một đệ quy toàn cầu **
:
chown -R someuser:somegroup ./**/*.pdf
Làm thế nào để bạn thực hiện đệ quy Chown?
Đôi khi bạn có thể gặp lỗi khi sử dụng bất kỳ hệ điều hành Linux nào chẳng hạn như bị từ chối khi chỉnh sửa tệp. Điều này là do có ít quyền hơn đối với tệp cụ thể đó. Chown thường được viết tắt là “change owner”, nghĩa là Chown là hướng dẫn thay đổi chủ sở hữu của một nhóm file và thư mục trên Linux. Hơn nữa, bạn cần sửa đổi chủ sở hữu của thư mục chứa tất cả tài liệu trong một số trường hợp nhất định. Bạn có thể phải sử dụng chown đệ quy, đây là một trong những lựa chọn của lệnh chown. Đệ quy có nghĩa là chown sẽ được thực hiện cho tất cả các tài liệu trong thư mục được chỉ định cũng như các tệp và thư mục bên trong tất cả các thư mục con. Bạn sẽ khám phá cách sửa đổi đệ quy ủy quyền thư mục và tệp trong khi sử dụng lệnh chown trong hướng dẫn này.
Cú pháp:
$ Chown –R Mode Directory
Ví dụ 01: Chown đơn giản
Đầu tiên chúng ta cần xem lệnh chown hoạt động như thế nào. Mở thiết bị đầu cuối dòng lệnh từ Ứng dụng. Sắp xếp tất cả các thư mục và tập tin từ thư mục chính của người dùng “aqsayasin” bằng lệnh danh sách. Đầu ra hiển thị danh sách các tập tin và thư mục như hình.
$ ls
Chúng tôi có một tệp “main.c ” trong thư mục Home của người dùng “aqsayasin”. Chúng tôi phải kiểm tra chủ sở hữu của một tệp cụ thể để áp dụng thêm các thay đổi. Với mục đích cụ thể này, chúng ta sẽ sử dụng lệnh “ls –lart”. Như được hiển thị bên dưới, chúng ta có thể nói rằng người dùng “aqsayasin” là chủ sở hữu của nó và nó nằm trong nhóm “aqsayasin”.
$ ls –lart filename
Hãy sửa đổi nó bằng cách thay đổi chủ sở hữu của nó thành người dùng “root”. Chúng tôi sẽ sử dụng lệnh “chown” bên dưới để làm như vậy.
$ sudo chown root filename
Bây giờ, khi kiểm tra chủ sở hữu tệp và nhóm bằng cách sử dụng cùng lệnh “ls –lart”, bạn có thể thấy chủ sở hữu đã được thay đổi. Kết quả đầu ra cho thấy người dùng “root” là chủ sở hữu của nó và nó thuộc cùng một nhóm “aqsayasin”.
$ ls –lart filename
Chown đệ quy sử dụng cờ –R:
Cách đầu tiên và dễ dàng nhất là sử dụng cờ -R để xác định tính chất đệ quy của lệnh chown. Trước tiên, hãy kiểm tra chủ sở hữu của tất cả các tệp và thư mục nằm trong thư mục Home của người dùng “aqsayasin” bằng cách sử dụng lệnh “ls” bên dưới. Từ kết quả đầu ra bên dưới, chúng ta có thể thấy rằng chủ sở hữu của tất cả các tệp ngoại trừ hai trong số đó là người dùng “aqsayasin”.
$ ls -la
Ví dụ 01: Thay đổi chủ sở hữu
Bây giờ, đã đến lúc thay đổi chủ sở hữu của tất cả các tệp và thư mục bằng cờ –R với truy vấn chown. Vì vậy, chúng tôi sẽ sử dụng đặc quyền sudo để thực hiện việc này. Hãy thử lệnh “chown” bên dưới, theo sau là cờ “-R” cùng với tên của chủ sở hữu là “root”. Chúng tôi đã cung cấp vị trí thư mục trong hướng dẫn này. Điều này có nghĩa là tất cả các tệp và thư mục nằm trong thư mục “aqsayasin” của thư mục “Trang chủ” sẽ có chủ sở hữu là “root” thay vì người dùng “aqsayasin”. Nó có thể yêu cầu mật khẩu tài khoản root của bạn để áp dụng các thay đổi.
$ sudo chown –R root /home/aqsayasin/
Sau khi thực hiện lệnh chown, đã đến lúc kiểm tra xem các thay đổi đã được thực hiện hiệu quả hay chưa. Với mục đích cụ thể này, chúng ta sẽ sử dụng lệnh danh sách giống như chúng ta đã sử dụng trước đây. Vì vậy, kết quả đầu ra cho thấy tất cả các tập tin đã được thay đổi thành “root”.
$ ls –la
Ví dụ 02: Thay đổi nhóm
Sau khi thay đổi chủ sở hữu, đã đến lúc thay đổi nhóm tất cả các tệp và thư mục bằng cờ –R trong hướng dẫn chown. Đầu tiên, liệt kê tất cả các tập tin và thư mục bằng lệnh list. Bạn có thể quan sát tất cả các tập tin và thư mục nằm trong nhóm “aqsayasin”.
$ ls -la
Chúng tôi sẽ thay đổi nhóm thành “root” từ “aqsayasin”. Đối với điều này, chúng tôi sẽ sử dụng lệnh chown với cờ –R. Có một sự thay đổi nhỏ trong lệnh này. Để thay đổi nhóm, chúng ta sẽ sử dụng dấu “: ” trước tên nhóm. Chúng tôi sẽ cung cấp vị trí của thư mục mà chúng tôi muốn thay đổi nhóm các thư mục con của nó. Sử dụng từ khóa “sudo” để áp dụng tên nhóm. Nó có thể yêu cầu mật khẩu tài khoản sudo của bạn để áp dụng những thay đổi này như dưới đây.
$ sudo chown –R :root /home/aqsayasin/
Sau khi áp dụng các thay đổi, chúng tôi sẽ liệt kê lại tất cả các tệp và thư mục để kiểm tra cập nhật. Sử dụng lệnh danh sách dưới đây để làm như vậy. Bạn có thể thấy nhóm tất cả các file và thư mục đã được đổi thành “root”.
$ ls -la
Ví dụ về Chown đơn giản:
Hãy lấy một ví dụ đơn giản khác ngoài chown. Bạn phải tạo hai tệp có tên “one.txt ” và “scnd.txt ” bằng lệnh touch như sau:
$ touch filename1
$ touch filename2
Hãy kiểm tra chủ sở hữu và nhóm của cả hai tệp bằng lệnh list như dưới đây:
$ ls –l filename1
$ ls –l filename2
Bạn có thể thấy cả hai tệp đều có cùng chủ sở hữu và nhóm, ví dụ: “aqsayasin”.
Trước tiên, hãy thay đổi chủ sở hữu của tệp “one.txt” thành người dùng “root” bằng cách sử dụng lệnh “sudo chown” đơn giản, theo sau là tên chủ sở hữu và tên tệp như dưới đây:
$ sudo chown root filename1
Khi kiểm tra lại tệp đầu tiên bằng lệnh danh sách, bạn có thể thấy chủ sở hữu đã được thay đổi thành “root”.
$ ls –l filename1
Bây giờ chúng ta sẽ gán các quyền tương tự của tệp đầu tiên cho tệp thứ hai bằng cách sử dụng “tham chiếu” trong lệnh chown, theo sau là tên tệp đầu tiên. Sau đó, bạn phải cung cấp tên của tệp thứ hai mà các thay đổi sẽ được áp dụng như sau:
$ sudo chown –reference=filename1 filename2
Bây giờ, hãy kiểm tra chủ sở hữu và nhóm của tệp thứ hai bằng lệnh danh sách tương tự như dưới đây:
$ ls –l filename2
Từ kết quả đầu ra bên dưới, chúng ta có thể thấy rằng chủ sở hữu đã được đổi thành ‘root’.
Phần kết luận:
Chúng tôi đã thực hiện đệ quy chown bằng cách sử dụng cờ “-R”. Hy vọng! Bạn sẽ không gặp vấn đề gì khi sử dụng hướng dẫn này.
Sẵn sàng để phát triển doanh nghiệp của bạn?
Để được tư vấn chi tiết hơn về dịch vụ, quý khách vui lòng cung cấp thông tin cho chúng tôi theo mẫu sau.
Bài viết liên quan
Câu chuyện đằng sau những logo của thương hiệu thời trang nổi tiếng
Một số những biểu tượng logo đình đám nhất mà bạn sẽ thấy sau đây...
Th12
MIXICup Giải bóng đá ấn tượng được xây dựng bằng thương hiệu cá nhân Độ Mixi tạo nên sự khác biệt
Mixi Cup 2024. Đây là một giải đấu bóng đá đặc biệt, được tổ chức...
Th12
Thực hiện lệnh CHOWN đệ quy trong hệ điều hành Linux?
Tôi đã có một thư mục được gọi là pdfs có chứa một loạt các thư mục...
Th11
Tổng hợp các mẫu logo Yến Sào – Thiết kế logo yến sào chuyên nghiệp mang lại lợi ích gì?
Yến sào là một trong những món ăn ngon bổ dưỡng với tỉ lệ dinh dưỡng...
Th11
Sự quan trọng của lịch TẾT, Tại sao doanh nghiệp cần in lịch tết?
Khoảng thời gian giáp tết, trong tết cũng như sau tết, khi bạn sử dụng...
Th11
Làm nét ảnh Online nhanh chóng bằng các công cụ này
Chúng ta cùng tìm hiểu cách làm nét ảnh online. Bạn có thể thực hiện trên...
Th11