Lệnh chgrp là một công cụ quản lý nhóm giúp bạn dễ dàng quản lý quyền truy cập file và thư mục bằng cách thay đổi nhóm sở hữu. Bài viết này của Vietnix sẽ hướng dẫn bạn sử dụng lệnh chgrp qua các ví dụ thực tế, từ đó giúp bạn kiểm soát chi tiết quyền truy cập, phân quyền hiệu quả và nâng cao tính bảo mật cho hệ thống Linux của mình.
Lệnh chgrp trong Linux là gì?
Lệnh chgrp trong Linux (viết tắt của change group) là lệnh cho phép bạn quản lý quyền truy cập file và thư mục bằng cách thay đổi nhóm sở hữu của cả 2. Việc thay đổi nhóm sở hữu sẽ ảnh hưởng trực tiếp đến quyền hạn của người dùng đối với file/thư mục bị thay đổi.
Cú pháp của lệnh chgrp trong Linux khá đơn giản như sau:
chgrp [OPTION]... [GROUP_NAME] [DIRECTORY/FILE_NAME]...
Lưu ý
- Để sử dụng lệnh chgrp, bạn cần đăng nhập với quyền root hoặc sử dụng lệnh sudo trước mỗi lệnh chgrp.
- Trong cú pháp trên, OPTION, GROUP_NAME và DIRECTORY/FILE_NAME được đặt trong dấu ngoặc vuông [ ], có nghĩa là không bắt buộc và dấu ba chấm … sau dấu ngoặc vuông cho phép sử dụng nhiều tùy chọn và nhiều thư mục/file sau lệnh chgrp.
10 tùy chọn sử dụng lệnh chgrp
Lệnh chgrp trong Linux cung cấp nhiều tùy chọn hữu ích giúp bạn tùy chỉnh hoạt động của lệnh. Dưới đây là một số tùy chọn thường được sử dụng:
Tuỳ chọn | Mô tả |
---|---|
-c , –changes | Hiển thị thông báo chi tiết chỉ khi có thay đổi được thực hiện (tương tự như -v nhưng chỉ báo cáo khi có thay đổi). |
-f , –silent , –quiet | Ẩn thông báo lỗi. |
-v , –verbose | Hiển thị thông báo chi tiết cho mỗi file/thư mục được xử lý. |
–dereference | Thay đổi nhóm sở hữu của file/thư mục mà liên kết tượng trưng (symbolic link) trỏ đến (hành vi mặc định), thay vì thay đổi nhóm sở hữu của chính liên kết tượng trưng đó. |
–no-preserve-root | Không xử lý đặc biệt cho thư mục gốc / (hành vi mặc định). |
–preserve-root | Không thực hiện đệ quy trên thư mục gốc /. |
–reference=RFILE | Sử dụng nhóm sở hữu của RFILE thay vì chỉ định trực tiếp GROUP. |
-R , –recursive | Thực hiện thay đổi nhóm sở hữu cho tất cả các file/thư mục con (đệ quy). |
–version | Hiển thị phiên bản của chương trình chgrp. |
–help | Hiển thị thông tin trợ giúp về lệnh chgrp. |
Lưu ý
- Lệnh và các tùy chọn trong Linux phân biệt chữ hoa chữ thường, nên hãy nhập chính xác.
- Để xem danh sách đầy đủ các tùy chọn và chi tiết về cách sử dụng, bạn có thể tham khảo trang trợ giúp (man page) của lệnh chgrp bằng lệnh man: man chgrp
7 ví dụ thực tế về lệnh chgrp trong Linux
- Thay đổi nhóm sở hữu của một thư mục hoặc file
- Thay đổi nhóm sở hữu đệ quy bằng lệnh chgrp
- Thay đổi nhóm sở hữu theo file/thư mục tham chiếu
- Hiển thị chi tiết quá trình thực thi của lệnh chgrp trong Linux
- Ẩn thông báo lỗi của lệnh chgrp
- Chỉ hiển thị thông báo khi có thay đổi
- Thay đổi nhóm sở hữu của file liên kết tượng trưng
Ví dụ 1: Thay đổi nhóm sở hữu của một thư mục hoặc file
Để thay đổi nhóm sở hữu của thư mục “mydir” thành “mygrp”, bạn có thể làm theo các bước sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Bạn chạy lệnh ls để xem thông tin chi tiết về thư mục “mydir”, bao gồm cả nhóm sở hữu hiện tại:
ls -l | grep mydir
Bước 3: Bạn tiếp tục chạy lệnh sudo theo cú pháp sau và nhấn Enter để thay đổi nhóm sở hữu của thư mục “mydir” thành “mygrp“:
sudo chgrp mygrp mydir
Bước 4: Nhập mật khẩu tài khoản người dùng của bạn khi được yêu cầu để cấp quyền sudo và nhấn Enter.
Bước 5: Chạy lại lệnh ls -l | grep mydir
để kiểm tra xem nhóm sở hữu của thư mục “mydir” đã được thay đổi thành “mygrp” hay chưa.
Kết quả: Sau khi thực hiện các bước trên, bạn sẽ thấy nhóm sở hữu của thư mục “mydir” đã được thay đổi từ “amdadul” thành “mygrp”.
Lưu ý
Bạn có thể thay đổi nhóm sở hữu của file theo cách tương tự như với thư mục.
Ví dụ 2: Thay đổi nhóm sở hữu đệ quy bằng lệnh chgrp
Trong ví dụ này, để thay đổi nhóm sở hữu của thư mục “mydir1” và tất cả nội dung bên trong thành “mygrp”, bạn có thể sử dụng lệnh chgrp với tùy chọn -R
hoặc --recursive
. Hãy àm theo các bước sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Bạn chạy lệnh tree theo cú pháp và nhấn Enter để xem nhóm sở hữu hiện tại của thư mục “mydir1” và nội dung:
tree -g mydir1
Bước 3: Tiếp theo, bạn chạy lệnh sau và nhấn Enter để thay đổi nhóm sở hữu của “mydir1” và tất cả nội dung bên trong thành “mygrp”:
sudo chgrp -R mygrp mydir1
Bước 4: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Bước 5: Bạn chạy lại lệnh tree -g mydir1 để kiểm tra xem nhóm sở hữu đã được thay đổi chưa.
Kết quả: Sau khi thực hiện các bước trên, nhóm sở hữu của thư mục “mydir1” và tất cả nội dung bên trong sẽ được thay đổi thành “mygrp”.
Ví dụ 3: Thay đổi nhóm sở hữu theo file/thư mục tham chiếu
Bạn có thể sử dụng lệnh chgrp kết hợp với tùy chọn -R
(đệ quy) và --reference
để thay đổi nhóm sở hữu của một thư mục và tất cả nội dung bên trong dựa theo nhóm sở hữu của một file/thư mục khác.
Ví dụ, để thay đổi nhóm sở hữu của thư mục “mydir2” giống với nhóm sở hữu của thư mục “mydir1”, bạn có thể làm theo các bước sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Bạn chạy lệnh sau để xem nhóm sở hữu hiện tại của cả hai thư mục “mydir1” và “mydir2”:
tree -g mydir1 mydir2
Bước 3: Bạn chạy lệnh sau để thay đổi nhóm sở hữu của “mydir2” giống với “mydir1”:
sudo chgrp -R --reference=mydir1 mydir2
Bước 4: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Bước 5: Chạy lại lệnh tree -g mydir1 mydir2
để kiểm tra xem nhóm sở hữu của “mydir2” và nội dung bên trong đã được thay đổi giống với “mydir1” hay chưa.
Kết quả: Sau khi thực hiện các bước trên, nhóm sở hữu của thư mục “mydir2” và tất cả nội dung bên trong sẽ được thay đổi giống với nhóm sở hữu của thư mục “mydir1”.
Ví dụ 4: Hiển thị chi tiết quá trình thực thi của lệnh chgrp trong Linux
Để hiển thị chi tiết quá trình thực thi của lệnh chgrp, bạn có thể sử dụng tùy chọn -v
(viết tắt của “verbose”). Tùy chọn này sẽ hiển thị danh sách các file và thư mục đang được xử lý trong quá trình thực thi lệnh.
Ví dụ, để thay đổi nhóm sở hữu của thư mục “mydir3” thành “mygrp” và hiển thị chi tiết quá trình thực thi, bạn có thể làm theo các bước sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Chạy lệnh sau để kiểm tra thông tin của thư mục “mydir3”:
ls -l |grep mydir3
Bước 3: Chạy lệnh sau để thay đổi nhóm sở hữu và hiển thị chi tiết quá trình thực thi:
sudo chgrp -v mygrp mydir3
Bước 4: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Bước 5: Chạy lại lệnh ls -l | grep mydir3 để kiểm tra xem nhóm sở hữu đã được thay đổi hay chưa.
Kết quả: Bạn sẽ thấy thông tin chi tiết về quá trình thực thi lệnh chgrp, bao gồm danh sách các file và thư mục được xử lý, kết quả cuối cùng là nhóm sở hữu của “mydir3” đã được thay đổi thành “mygrp”.
Ví dụ 5: Ẩn thông báo lỗi của lệnh chgrp
Khi sử dụng lệnh chgrp trên Linux, bạn có thể gặp lỗi. Để ẩn đi những lỗi này, bạn có thể sử dụng tùy chọn -f
. Tùy chọn này sẽ giúp ngăn chặn các thông báo lỗi xuất hiện.
Trong ví dụ này, Chúng ta sẽ cố gắng thay đổi quyền sở hữu nhóm của thư mục “mydir5” – Một thư mục không tồn tại trên hệ thống, chúng ta sẽ sử dụng tùy chọn -f
để ẩn đi thông báo lỗi. Các bước thực hiện như sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Chạy lệnh sau:
sudo chgrp mygrp mydir5
Lệnh này sẽ báo lỗi vì “mydir5” không tồn tại.
Bước 3: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Bước 4: Chạy lệnh sau để ẩn thông báo lỗi:
sudo chgrp -f mygrp mydir5
Kết quả: Trong hình bên dưới, bạn có thể thấy rằng thông báo lỗi đã được ẩn.
Ví dụ 6: Chỉ hiển thị thông báo khi có thay đổi
Để hiển thị thông tin về việc thực thi lệnh chỉ khi có thay đổi xảy ra, bạn có thể sử dụng tùy chọn -c
hoặc --changes
.
Trong ví dụ này, chúng ta sẽ thử thay đổi quyền sở hữu nhóm của thư mục “mydir4” thành nhóm “mygrp” và chỉ hiển thị thông báo khi có thay đổi. Các bước thực hiện như sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Chạy lệnh sau:
sudo chgrp -c -R mygrp mydir4
Bước 3: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Kết quả: Trong hình bên dưới, bạn có thể thấy mọi thay đổi do thực thi lệnh chgrp được hiển thị.
Ví dụ 7: Thay đổi nhóm sở hữu của file liên kết tượng trưng
Lệnh chgrp trong Linux cho phép bạn thay đổi nhóm sở hữu của file được liên kết bởi một liên kết tượng trưng (file gốc) mà không thay đổi nhóm sở hữu của chính liên kết tượng trưng.
Liên kết tượng trưng, còn được gọi là symlink hoặc soft link, là một loại file đặc biệt trong hệ thống file Linux trỏ đến một file hoặc thư mục khác. Nói cách khác, liên kết tượng trưng hoạt động như một lối tắt đến file hoặc thư mục gốc.
Để tạo liên kết tượng trưng, bạn có thể sử dụng lệnh ln với cú pháp sau:
ln -s File_name Symbolic_Link_name
Ví dụ, để tạo liên kết tượng trưng “symbolic_link” trỏ đến file “file1”, bạn có thể chạy lệnh:
ln -s file1 symbolic_link
Để thay đổi nhóm sở hữu của file gốc (trong ví dụ này là file1) mà không ảnh hưởng đến liên kết tượng trưng, bạn có thể sử dụng tùy chọn --dereference
với lệnh chgrp. Các bước thực hiện như sau:
Bước 1: Mở ứng dụng Terminal trên Ubuntu.
Bước 2: Bạn chạy lệnh sau:
sudo chgrp --dereference mygrp symbolic_link
Bước 3: Nhập mật khẩu của bạn khi được yêu cầu và nhấn Enter.
Bước 4: Chạy lệnh sau để kiểm tra nhóm sở hữu của file gốc (file1):
ls -l | grep file1
Kết quả: Bạn sẽ thấy rằng nhóm sở hữu của file gốc (file1) đã được thay đổi thành “mygrp”, trong khi nhóm sở hữu của liên kết tượng trưng (symbolic_link) vẫn giữ nguyên.
Câu hỏi thường gặp
Có thể sử dụng lệnh chgrp
để thay đổi nhóm sở hữu của một tệp hoặc thư mục thành nhóm của người dùng hiện tại không?
Có thể. Bạn có thể sử dụng lệnh để thực hiện thay đổi theo cú pháp: chgrp $(id -gn) file.txt
Có thể sử dụng lệnh chgrp
để thay đổi nhóm sở hữu của nhiều tệp hoặc thư mục cùng một lúc không?
Có Để thay đổi nhóm sở hữu, bạn chỉ cần liệt kê các tệp/thư mục đó sau tên nhóm.
Lời kết
Bài viết trên của Vietnix đã giới thiệu về lệnh chgrp trong Linux và các ứng dụng thực tế trong việc quản lý quyền truy cập và nhóm sở hữu của các file/thư mục. Với kiến thức này, bạn có thể sử dụng lệnh chgrp một cách hiệu quả để bảo mật và quản lý hệ thống của mình.