Tại HowtoForge, gần đây chúng tôi đã thảo luận về lệnh chown cho phép người dùng thay đổi chủ sở hữu cũng như nhóm của tệp (hoặc thư mục) trong Linux. Nhưng bạn có biết có một tiện ích dòng lệnh chuyên dụng mà bạn có thể sử dụng khi thay đổi thông tin liên quan đến nhóm không? Công cụ được đề cập đến là chgrp và trong hướng dẫn này, chúng ta sẽ thảo luận về công cụ này bằng các ví dụ dễ hiểu.
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 22.04.
Các ví dụ kiểu Hỏi & Đáp sau đây sẽ giúp lệnh chgrp rõ ràng hơn.
Tùy thuộc vào cấp độ đặc quyền hiện tại của bạn, bạn có thể muốn chạy lệnh trên với 'sudo' (không chắc 'sudo' là gì, hãy đọc phần này).
Ảnh chụp màn hình ở trên xác nhận rằng quyền sở hữu nhóm đã được thay đổi thành 'root' thành công.
Cả 'file1' và 'file1symlink' đều có chủ sở hữu và nhóm được đặt thành 'himanshu'.
Bây giờ, nếu bạn thử thay đổi nhóm của tệp liên kết tượng trưng, bạn sẽ thấy rằng 'file1symlink' sẽ không bị ảnh hưởng, nhưng quyền sở hữu nhóm của 'file1' sẽ thay đổi.
sudo chgrp root file1symlink
Tuy nhiên, nếu muốn, bạn có thể thay đổi hành vi này bằng cách sử dụng tùy chọn dòng lệnh -h.
sudo chgrp -h root file1symlink
Ảnh chụp màn hình sau đây cho thấy lệnh đã đề cập ở trên đã thay đổi nhóm của liên kết tượng trưng lần này:
Ví dụ:
Lệnh đã đề cập ở trên sẽ làm cho quyền sở hữu nhóm của file1 giống với quyền sở hữu của file2.
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 22.04.
Lệnh chgrp của Linux
Như bạn đã hiểu, nếu yêu cầu chỉ là thay đổi nhóm của tệp hoặc thư mục, thì bạn có thể sử dụng chgrp thay vì chown. Công cụ này cung cấp một số tùy chọn dòng lệnh mà bạn có thể sử dụng trong các tình huống khác nhau. Đây là cú pháp chung của chgrp:
Mã:
chgrp [OPTION]... GROUP FILE...
Câu hỏi 1. Cách thay đổi nhóm tệp/thư mục bằng chgrp
Cách sử dụng cơ bản của lệnh chgrp rất dễ. Giả sử bạn muốn thay đổi nhóm của tệp 'file1' có nhóm hiện tại là 'himanshu'. Yêu cầu là phải thay đổi quyền sở hữu nhóm thành 'root'. Đây là lệnh chúng ta cần chạy trong trường hợp này:
Mã:
chgrp root file1
Ảnh chụp màn hình ở trên xác nhận rằng quyền sở hữu nhóm đã được thay đổi thành 'root' thành công.
Câu hỏi 2. Cách chgrp xử lý các liên kết tượng trưng
Theo mặc định, lệnh chgrp ảnh hưởng đến đối tượng tham chiếu của liên kết tượng trưng. Điều này có nghĩa là bất kỳ thay đổi nào được thực hiện thông qua công cụ sẽ không được áp dụng cho liên kết tượng trưng mà thay vào đó là cho tệp mà nó đang tham chiếu tới. Ví dụ, hãy xem xét liên kết tượng trưng 'file1symlink' liên kết đến 'file1'.Cả 'file1' và 'file1symlink' đều có chủ sở hữu và nhóm được đặt thành 'himanshu'.
Bây giờ, nếu bạn thử thay đổi nhóm của tệp liên kết tượng trưng, bạn sẽ thấy rằng 'file1symlink' sẽ không bị ảnh hưởng, nhưng quyền sở hữu nhóm của 'file1' sẽ thay đổi.
sudo chgrp root file1symlink
Tuy nhiên, nếu muốn, bạn có thể thay đổi hành vi này bằng cách sử dụng tùy chọn dòng lệnh -h.
sudo chgrp -h root file1symlink
Ảnh chụp màn hình sau đây cho thấy lệnh đã đề cập ở trên đã thay đổi nhóm của liên kết tượng trưng lần này:
Câu hỏi 3. Làm thế nào để lệnh chgrp chọn thông tin nhóm từ tệp tham chiếu
Nếu muốn, bạn có thể yêu cầu lệnh chgrp chọn thông tin nhóm từ tệp, giúp bạn tiết kiệm công sức chỉ định tên nhóm theo cách thủ công trên dòng lệnh. Có thể truy cập tính năng này thông qua tùy chọn dòng lệnh --reference, yêu cầu bạn chỉ định tên của tệp tham chiếu.
Mã:
chgrp --reference=[ref-file-name] FILENAME
Mã:
chgrp --reference=file2 file1
Câu hỏi 4. Làm thế nào để yêu cầu chgrp thực hiện thay đổi đệ quy
Trong trường hợp - khi xử lý các thư mục và thư mục con - bạn muốn thực hiện các thay đổi đệ quy, bạn có thể thực hiện bằng cách sử dụng tùy chọn dòng lệnh -R.
Mã:
chgrp -R GROUPNAME DIRECTORY-OR-PATH