Hi all,

I've been looking at the way Traffic Server elevated privilege, and it's quite 
inconsistent right now, and it doesn't work correctly in all configurations. I 
am working on making this consistent. Here is the behavior I plan to implement:

    1. traffic_manager runs with real root credentials, but
       effective credentials as given by proxy.config.admin.user_id.
       It will elevate back to root to perform privileged operations.

    2. traffic_server is started with real root credentials,
       but attempts to permanently drop to an unprivileged user early
       in the startup process. The unprivileged user account for
       traffic_server is also given by proxy.config.admin.user_id.
       when traffic_server drops privilege, it does so permanently.

    3. traffic_server may elevate privilege depending on the
       value of proxy.config.ssl.cert.load_elevated and
       proxy.config.plugin.load_elevated. This elevation will only
       be supported on platforms that have per-thread capabilities.
       traffic_server will check at startup whether to retain
       sufficient capabilities to allow it to elevate later. This
       means that the *.load_elevated configurations will not be
       reloadable.

    4. After traffic_server drops privilege, we will continue to abort
       with a fatal error if the real or effective user ID is root. This
       behavior can be avoided by defining BIG_SECURITY_HOLE=1 at build
       time.

Note that people on #traffic-server seemed to agree that we should move away 
from allowing traffic_server to retain privilege. I the future, I hope that we 
can call up to traffic_manager to perform any privileged operations, and stop 
supporting root privileges fot plugins.

cheers,
James

Reply via email to