Security aspects

In OAR, security and user switching is managed by the “oardodo” command. It is a suid binary which can be executed only by root and the oar group members that is used to launch a command, a terminal or a script with the privileges of a particular user. When “oardodo” is called, it checks the value of an environment variable: OARDO_BECOME_USER.

  • If this variable is empty, “oardodo” will execute the command with the privileges of the superuser (root).
  • Else, this variable contains the name of the user that will be used to execute the command.

Here are the scripts/modules where “oardodo” is called and which user is used during this call:

  • OAR::Modules::Judas: this module is used for logging and notification.

    • user notification: email or command execution. OARDO_BECOME_USER = user
  • oarsub: this script is used for submitting jobs or reservations.

    • read user script
    • connection to the job and the remote shell
    • keys management
    • job key export

    for all these functions, the user used in the OARDO_BECOME_USER variable is the user that submits the job.

  • pingchecker: this module is used to check resources health. Here, the user is root.

  • oarexec: executed on the first reserved node, oarexec executes the job prologue and initiate the job.

    • the “clean” method kills every oarsub connection process in superuser mode
    • “kill_children” method kills every child of the process in superuser mode
    • execution of a passive job in user mode
    • getting of the user shell in user mode
    • checkpointing in superuser mode
  • job_resource_manager: The job_resource_manager script is a perl script that oar server deploys on nodes to manage cpusets, users, job keys...

    • cpuset creation and clean is executed in superuser mode
  • oarsh_shell: shell program used with the oarsh script. It adds its own process in the cpuset and launches the shell or the script of the user.

    • cpuset filling, “nice” and display management are executed as root.
    • TTY login is executed as user.
  • oarsh: oar’s ssh wrapper to connect from node to node. It contains all the context variables usefull for this connection.

    • display management and connection with a user job key file are executed
      as user.