Logo Logo
Kiến thức máy chủ 20-07-2017

Giới thiệu Chmod và Sticky Bits trên Máy Chủ Ảo Linux

Giới thiệu Chmod, SUID, SGID và Sticky Bit trên máy chủ ảo Linux

Trong quá trình quản trị máy chủ ảo Linux, việc hiểu rõ cơ chế phân quyền là một kỹ năng cơ bản nhưng cực kỳ quan trọng. Nếu cấu hình permission không đúng, hệ thống có thể gặp rủi ro về bảo mật, sai quyền truy cập hoặc phát sinh lỗi khi chạy ứng dụng và dịch vụ.

Trong bài viết này, VDO sẽ giới thiệu tổng quan về Chmod, SUID, SGID và Sticky Bit trên máy chủ ảo Linux, đồng thời giải thích mục đích sử dụng của từng loại permission mở rộng để bạn có thể áp dụng hiệu quả trong thực tế quản trị hệ thống.

Chmod trên Linux là gì?

Chmod là lệnh dùng để thay đổi quyền truy cập của file và thư mục trên Linux. Thông qua chmod, quản trị viên có thể cấp hoặc thu hồi quyền đọc, ghi và thực thi cho từng đối tượng người dùng khác nhau như:

  • Owner: chủ sở hữu file hoặc thư mục

  • Group: nhóm sở hữu

  • Others: những người dùng còn lại

Ngoài các quyền cơ bản như read, writeexecute, Linux còn hỗ trợ các quyền mở rộng như SUID, SGIDSticky Bit để phục vụ các nhu cầu đặc biệt về bảo mật và chia sẻ dữ liệu.

Chmod và Sticky Bits trên Máy Chủ Ảo Linux

Sticky Bit là gì?

Sticky Bit thường được sử dụng cho các thư mục chia sẻ trên Linux. Mục đích chính là ngăn chặn việc người dùng này xóa hoặc đổi tên file của người dùng khác trong cùng một thư mục dùng chung.

Khi một thư mục được gán Sticky Bit, chỉ có các đối tượng sau mới được quyền xóa hoặc đổi tên file trong đó:

  • chủ sở hữu của file

  • chủ sở hữu của thư mục

  • người dùng root

Sticky Bit thường được hiển thị bằng ký tự t ở cuối chuỗi permission.

Ví dụ về Sticky Bit

Giả sử bạn có một thư mục dùng chung tên là public.

Cách 1: Thiết lập bằng hai lệnh riêng

chmod 777 public
chmod +t public
ls -l

Kết quả hiển thị có thể như sau:

drwxrwxrwt 2 tclark authors 4096 May 15 10:45 public

Cách 2: Thiết lập bằng giá trị số

chmod 1777 public
ls -l

Kết quả:

drwxrwxrwt 2 tclark authors 4096 May 15 10:45 public

Trong đó, số 1 ở đầu đại diện cho Sticky Bit, còn 777 là quyền đọc, ghi và thực thi cho owner, group và others.

Khi nào nên dùng Sticky Bit?

Sticky Bit rất phù hợp với các thư mục chia sẻ công cộng, ví dụ:

  • thư mục dùng chung cho nhiều user

  • thư mục upload tạm

  • thư mục chứa file log hoặc file trao đổi nội bộ

Đây là một cơ chế quan trọng giúp tăng tính an toàn khi nhiều người cùng thao tác trên một thư mục.


SUID là gì?

SUID là viết tắt của Set User ID. Đây là quyền đặc biệt áp dụng cho file thực thi trên Linux.

Khi một file thực thi được gán SUID, file đó sẽ chạy với quyền của owner của file, thay vì quyền của người dùng đang đăng nhập và thực thi nó.

Điều này rất hữu ích trong những trường hợp mà một chương trình cần quyền cao hơn để thực hiện một tác vụ cụ thể.

Ví dụ về SUID với lệnh passwd

Lệnh passwd là một ví dụ điển hình. Người dùng thông thường có thể đổi mật khẩu của chính mình, nhưng việc thay đổi mật khẩu thực chất cần quyền ghi vào các file hệ thống mà chỉ root mới có quyền thao tác.

Kiểm tra vị trí của lệnh:

which passwd

Kết quả:

/usr/bin/passwd

Xem quyền của file:

ls -l /usr/bin/passwd

Ví dụ kết quả:

-r-s--x--x 1 root root 17700 Jun 25 2004 /usr/bin/passwd

Ký tự s xuất hiện ở phần quyền thực thi của owner cho thấy file này đã được gán SUID. Nhờ đó, khi người dùng chạy lệnh passwd, chương trình sẽ thực thi với quyền của root, dù người dùng không phải root.

Ý nghĩa của SUID

SUID cho phép:

  • thực thi chương trình với quyền của owner

  • hỗ trợ các ứng dụng hệ thống cần quyền đặc biệt

  • xử lý một số tác vụ yêu cầu truy cập tài nguyên bảo mật

