Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Khi bạn chạy một tệp thực thi trong Linux, nó thường chạy với người dùng hiện tại và ID nhóm. Tuy nhiên, đôi khi bạn cần chạy tệp đó với tư cách người dùng khác (như root). Thay vì chuyển đổi tài khoản người dùng, bạn có thể sử dụng setuid để chạy tệp thực thi với tư cách là chủ sở hữu tệp chứ không phải người dùng hiện tại. Sau đây, chúng tôi sẽ giải thích cách setuid hoạt động và cách nó cho phép người dùng chạy tệp thực thi / tệp nhị phân với các đặc quyền được nâng cấp.

Setuid hoạt động như thế nào?

Setuid là viết tắt của SET User ID khi thực thi . Giả sử chúng tôi có một tệp thực thi được gọi là "danh tính" được tạo bởi người dùng gốc. Khi bạn chạy nó, nó sẽ chạy với ID người dùng, ID nhóm và đặc quyền người dùng của bạn. Nếu bit setuid được đặt trên tệp “nhận dạng”, khi bạn chạy nó, nó sẽ được chạy với tư cách người dùng root và các đặc quyền của người dùng.

Như một minh họa, trước tiên chúng ta có thể kiểm tra quyền sở hữu của tệp “danh tính” và xác minh rằng nó thuộc sở hữu của người dùng root. Chuỗi quyền cũng hiển thị các bit (x) thực thi được đặt cho người dùng, nhóm và những người khác.

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Người dùng “john1” thực thi tệp “nhận dạng”, tệp này sẽ trở thành một quá trình đang thực thi. Như được hiển thị trong danh sách quy trình, quy trình được tạo và chạy dưới tên người dùng và ID người dùng “john1”.

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Tiếp theo, với tư cách là người dùng root, chúng tôi đặt bit setuid của tệp “danh tính”:

chmod u+s /usr/bin/identity

“U” biểu thị rằng (+ s) bit setuid chỉ được đặt cho người dùng.

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Đối với chủ sở hữu, trong phần thực thi của chuỗi quyền, chúng ta có thể thấy rằng “x” đã được thay thế bằng “s”. Bất cứ khi nào bạn gặp “s” cho một tệp thực thi, điều đó có nghĩa là bit setuid đã được đặt trên đó.

Biến thể số của chmod cũng có thể được sử dụng như hình bên dưới.

chmod 4755 /usr/bin/identity

Việc bổ sung 4 trong chuỗi quyền số biểu thị việc bao gồm bit setuid.

Sau đây là những gì sẽ xảy ra khi “john1” thực thi lại tệp “danh tính”. Nhìn vào danh sách các quy trình đang chạy, bây giờ chúng ta có thể thấy rằng quy trình được tạo và chạy bởi người dùng "root" thay vì "john1".

Cách Setuid cho phép người dùng chạy tệp với các đặc quyền được báo cáo

Việc sử dụng bit setuid quan trọng

Hầu hết thời gian, bạn sẽ được nghe từ các chuyên gia rằng bạn không nên chạy các ứng dụng với tư cách là người dùng root. Tuy nhiên, có những trường hợp các tệp nhất định cần chạy với quyền root. Ví dụ:passwd tiện ích được cài đặt theo mặc định trên hệ thống Linux có bit setuid được đặt trên đó.

Lý do rất đơn giản:Thông tin mật khẩu cho người dùng được lưu trữ trong các tệp “/ etc / passwd” và “/ etc / shadow”, chỉ có thể được sửa đổi bởi “root”. Khi “john1” cố gắng thay đổi mật khẩu cho chính mình, anh ta sẽ cần có quyền sửa đổi thông tin trong hai tệp nói trên. Đặt bit setuid trên passwd cho phép “john1” tạm thời có quyền root để thay đổi mật khẩu người dùng và cũng cập nhật thông tin trong hai tệp.

Rủi ro bảo mật Setuid

Nếu bạn không cẩn thận, kẻ tấn công có thể khai thác mã nhị phân setuid để kiểm soát hệ thống của bạn. Người dùng thông thường không nên cài đặt các chương trình setuid, đặc biệt là setuid cho người dùng không phải chính họ. Quan trọng nhất, bạn không nên có bất kỳ tệp nhị phân nào được bật setuid cho người dùng gốc trong thư mục Trang chủ của mình. Đây thường là Ngựa Trojan hoặc phần mềm độc hại.

Kết luận

Setuid chỉ có thể được đặt trên các tệp thực thi. Tương tự, setgid bit cũng có thể được đặt, điều này cho phép tất cả các thành viên của nhóm chạy tệp thực thi với quyền của chủ sở hữu.

Lưu ý rằng setuidsetgid các bit nhạy cảm với bảo mật và chỉ những quản trị viên hệ thống đủ điều kiện mới được sử dụng.

Đọc tiếp theo:

  • Cách sử dụng Sticky Bit để quản lý tệp trên thư mục dùng chung trong Linux
  • Cách Kiểm tra Chính tả trong Linux Terminal
  • Sử dụng lệnh find, định vị và whereis để tìm kiếm tệp trong Linux