SUDO_LOGSRV.PROTO(5) File Formats Manual SUDO_LOGSRV.PROTO(5) (NAME) sudo_logsrv.proto - sudo (DESCRIPTION) 1.9.0 sudo / (I/O) . Protocol Buffers . (EXAMPLES) Protocol Buffers . Protocol Buffers (network byte order) . "length-prefix framing" ( ) . : ClientMessage ServerMessage . . . (CLIENT MESSAGES) ClientMessage . message ClientMessage { oneof type { AcceptMessage accept_msg = 1; RejectMessage reject_msg = 2; ExitMessage exit_msg = 3; RestartMessage restart_msg = 4; AlertMessage alert_msg = 5; IoBuffer ttyin_buf = 6; IoBuffer ttyout_buf = 7; IoBuffer stdin_buf = 8; IoBuffer stdout_buf = 9; IoBuffer stderr_buf = 10; ChangeWindowSize winsize_event = 11; CommandSuspend suspend_event = 12; ClientHello hello_msg = 13; } } ClientMessage . TimeSpec message TimeSpec { int64 tv_sec = 1; int32 tv_nsec = 2; } TimeSpec struct timespec POSIX . tv_sec . InfoMessage message InfoMessage { message StringList { repeated string strings = 1; } message NumberList { repeated int64 numbers = 1; } string key = 1; oneof value { int64 numval = 2; string strval = 3; StringList strlistval = 4; NumberList numlistval = 5; } } InfoMessage - . . InfoMessage . (EVENT LOG VARIABLES) . ClientHello hello_msg message ClientHello { string client_id = 1; } ClientHello . client_id . . AcceptMessage accept_msg message AcceptMessage { TimeSpec submit_time = 1; repeated InfoMessage info_msgs = 2; bool expect_iobufs = 3; } AcceptMessage . : submit_time . info_msgs InfoMessage . I/O . expect_iobufs IoBuffer ( I/O) true false . AcceptMessage RejectMessage RestartMessage . RejectMessage reject_msg message RejectMessage { TimeSpec submit_time = 1; string reason = 2; repeated InfoMessage info_msgs = 3; } RejectMessage . : submit_time . reason . info_msgs InfoMessage . . RejectMessage AcceptMessage RestartMessage . ExitMessage exit_msg message ExitMessage { TimeSpec run_time = 1; int32 exit_value = 2; bool dumped_core = 3; string signal = 4; string error = 5; } ExitMessage . : run_time (monotonic clock) . . exit_value . dumped_core core dump true . signal "SIG" . : INT, TERM, KILL, SEGV. error . I/O commit_point IoBuffer commit_point . RestartMessage restart_msg message RestartMessage { string log_id = 1; TimeSpec resume_point = 2; } RestartMessage I/O . : log_id I/O . . resume_point I/O . TimeSpec . resume_point commit_point . RestartMessage resume_point . RestartMessage AcceptMessage RejectMessage . AlertMessage alert_msg message AlertMessage { TimeSpec alert_time = 1; string reason = 2; repeated InfoMessage info_msgs = 3; } AlertMessage . : alert_time . reason . info_msgs InfoMessage . . IoBuffer ttyin_buf | ttyout_buf | stdin_buf | stdout_buf | stderr_buf message IoBuffer { TimeSpec delay = 1; bytes data = 2; } IoBuffer . : delay TimeSpec. delay . data I/O . ChangeWindowSize winsize_event message ChangeWindowSize { TimeSpec delay = 1; int32 rows = 2; int32 cols = 3; } ChangeWindowSize . : delay TimeSpec. delay . rows . cols . CommandSuspend suspend_event message CommandSuspend { TimeSpec delay = 1; string signal = 2; } CommandSuspend . : delay TimeSpec. delay . signal "SIG". : STOP, TSTP, CONT. (SERVER MESSAGES) ServerMessage . message ServerMessage { oneof type { ServerHello hello = 1; TimeSpec commit_point = 2; string log_id = 3; string error = 4; string abort = 5; } } ServerMessage . ServerHello hello message ServerHello { string server_id = 1; string redirect = 2; repeated string servers = 3; bool subcommands = 4; } ServerHello . : server_id . . . redirect (`'): . IPv4 IPv6 . (load balancing) . ServerHello redirect . servers . (redundancy) . . subcommands . sudo intercept () AcceptMessage RejectMessage . sudo / . subcommands false . TimeSpec commit_point I/O (commit) . IoBuffer . ExitMessage commit_point IoBuffer . string log_id I/O AcceptMessage expect_iobufs true . string error . error . string abort abort (kill) . . abort . (PROTOCOL FLOW OF CONTROL) : 1. . TLS (handshake) TLS . 2. ClientHello . TLS TLS . 3. ServerHello . 4. AcceptMessage RejectMessage RestartMessage . 5. AcceptMessage expect_iobufs I/O log_id . 6. IoBuffer . 7. IoBuffer commit_point . 8. ExitMessage . 9. commit_point commit_point . 10. . commit_point TLS TLS . 11. TLS TLS . error abort . abort . (EVENT LOG VARIABLES) AcceptMessage AlertMessage RejectMessage InfoMessage . client run submit . . client sudo. run . submit ( sudo ). InfoMessage : command string runuser string submithost string submituser string InfoMessage : clientargv StringList clientpid int64 (PID) clientppid int64 (PPID) clientsid int64 columns int64 lines int64 runargv StringList runchroot string runcwd string runenv StringList rungid int64 (GID) rungids NumberList rungroup string rungroups StringList runuid int64 (UID) submitcwd string submitenv StringList submitgid int64 (GID) submitgids NumberList submitgroup string submitgroups StringList submituid int64 (UID) ttyname string . (EXAMPLES) Protocol Buffers "proto3" . syntax = "proto3"; /* * Client message to the server. Messages on the wire are * prefixed with a 32-bit size in network byte order. */ message ClientMessage { oneof type { AcceptMessage accept_msg = 1; RejectMessage reject_msg = 2; ExitMessage exit_msg = 3; RestartMessage restart_msg = 4; AlertMessage alert_msg = 5; IoBuffer ttyin_buf = 6; IoBuffer ttyout_buf = 7; IoBuffer stdin_buf = 8; IoBuffer stdout_buf = 9; IoBuffer stderr_buf = 10; ChangeWindowSize winsize_event = 11; CommandSuspend suspend_event = 12; } } /* Equivalent of POSIX struct timespec */ message TimeSpec { int64 tv_sec = 1; /* seconds */ int32 tv_nsec = 2; /* nanoseconds */ } /* I/O buffer with keystroke data */ message IoBuffer { TimeSpec delay = 1; /* elapsed time since last record */ bytes data = 2; /* keystroke data */ } /* * Key/value pairs, like Privilege Manager struct info. * The value may be a number, a string, or a list of strings. */ message InfoMessage { message StringList { repeated string strings = 1; } message NumberList { repeated int64 numbers = 1; } string key = 1; oneof value { int64 numval = 2; string strval = 3; StringList strlistval = 4; NumberList numlistval = 5; } } /* * Event log data for command accepted by the policy. */ message AcceptMessage { TimeSpec submit_time = 1; /* when command was submitted */ repeated InfoMessage info_msgs = 2; /* key,value event log data */ bool expect_iobufs = 3; /* true if I/O logging enabled */ } /* * Event log data for command rejected by the policy. */ message RejectMessage { TimeSpec submit_time = 1; /* when command was submitted */ string reason = 2; /* reason command was rejected */ repeated InfoMessage info_msgs = 3; /* key,value event log data */ } /* Message sent by client when command exits. */ /* Might revisit runtime and use end_time instead */ message ExitMessage { TimeSpec run_time = 1; /* total elapsed run time */ int32 exit_value = 2; /* 0-255 */ bool dumped_core = 3; /* true if command dumped core */ string signal = 4; /* signal name if killed by signal */ string error = 5; /* if killed due to other error */ } /* Alert message, policy module-specific. */ message AlertMessage { TimeSpec alert_time = 1; /* time alert message occurred */ string reason = 2; /* policy alert error string */ repeated InfoMessage info_msgs = 3; /* key,value event log data */ } /* Used to restart an existing I/O log on the server. */ message RestartMessage { string log_id = 1; /* ID of log being restarted */ TimeSpec resume_point = 2; /* resume point (elapsed time) */ } /* Window size change event. */ message ChangeWindowSize { TimeSpec delay = 1; /* elapsed time since last record */ int32 rows = 2; /* new number of rows */ int32 cols = 3; /* new number of columns */ } /* Command suspend/resume event. */ message CommandSuspend { TimeSpec delay = 1; /* elapsed time since last record */ string signal = 2; /* signal that caused suspend/resume */ } /* * Server messages to the client. Messages on the wire are * prefixed with a 32-bit size in network byte order. */ message ServerMessage { oneof type { ServerHello hello = 1; /* server hello message */ TimeSpec commit_point = 2; /* cumulative time of records stored */ string log_id = 3; /* ID of server-side I/O log */ string error = 4; /* error message from server */ string abort = 5; /* abort message, kill command */ } } /* Hello message from server when client connects. */ message ServerHello { string server_id = 1; /* free-form server description */ string redirect = 2; /* optional redirect if busy */ repeated string servers = 3; /* optional list of known servers */ } (SEE ALSO) sudo_logsrvd.conf(5), sudoers(5), sudo(8), sudo_logsrvd(8) Protocol Buffers, https://protobuf.dev. (AUTHORS) sudo : Todd C. Miller sudo CONTRIBUTORS.md sudo (https://www.sudo.ws/about/contributors) . (BUGS) sudo_logsrv.proto sudo https://bugzilla.sudo.ws issue https://github.com/sudo-project/sudo/issues . sudo-workers https://www.sudo.ws/mailman/listinfo/sudo-workers () () . issue . . https://www.sudo.ws/dist/PGPKEYS PGP . (SUPPORT) sudo-users https://www.sudo.ws/mailman/listinfo/sudo-users . (DISCLAIMER) sudo " " (AS IS) . LICENSE.md sudo https://www.sudo.ws/about/license . Sudo 1.9.17p2 September 13, 2022 Sudo 1.9.17p2