Tuy nhiên, nếu dùng sai cách, SUID có thể tạo ra lỗ hổng bảo mật nghiêm trọng. Vì vậy, quản trị viên cần kiểm soát rất chặt các file được gán quyền này.


SGID là gì?

SGID là viết tắt của Set Group ID. Tương tự SUID, SGID cũng là một quyền đặc biệt nhưng hoạt động theo group thay vì owner.

Khi một file thực thi có SGID, nó sẽ chạy với quyền của group sở hữu file, thay vì group của người dùng đang thực thi.

Đối với thư mục, SGID có một tác dụng rất hữu ích: các file hoặc thư mục mới được tạo bên trong sẽ tự động thừa hưởng group của thư mục cha, thay vì group mặc định của user tạo file.

Lợi ích của SGID trên thư mục

SGID đặc biệt phù hợp trong các thư mục làm việc nhóm, vì nó giúp:

  • đồng bộ group cho toàn bộ file mới tạo

  • tránh tình trạng file bị lệch group

  • thuận tiện hơn trong chia sẻ dữ liệu nội bộ


Kết hợp SUID và SGID trên thư mục

Giả sử bạn muốn tạo một thư mục để người khác có thể chép file vào, nhưng các file khi được tạo trong thư mục đó sẽ tự động mang owner và group theo thư mục đích.

Ví dụ:

mkdir drop_box
chmod 777 drop_box
chmod u+s,g+s drop_box
ls -l

Kết quả có thể hiển thị như sau:

drwsrwsrwx 2 tclark authors 4096 Sep 14 10:55 drop_box

Điều này có nghĩa là người dùng khác có thể chép file vào drop_box, và các file mới tạo sẽ được gắn theo owner hoặc group được thiết lập thông qua thư mục.

Bạn cũng có thể gán cùng lúc bằng dạng số:

chmod 6777 drop_box
ls -l

Ví dụ kết quả:

drwsrwsrwx 2 oracle users 4096 Sep 14 10:55 drop_box

Trong đó:

  • 4 đại diện cho SUID

  • 2 đại diện cho SGID

  • 6 là tổng của 4 + 2


Cách nhận biết SUID, SGID và Sticky Bit trong permission

Khi dùng lệnh:

ls -l

Bạn có thể nhận biết các permission đặc biệt qua ký tự:

  • s: SUID hoặc SGID

  • t: Sticky Bit

Ví dụ:

  • -rwsr-xr-x → file có SUID

  • drwxrwsr-x → thư mục có SGID

  • drwxrwxrwt → thư mục có Sticky Bit

Việc nhận diện đúng các ký hiệu này rất quan trọng để kiểm tra nhanh trạng thái phân quyền trên hệ thống Linux.


Khi nào nên sử dụng các permission mở rộng này?

Nên dùng Sticky Bit khi:

  • cần tạo thư mục chia sẻ cho nhiều người dùng

  • muốn ngăn xóa nhầm file của nhau

  • triển khai thư mục dùng chung trên server

Nên dùng SUID khi:

  • một chương trình cần chạy với quyền owner

  • ứng dụng hệ thống cần quyền cao hơn user thông thường

  • có yêu cầu đặc biệt về thao tác hệ thống

Nên dùng SGID khi:

  • cần đồng bộ group trong thư mục dùng chung

  • triển khai môi trường làm việc nhóm

  • muốn tất cả file mới tạo có cùng group quản lý


Lưu ý bảo mật khi dùng SUID, SGID và Sticky Bit

Mặc dù các permission mở rộng này rất hữu ích, nhưng nếu cấu hình sai có thể gây ra rủi ro lớn.

Một số lưu ý quan trọng gồm:

  • không gán SUID bừa bãi cho file thực thi

  • chỉ dùng SGID khi thực sự cần đồng bộ group

  • nên kiểm tra thường xuyên các file có quyền đặc biệt

  • tránh cấp quyền 777 không cần thiết

  • luôn đánh giá tác động bảo mật trước khi áp dụng trên server thật

Đặc biệt, SUID trên các file nhạy cảm có thể trở thành điểm khai thác nếu chương trình có lỗ hổng.


Kết luận

Chmod, SUID, SGID và Sticky Bit là những kiến thức nền tảng nhưng rất quan trọng trong quản trị máy chủ ảo Linux. Việc hiểu và sử dụng đúng các quyền mở rộng này sẽ giúp bạn:

  • quản lý truy cập hiệu quả hơn

  • tăng cường bảo mật hệ thống

  • giảm rủi ro sai quyền khi chia sẻ dữ liệu

  • vận hành server Linux chuyên nghiệp và ổn định hơn

Nếu bạn là quản trị viên hệ thống hoặc đang làm việc với Linux server, đây là những kiến thức bắt buộc nên nắm vững.

Hy vọng bài viết trên sẽ giúp bạn hiểu rõ hơn về permission mở rộng trên Linux và áp dụng đúng trong thực tế.

Chúc bạn quản trị hệ thống thành công.

Chia sẻ bài viết

Bình luận

( 0 bình luận )
Không có bình luận nào

Bình luận của bạn

Tin tức liên quan