Nếu đây là một nhị phân bình thường, bạn có thể setuid bằng cách chạy
# chmod u+s /path/to/binary
Thật không may, các kịch bản không thể được thiết lập. (Vâng, bạn có thể, nhưng nó bị bỏ qua). Lý do cho điều này là dòng đầu tiên của tập lệnh cho hệ điều hành biết trình thông dịch nào để chạy tập lệnh bên dưới. Ví dụ: nếu bạn có một tập lệnh với:
#!/bin/bash
Bạn thực sự sẽ chạy
/bin/bash /path/to/script
Rõ ràng, bạn cần trình thông dịch là setuid, điều đó có nghĩa là tất cả các tập lệnh sẽ được setuid. Điều này sẽ là xấu.
Bạn có thể làm điều này với sudo bằng cách đặt phần sau vào tệp / etc / sudoers bằng cách chạy visudo.
ALL ALL=NOPASSWD: /path/to/script
Và bây giờ bất kỳ người dùng nào cũng có thể chạy
$ sudo /path/to/script
Điều này cho phép họ chạy tập lệnh mà không cần nhập mật khẩu.
Có một giải pháp thay thế không yêu cầu sudo trong lệnh, yêu cầu tạo một tệp nhị phân nhỏ được thiết lập để thực thi tập lệnh của bạn, nhưng mỗi nhị phân setuid bổ sung sẽ thêm một vấn đề bảo mật tiềm năng khác.