• Tetsuo Handa's avatar
    TOMOYO: Allow specifying domain transition preference. · 6bce98ed
    Tetsuo Handa authored
    I got an opinion that it is difficult to use exception policy's domain
    transition control directives because they need to match the pathname specified
    to "file execute" directives. For example, if "file execute /bin/\*\-ls\-cat"
    is given, corresponding domain transition control directive needs to be like
    "no_keep_domain /bin/\*\-ls\-cat from any".
    
    If we can specify like below, it will become more convenient.
    
      file execute /bin/ls keep exec.realpath="/bin/ls" exec.argv[0]="ls"
      file execute /bin/cat keep exec.realpath="/bin/cat" exec.argv[0]="cat"
      file execute /bin/\*\-ls\-cat child
      file execute /usr/sbin/httpd <apache> exec.realpath="/usr/sbin/httpd" exec.argv[0]="/usr/sbin/httpd"
    
    In above examples, "keep" works as if keep_domain is specified, "child" works
    as if "no_reset_domain" and "no_initialize_domain" and "no_keep_domain" are
    specified, "<apache>" causes domain transition to <apache> domain upon
    successful execve() operation.
    
    Moreover, we can also allow transition to different domains based on conditions
    like below example.
    
      <kernel> /usr/sbin/sshd
      file execute /bin/bash <kernel> /usr/sbin/sshd //batch-session exec.argc=2 exec.argv[1]="-c"
      file execute /bin/bash <kernel> /usr/sbin/sshd //root-session task.uid=0
      file execute /bin/bash <kernel> /usr/sbin/sshd //nonroot-session task.uid!=0
    Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: default avatarJames Morris <jmorris@namei.org>
    6bce98ed
domain.c 24.5 KB