Nội dung bài viết
#

Tìm hiểu về quyền SUID, SGID và sticky bit trong Linux

Nội dung bài viết

    Ngay từ khi bắt đầu sử dụng Linux thì rắc rối về phân quyền là vấn đề mà ai cũng từng gặp. Để quản lý hệ thống một cách hiệu quả cần thực thi các script, sửa đổi files và chạy các quy trình. Tuy nhiên đôi khi bạn thấy thông báo “Permission denied”.

    Để biết nguyên nhân cũng như các biện pháp khắc phục, bài viết hôm nay BKHOST sẽ cùng các bạn tìm hiểu về các cách tính toán quyền khác nhau cũng như các quyền đặc biệt trong Linux.

    Quyen SUID, SGID va sticky bit trong Linux

    Phương thức Symbolic

    Phương thức Symbolic sử dụng cú pháp sau:

    {{EJS0}}

    Trong đó:

    • Who: Đại diện cho danh tính: u,g,o,a (user, group, other, all).
    • What: Đại diện cho các hành động: +, -, = (thêm, xóa, đặt chính xác).
    • Which – đại diện cho các cấp độ truy cập: r, w, x (đọc, viết, thực thi).

    Ví dụ: Nếu chúng ta muốn thêm quyền đọc và ghi vào file có tên test.txt cho user và group, chúng ta sử dụng lệnh sau:

    {{EJS1}}

    Phương thức Numeric

    Để tìm hiểu và thực hành các quyền thì phương thức Numeric là một cách hiệu quả. Phương thức Numeric sử dụng cú pháp sau:

    {{EJS2}}

    Ở đây, từ trái sang phải, ký tự # đại diện cho cấp truy cập. Có ba mức truy cập—user, group, và other. Để xác định mỗi chữ số là gì, chúng tôi sử dụng như sau:

    • Bắt đầu từ 0.
    • Nếu quyền đọc phải được đặt, hãy thêm 4.
    • Nếu quyền ghi phải được đặt, hãy thêm 2.
    • Nếu quyền thực thi phải được đặt, hãy thêm 1.

    Điều này được tính trên cơ sở mỗi cấp độ truy cập. Chúng ta cùng giải thích ví dụ về quyền này:

    {{EJS3}}

    Các quyền được thể hiện dưới dạng 650 giải thích như sau:

    • Quyền của người dùng là: rw- hoặc 4+2= 6.
    • Quyền của nhóm là: rx hoặc 4+1= 5.
    • Quyền của những người khác là: hoặc 0.

    Đưa điều này vào cú pháp có lệnh sau:

    {{EJS4}}

    Bây giờ bạn đã hiểu những kiến ​​thức cơ bản về tính toán quyền trong Linux, hãy xem xét các quyền đặc biệt có trong HĐH.

    Giải thích về quyền đặc biệt

    Ngoài user, group, và other thì các quyền đặc biệt tạo thành mức truy cập thứ tư. Các quyền đặc biệt cho phép các đặc quyền bổ sung đối với các bộ quyền tiêu chuẩn (như tên gợi ý). Mỗi cấp độ có một tùy chọn quyền đặc biệt.

    use + s (đặc biệt)

    Thường được ghi chú là SUID, quyền đặc biệt dành cho cấp độ truy cập của người dùng có một chức năng duy nhất: File có SUID luôn thực thi với tư cách là người dùng sở hữu file, bất kể người dùng có truyền lệnh hay không. Nếu chủ sở hữu tệp không có quyền thực thi, thì hãy sử dụng chữ hoa S ở đây.

    Ví dụ: /usr/bin/passwd

    Theo mặc định, lệnh này có quyền SUID được đặt:

    {{EJS5}}

    Lưu ý: x thường chỉ ra quyền thực thi cho người dùng.

    group + s (đặc biệt)

    Thường được ghi chú là SGID, quyền đặc biệt này có một vài chức năng:

    • Nếu được đặt trên một tệp, SGID cho phép tệp được thực thi với tư cách là nhóm sở hữu tệp (tương tự như SUID).
    • Nếu được đặt trên một thư mục, bất kỳ tệp nào được tạo trong thư mục sẽ có quyền sở hữu nhóm của chúng được đặt thành quyền sở hữu của chủ sở hữu thư mục.
    {{EJS6}}

    Bộ quyền này được ghi chú bằng chữ thường s trong đó x thường biểu thị các đặc quyền thực thi cho nhóm. Nó cũng đặc biệt hữu ích cho các thư mục thường được sử dụng trong các nỗ lực hợp tác giữa các thành viên của một nhóm. Dù cho thành viên nào của nhóm cũng đều có thể truy cập bất kỳ file mới nào. Điều này cũng áp dụng cho việc thực thi các file. SGID rất mạnh khi được sử dụng đúng cách.

    Như đã lưu ý trước đây cho SUID, nếu nhóm sở hữu không có quyền thực thi, thì chữ hoa S sẽ được sử dụng.

    other + t (sticky)

    Quyền đặc biệt cuối cùng là “sticky bit”. Tuy không ảnh hưởng đến các tệp riêng lẻ nhưng quyền này ở cấp độ thư mục, nó hạn chế xóa tệp. Chỉ chủ sở hữu (và root) của tệp mới có thể xóa tệp trong thư mục đó. Một ví dụ phổ biến về điều này là thư mục /tmp:

    {{EJS7}}

    Tập hợp quyền được ghi chú bằng chữ thường t, trong đó x thường biểu thị đặc quyền thực thi.

    Đặt quyền đặc biệt

    Chúng ta có thể sử dụng một trong hai phương thức ký hiệu hoặc số để đặt các quyền đặc biệt trên một tệp hoặc thư mục:

    Giả sử chúng ta muốn đặt SGID trên thư mục community_content.

    Bằng Phương thức Symbolic, ​​​​chúng ta làm điều như sau:

    {{EJS8}}

    Bằng phương thức Numberic, chúng ta cần chuyển chữ số thứ tư, đứng trước trong chmod lệnh của mình. Chữ số được sử dụng được tính tương tự như chữ số cho phép tiêu chuẩn:

    • Bắt đầu từ 0.
    • SUID = 4.
    • SGID = 2.
    • Dính = 1.

    Cú pháp sẽ là:

    {{EJS9}}

    Trong đó X là chữ số quyền đặc biệt.

    Đây là lệnh để đặt SGID bằng community_content phương thức Numberic:

    {{EJS10}}

    Tổng kết

    Để trở thành một quản trị viên Linux hiệu quả thì việc hiểu các quyền về cơ bản rất quan trọng. Bài viết trên đây BKHOST hy vọng đã giúp các bạn hiểu rõ về quyền và các khái niệm cơ bản cũng như có thể giải quyết lỗi Permission reject gây cản trở công việc của bạn.

    Nếu còn gặp bất cứ vướng mắc gì, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

    P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

    Mua Hosting tại BKHOST

    Khuyến mãi giảm giá cực sâu, chỉ từ 5k/tháng. Đăng ký ngay hôm nay:

    hosting ssd

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Chat ngay qua Zalo
    Chat ngay qua Messenger
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !