Previous Section Next Section

F=S

Assume specified user-id and group-id V8.9 and above

There are three major ways in which sendmail can be run:[33] as a set-user-id root process (that is, with the permissions of root regardless of who runs it), as a root process because it was run by root, or as an ordinary process run by an ordinary (nonprivileged) user. When sendmail is running with root privilege and when the F=S delivery agent flag is specified for a delivery agent, sendmail always invokes that delivery agent as the effective user and effective group specified by the U= delivery agent equate.[34] If the U= delivery agent equate is unspecified or is specified as zero, it runs as the effective user root. In both instances, the real user and real group IDs remain those of the recipient.

[33] Beginning with V8.12, the default is to run sendmail as root only when it is executed by root (as it would be if executed from an rc boot-time script). Installing sendmail as a set-user-id root process is discouraged.

[34] Prior to V8.7 there was no U= delivery agent equate, so F=S always ran as root.

If the F=S flag is omitted from the delivery agent, the following scenarios occur:

  • If delivery is to a file, and if the set-user-id bit is set in the file's permission bits, and if the execute-bit is not set, sendmail sets its user and group identities to those of the owner and group of the file.

  • Otherwise, if the set-user-id bit is not set, or if deliver is not to a file, and if there is a controlling user (C line) for the address, sendmail sets its identity to that of the controlling user for delivery.

  • Otherwise, if the user or group part of the U= delivery agent equate was missing or 0, sendmail assumes the identity of the DefaultUser option (DefaultUser).

  • Otherwise, sendmail assumes the identity of the U= delivery agent equate.

If it fails to set its identity, it prints and logs the following error:

insufficient privileges to change gid, RealGid=rgid, RunAsUid=ruid, gid=gid, egid=egid  

Note that this F=S flag was revised once for V8.7. Then it was revised again for V8.9, and has remained stable since.

    Previous Section Next Section