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.