Các chgrp
lệnh trên Linux thay đổi quyền sở hữu nhóm của một tệp hoặc thư mục. Tại sao lại sử dụng nó thay vì chown
? Đôi khi một con dao của Quân đội Thụy Sĩ là tuyệt vời, nhưng khi bạn thực sự cần một con dao mổ, chỉ có một con dao mổ sẽ làm được.
Khi nào bạn nên sử dụng chgrp
Bạn sử dụng chgrp
lệnh để thay đổi quyền sở hữu nhóm của một tệp hoặc thư mục. Các chown
lệnh cho phép bạn thay đổi chủ sở hữu người dùng và chủ sở hữu nhóm của một tệp hoặc thư mục. Vậy tại sao bạn cần hoặc sử dụng chgrp
?
Chà, đối với một điều, nó dễ dàng. Sử dụng chown
để chỉ thay đổi cài đặt chủ sở hữu nhóm hơi phản trực giác. Bạn phải rất cẩn thận với cú pháp. Nó phụ thuộc vào vị trí chính xác của dấu hai chấm “:”. Đặt sai vị trí đó, và bạn sẽ không thực hiện thay đổi như bạn nghĩ.
Cú pháp của chgrp
hoàn toàn đơn giản hơn. Nó cũng có một tính năng gọn gàng cho bạn biết một cách đơn giản những thay đổi mà nó vừa thực hiện.
Nó là một công cụ được xây dựng có mục đích và chuyên dụng cho nhiệm vụ trong tầm tay. chgrp
hoàn toàn tuân theo nguyên tắc thiết kế Unix là làm một việc và làm tốt điều đó. Hãy xem những gì nó đã cung cấp.
Thay đổi quyền sở hữu nhóm đối với tệp
Để thay đổi quyền sở hữu nhóm của một tệp rất đơn giản. Bạn phải dùng sudo
với chgrp
. Các nhóm không thuộc sở hữu của người dùng, vì vậy việc một tệp hoặc thư mục có được chuyển từ nhóm này sang nhóm khác hay không không phải là quyết định của người dùng bình thường. Đó là một công việc dành cho người có đặc quyền root.
Chúng tôi sẽ thay đổi quyền sở hữu nhóm của tệp nguồn C có tên là “gc.c.” Chúng tôi sẽ thay đổi nó thành nhóm “devteam”.
Chúng tôi có thể kiểm tra các giá trị quyền sở hữu hiện tại bằng cách sử dụng ls
với -l
(danh sách dài) tùy chọn.
ls -l
Đây là lệnh thay đổi quyền sở hữu nhóm. Kiểu sudo
, một không gian, chgrp
, khoảng trắng, tên của nhóm mà chúng ta sẽ đặt làm chủ sở hữu nhóm, khoảng trắng và tên của tệp.
sudo chgrp devteam gc.c
Chúng tôi sẽ kiểm tra xem thay đổi đã được thực hiện bằng cách sử dụng ls -l
lần nữa.
ls -l
Chúng ta có thể thấy rằng quyền sở hữu nhóm đã được thay đổi từ “dave” thành “devteam.”
Để thay đổi quyền sở hữu nhóm cho một tập hợp các tệp cùng một lúc, bạn có thể sử dụng các ký tự đại diện. Hãy thay đổi quyền sở hữu nhóm cho tất cả các tệp nguồn C trong thư mục hiện tại. Chúng tôi sẽ sử dụng lệnh này:
sudo chgrp devteam *.c
Chúng tôi có thể kiểm tra thay đổi đã được thực hiện như chúng tôi mong đợi bằng cách sử dụng ls -l
.
ls -l
Tất cả các tệp nguồn C trong thư mục này đã được thay đổi để quyền sở hữu nhóm của chúng là “devteam.”
Bằng cách sử dụng -c
(thay đổi) tùy chọn chgrp
sẽ liệt kê những thay đổi mà nó đã thực hiện đối với từng tệp. Giả sử chúng tôi đã mắc lỗi, chúng tôi muốn các tệp nguồn C được đặt quyền sở hữu nhóm của chúng thành “researchlab”. Hãy sửa điều đó ngay bây giờ. Chúng tôi sẽ sử dụng lệnh này:
sudo chgrp -c researchlab *.c
Các thay đổi được thực hiện cho chúng tôi và từng thay đổi được liệt kê khi nó xảy ra, cho phép chúng tôi xác minh rằng những gì chúng tôi đã thay đổi là chính xác.
Thay đổi quyền sở hữu nhóm của một thư mục
Thay đổi quyền sở hữu nhóm của một thư mục cũng đơn giản như vậy. Chúng ta có thể sử dụng lệnh này để thay đổi quyền sở hữu nhóm cho thư mục “sao lưu”.
sudo chgrp -c devteam ./backup
Để rõ ràng, lệnh này sẽ thay đổi quyền sở hữu nhóm của chính thư mục, không phải các tệp bên trong thư mục. Chúng tôi sẽ sử dụng ls -l
với -d
(thư mục) tùy chọn để xác minh rằng đây là trường hợp.
ls -l -d
Bản thân quyền sở hữu nhóm của thư mục đã được đổi thành “devteam.”
Tùy chọn đệ quy
Nếu chúng tôi muốn thay đổi quyền sở hữu nhóm đối với các tệp và thư mục được lưu trữ trong một thư mục, chúng tôi có thể sử dụng -R
(đệ quy) tùy chọn. Điều này sẽ gây ra chgrp
để thay đổi quyền sở hữu nhóm cho tất cả các tệp và thư mục con bên dưới thư mục đích.
Hãy thử điều này với thư mục “sao lưu”. Đây là lệnh:
sudo chgrp -R devteam ./backup
Chúng tôi sẽ xem xét các tập tin trong một trong các thư mục con lồng nhau với ls
và chúng tôi cũng sẽ kiểm tra cài đặt của một trong các thư mục con bằng cách sử dụng ls
.
ls -l ./backup/images
ls -l -d ./backup/images
Chúng ta có thể thấy rằng quyền sở hữu nhóm đã được thay đổi cho cả các tệp trong thư mục con lồng nhau và cho các thư mục con lồng nhau.
Sử dụng Tệp Tham chiếu
Cho đến nay, chúng tôi đã nói rõ ràng chgrp
tên của nhóm mà chúng tôi muốn sử dụng. Chúng tôi cũng có thể sử dụng chgrp
theo cách nói “đặt quyền sở hữu nhóm của điều này nộp cho cùng một quyền sở hữu nhóm với cái đó tập tin.”
Hãy đặt quyền sở hữu nhóm của “gc.h” giống như “gc.c.”
Chúng tôi có thể kiểm tra cài đặt hiện tại của “gc.c” và “gc.h” bằng cách sử dụng ls
.
ls -l gc.c
ls -l gc.h
Tùy chọn chúng tôi cần sử dụng là --reference
Lựa chọn. Quyền sở hữu nhóm được sao chép từ tập tin tham khảo đến tệp khác. Hãy cẩn thận để có được các tệp theo đúng cách.
sudo chgrp --reference=gc.c gc.h
Chúng tôi sẽ sử dụng ls
để kiểm tra cài đặt đã được chuyển sang “gc.h.”
ls -l gc.h
Tệp “gc.h” hiện có cùng quyền sở hữu nhóm với “gc.c.”
Sử dụng chgrp với các liên kết tượng trưng
Chúng ta có thể sử dụng chgrp
để thay đổi quyền sở hữu nhóm của các liên kết tượng trưng hoặc của tệp được trỏ đến bởi liên kết tượng trưng.
Đối với ví dụ này, chúng tôi đã tạo một liên kết tượng trưng được gọi là “button_link”. Điều này trỏ đến một tệp có tên “./backup/images/button_about.png.” Để thay đổi quyền sở hữu nhóm của tệp, chúng tôi phải sử dụng --dereference
Lựa chọn. Thao tác này sẽ thay đổi cài đặt cho tệp và giữ nguyên liên kết tượng trưng.
Hãy kiểm tra cài đặt cho liên kết tượng trưng bằng cách sử dụng ls -l
.
ls -l button_link
Lệnh để thay đổi tệp là:
sudo chgrp --dereference devteam button_link
Chúng tôi sẽ kiểm tra xem liên kết tượng trưng không thay đổi bằng cách sử dụng ls và chúng tôi cũng sẽ kiểm tra cài đặt quyền sở hữu nhóm cho tệp.
ls -l button_link
ls -l ./backup/images/button_about.png
Liên kết tượng trưng không thay đổi và tệp “button_about.png” đã được sửa đổi quyền sở hữu nhóm.
Để thay đổi quyền sở hữu nhóm của chính liên kết tượng trưng, chúng ta phải sử dụng --no-dereference
Lựa chọn.
Lệnh sử dụng là:
sudo chgrp --no-dereference devteam button_link
Chúng tôi sẽ sử dụng ls -l
để xác minh rằng quyền sở hữu nhóm mới đã được đặt cho liên kết tượng trưng.
ls -l button-link
Lần này, mục bị ảnh hưởng là liên kết tượng trưng, không phải tệp mà nó trỏ tới.
Đẹp và đơn giản
Đơn giản là tốt. Nó có nghĩa là ít phải nhớ và ít bị nhầm lẫn hơn. Điều đó có nghĩa là ít sai lầm hơn.