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ụngfind, 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 đếnfind, 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ớishopt -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

The Basics of the chown Command - Pi My Life Up

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

Change file ownership with CHOWN command in Linux (with examples)

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

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...

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...

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...

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...

Logo mới của chiến dịch tái định vị thương hiệu Jaguar gâu tranh cãi

Logo mới, được đặt tên là Jaguar Exuberant, từ bỏ hoàn toàn thiết kế hình...

Nên đặt in lịch tết vào thời điểm nào là tốt nhất 2024

Đặt in lịch tết vào thời điểm nào tốt nhất? Được rất nhiều doanh nghiệp...