Trong Linux, mọi thứ đều là một tệp tin, điều đó có nghĩa là tất cả các tài nguyên đầu vào/ra, chẳng hạn như tập tin, thư mục, ổ đĩa, máy in, vv., đều được tiếp xúc dưới dạng tệp tin thông qua không gian tên hệ thống tệp. Ngoài ra, mỗi tệp tin trong Linux đều có sở hữu gắn liền với nó.
Sở hữu được biểu thị bởi hai thực thể - người dùng và nhóm. Sự kết hợp giữa quyền truy cập và sở hữu cho phép Linux triển khai cơ chế kiểm soát truy cập một cách hiệu quả.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về lệnh chown. Như tên gọi, lệnh chown được sử dụng để thay đổi sở hữu của các tệp tin. Sau khi tham khảo hướng dẫn này, người mới sẽ có thể sử dụng lệnh chown một cách hiệu quả khi làm việc với hệ thống Linux.
Cú pháp chown command:
Cú pháp của lệnh chown như sau:
$ chown [OPTION]... [OWNER][:[GROUP]] [FILE-1] [FILE-2]...[FILE-N]
Bây giờ chúng ta hãy hiểu cách sử dụng lệnh chown với một số ví dụ thực tế trên Linux.
1. Cách tìm quyền sở hữu tệp
Cách đơn giản nhất để tìm chủ sở hữu của tệp tin là sử dụng lệnh ls, lệnh này sẽ liệt kê người dùng và nhóm của tệp tin.
$ touch file-1.txt
$ ls -l file-1.txt
Kiểm tra Sở hữu tệp tin trong Linux
Trong đầu ra trên, chúng ta có thể thấy rằng tệp tin được sở hữu bởi người dùng tecmint và nhóm tecmint. Thông tin này được biểu thị bởi cột thứ ba và thứ tư tương ứng.
2. Cách thay đổi quyền sở hữu tệp
Lệnh chown cho phép chúng ta thay đổi sở hữu của tệp tin. Hãy xem cách sử dụng của nó bằng cách đặt người dùng narendra làm chủ sở hữu của tệp tin:
$ sudo chown narendra file-1.txt
Bây giờ, hãy xác minh rằng sở hữu của tệp tin đã được thay đổi:
$ ls -l file-1.txt
Thay đổi Sở hữu tệp tin trong Linux
3. Cách thay đổi quyền sở hữu tệp của nhóm bằng chown command
Tương tự như người dùng, chúng ta cũng có thể thay đổi sở hữu của nhóm của tệp tin bằng cách sử dụng lệnh chown. Vì vậy, hãy đặt sở hữu nhóm của tệp tin là nhóm – narendra:
$ sudo chown :narendra file-1.txt
Chú ý rằng, chúng ta phải sử dụng dấu hai chấm (:) với tên nhóm khi thay đổi sở hữu nhóm.
Bây giờ, chúng ta hãy xác minh sở hữu nhóm của tệp tin:
$ ls -l file-1.txt
Thay đổi Sở hữu Nhóm tệp tin trong Linux
4. Cách thay đổi quyền sở hữu và nhóm tệp
Trong các ví dụ trước, chúng ta đã sử dụng lệnh chown hai lần. Đầu tiên, để thay đổi sở hữu người dùng và sau đó là sở hữu nhóm. Tuy nhiên, chúng ta cũng có thể thay đổi cả người dùng và nhóm bằng một lệnh duy nhất.
Hãy đặt lại sở hữu tệp tin cho người dùng và nhóm tecmint, bằng cách sử dụng lệnh sau:
$ sudo chown tecmint:tecmint file-1.txt
Trong ví dụ này, chúng ta đã sử dụng ký tự hai chấm (:) để phân tách người dùng và nhóm. Giá trị trước hai chấm đại diện cho người dùng, trong khi giá trị sau hai chấm đại diện cho nhóm.
Bây giờ, hãy kiểm tra sở hữu tệp tin đã được cập nhật:
$ ls -l file-1.txt
Thay đổi Sở hữu tệp tin và Nhóm
5. Cách thay đổi quyền sở hữu liên kết tượng trưng
Theo mặc định, lệnh chown giải tham chiếu của liên kết tượng trưng, có nghĩa là nếu tệp đầu vào là một liên kết tượng trưng thì nó sẽ thay đổi sở hữu của tệp được tham chiếu thay vì liên kết tượng trưng chính nó.
Tuy nhiên, chúng ta có thể ghi đè lên hành vi mặc định bằng cách sử dụng tùy chọn -h như được hiển thị trong ví dụ sau đây.
Trước tiên, tạo một liên kết tượng trưng và xác minh rằng nó đang trỏ đến tệp tin tham chiếu chính xác:
$ ln -s file-1.txt symlink
$ ls -l symlink
Tiếp theo, thay đổi sở hữu của liên kết tượng trưng bằng cách sử dụng tùy chọn -h:
$ sudo chown -h narendra:narendra symlink
Cuối cùng, xác minh sở hữu của liên kết tượng trưng và tệp tin tham chiếu của nó:
$ ls -l symlink file-1.txt
Thay đổi Sở hữu của Liên kết tượng trưng
6. Cách chuyển quyền sở hữu tệp cho người dùng
Đôi khi, chúng ta cần cập nhật sở hữu của tệp tin chỉ sau khi xác minh sở hữu hiện tại của nó. Trong các trường hợp như vậy, chúng ta có thể sử dụng tùy chọn --from của lệnh chown như đã hiển thị.
$ sudo chown -h --from narendra:narendra tecmint:tecmint symlink
Trong ví dụ này, tùy chọn --from đại diện cho chủ sở hữu hiện tại của tệp tin trong khi đối số tiếp theo đại diện cho sở hữu mới. Vì vậy, lệnh trên cập nhật sở hữu của tệp tin - liên kết tượng trưng, chỉ khi tệp tin thuộc sở hữu của người dùng và nhóm – narendra.
Bây giờ, hãy kiểm tra sở hữu cập nhật của tệp tin:
$ ls -l symlink
Chuyển sở hữu Tệp tin cho Người dùng trong Linux
7. Cách sao chép quyền sở hữu từ tệp khác
Đôi khi, việc sao chép sở hữu từ tệp tin hiện có thay vì cung cấp sở hữu cùng từ dòng lệnh là tiện lợi hơn. Trong các tình huống như vậy, chúng ta có thể sử dụng tùy chọn --reference cùng với lệnh chown, tùy chọn này đại diện cho tệp tin từ đó sở hữu sẽ được sao chép.
Đầu tiên, tạo một tệp tin mới và thay đổi sở hữu của nó:
$ touch file-2.txt
$ sudo chown narendra:narendra file-2.txt
Tiếp theo, hãy kiểm tra sở hữu hiện tại của cả hai tệp tin:
$ ls -l file-1.txt file-2.txt
Sau đó, đặt sở hữu của tệp tin file-2.txt giống như tệp tin file-1.txt bằng cách sử dụng lệnh sau:
$ sudo chown --reference=file-1.txt file-2.txt
Sau cùng, hãy xác minh rằng sở hữu đã được cập nhật thành công:
$ ls -l file-1.txt file-2.txt
Sao chép Sở hữu từ Tệp tin khác trong Linux
8. Cách thay đổi quyền sở hữu thư mục theo cách đệ quy
Chúng ta có thể sử dụng lệnh chown để thay đổi sở hữu của thư mục cũng. Tuy nhiên, hành vi mặc định của lệnh này là không đệ quy.
Điều đó có nghĩa là lệnh chown sẽ thay đổi sở hữu của thư mục đầu vào duy nhất. Tuy nhiên, chúng ta có thể ghi đè lên hành vi mặc định này bằng cách sử dụng tùy chọn -R như được hiển thị trong ví dụ sau.
Trước tiên, tạo một thư mục và hai tệp tin trong thư mục đó:
$ mkdir dir-1
$ touch dir-1/demo-1.txt dir-1/demo-2.txt
Tiếp theo, kiểm tra sở hữu của thư mục và tệp tin bên trong:
$ ls -ld dir-1
$ ls -l dir-1
Sau đó, thay đổi sở hữu của thư mục và tệp tin đó một cách đệ quy:
$ sudo chown -R narendra:narendra dir-1
Cuối cùng, hãy xác minh sở hữu của thư mục và tệp tin:
$ ls -ld dir-1
$ ls -l dir-1
Thay đổi Sở hữu thư mục Đệ quy trong Linux
9. Cách in chi tiết quy trình lệnh Chown
Theo mặc định, lệnh chown không in bất kỳ thông tin nào trên terminal sau khi thay đổi sở hữu. Vì vậy, cho đến nay chúng ta đã sử dụng tùy chọn -l của lệnh ls để xác minh sở hữu đã được cập nhật.
Để khắc phục hạn chế này, chúng ta có thể bật chế độ verbose của lệnh, hiển thị thông tin chẩn đoán cho mỗi tệp tin đã xử lý. Tùy chọn này cung cấp thông tin có ý nghĩa khi chúng ta sử dụng nó với tùy chọn -R:
Vì vậy, hãy sử dụng tùy chọn -v của lệnh để bật chế độ verbose:
$ sudo chown -Rv tecmint:tecmint dir-1
Bây giờ, hãy kiểm tra đầu ra của lệnh:
Bật chế độ verbose của Chown trong Linux
10. Cách khắc phục lỗi lệnh Chown
Tương tự như các lệnh Linux khác, chown cũng cung cấp thông tin có ý nghĩa trong trường hợp xảy ra lỗi. Lỗi có thể xảy ra do nhiều lý do khác nhau, chẳng hạn như các tệp tin, nhóm hoặc người dùng không tồn tại, không đủ quyền thực hiện một số thao tác, v.v.
Tuy nhiên, đôi khi chúng ta không muốn hiển thị các thông báo lỗi này. Trong các trường hợp như vậy, chúng ta có thể sử dụng tùy chọn -f của lệnh để ẩn các thông báo lỗi.
Để hiểu rõ hơn về điều này, hãy thử thay đổi sở hữu của tệp tin không tồn tại:
$ sudo chown -f narendra:narendra non-existing-file.txt
$ echo $?
1
Bây giờ, hãy xem đầu ra của lệnh:
Ẩn các thông báo lỗi của lệnh Chown trong Linux
11. Cách thay đổi ID người dùng và nhóm tệp
Cho đến nay, chúng ta đã sử dụng tên người dùng và nhóm để thay đổi sở hữu của tệp tin. Tuy nhiên, chúng ta cũng có thể sử dụng ID người dùng và nhóm để đạt được cùng kết quả.
Trước tiên, sử dụng lệnh id để tìm ID người dùng và nhóm của người dùng – narendra:
$ id narendra
Bây giờ, hãy sử dụng ID người dùng và nhóm 1001 cùng với lệnh chown:
$ ls -l file-1.txt
$ sudo chown 1001:1001 file-1.txt
Cuối cùng, hãy xác minh rằng sở hữu đã được cập nhật thành công:
$ ls -l file-1.txt
Thay đổi Sở hữu tệp tin UID và GID trong Linux
Trong bài viết này, chúng ta đã thảo luận về một số ví dụ thực tế của chown command. Mọi người có thể sử dụng những ví dụ này trong cuộc sống hàng ngày để nâng cao năng suất làm việc với các hệ thống Linux.