Điều này không trả lời trực tiếp câu hỏi nhưng tôi không nghĩ câu hỏi đúng đang được hỏi ở đây. Đối với tôi, người hỏi muốn một chương trình sẽ hoạt động khác nhau có lẽ là nó có quyền nhất định hay không, tuy nhiên tôi cho rằng việc kiểm tra sudo không phải là cách để làm điều đó. Thứ nhất, nhiều hệ thống có thể không thực hiện "sudo", điều đó không có nghĩa là bắt buộc đối với Linux hoặc nhiều Unix.
Ví dụ, người dùng có thể đã đăng nhập với quyền root, làm cho sudo vô nghĩa hoặc có lẽ hệ thống không có người dùng root vẫn có khả năng thực hiện tác vụ quản trị mà chương trình có thể muốn thực hiện. Cuối cùng, có lẽ hệ thống không có root hay sudo nào cả và thay vào đó sử dụng một hệ thống kiểm soát truy cập bắt buộc với các khả năng khác nhau và không bắt tất cả các siêu người dùng để sudo vào. Hoặc người dùng có thể bị sudo, nhưng vào một tài khoản không có quyền hơn tài khoản của họ vì lý do bảo mật (tôi thường chạy mã không tin cậy với người dùng không có đặc quyền tạm thời chỉ có thể ghi vào ramdisks để bỏ, không tăng quyền của tôi ). Nhìn chung, một ý tưởng tồi là giả định một mô hình quyền cụ thể như sudo hoặc sự tồn tại của root hoặc giả sử người dùng bị sudo có bất kỳ đặc quyền cụ thể nào.
Nếu bạn muốn tìm hiểu xem bạn có quyền thực hiện một thao tác hay không, cách tốt nhất thường là chỉ cần thử và thực hiện sau đó kiểm tra lỗi cho các vấn đề về quyền nếu thất bại hoặc nếu đó là một hoạt động nhiều giai đoạn phải thất bại hoặc tất cả đều thành công bạn có thể kiểm tra xem một hoạt động có hoạt động với các chức năng như chức năng truy cập POSIX không (hãy cẩn thận với các điều kiện cuộc đua có thể ở đây nếu quyền được tích cực thay đổi)
Ngoài ra, bạn cần biết người dùng thực sự đằng sau sudo, bạn có thể sử dụng chức năng getlogin , hoạt động cho bất kỳ phiên tương tác nào với thiết bị đầu cuối bên dưới và sẽ cho phép bạn tìm ai đó 'thực sự' đang chạy lệnh để kiểm tra hoặc tìm thư mục nhà của người dùng thực để lưu nhật ký.
Cuối cùng, nếu điều bạn thực sự muốn là tìm hiểu xem người dùng có quyền truy cập root hay không (Vẫn là một ý tưởng tồi nhưng ít triển khai cụ thể hơn), bạn có thể sử dụng getuid để kiểm tra uid bằng 0 và do đó root.