2015-01-29 5 views
0

У меня есть приложение Python, работающее в виртуальной среде, и я пытаюсь создать для него профиль apparor. У него есть оболочка, которая выглядит следующим образом:Профиль Apparmor не может работать whoami

#!/bin/bash 

## This script is for running the 'fact' command on staging/prod, it sudos to 
## the 'fact' user before executing /opt/fact-virtual-environment/bin/fact 

## It is installed as '/usr/bin/fact' 

WHOAMI=$(whoami) 
PYTHONPATH=/usr/share/fact 
PYTHON_BIN=/opt/fact-virtual-environment/bin/python 
DJANGO_SETTINGS_MODULE=fact.settings.staging 

if [ "${WHOAMI}" != "fact" ]; 
then 
    sudo -u fact $0 $*; 
else 
    PYTHONPATH=${PYTHONPATH} DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE} ${PYTHON_BIN} -m fact.managecommand $*; 
fi 

Таким образом, мы всегда убедитесь, что мы Судо к нужному пользователю перед запуском. Однако даже при использовании sudo и whoami я запускаю на ux (как показано ниже, и да, я знаю, что ux плохо/небезопасно), whoami все еще не может получить правильный идентификатор пользователя.

# Last Modified: Tue Jan 20 09:25:09 2015 
#include <tunables/global> 

/usr/bin/fact { 
    #include <abstractions/apache2-common> 
    #include <abstractions/base> 
    #include <abstractions/bash> 


    capability setgid, 
    capability sys_resource, 


    deny /etc/group r, 
    deny /etc/passwd r, 
    deny /usr/local/lib/python2.7/dist-packages/ r, 
    deny /usr/local/lib/python2.7/site-packages/ r, 

    /usr/bin/sudo ux, 
    /usr/bin/whoami ux, 

    /bin/bash rix, 
    /bin/dash rix, 
    /bin/uname rix, 
    /dev/tty rw, 
    /etc/default/locale r, 
    /etc/group r, 
    /etc/passwd r, 
    /etc/environment r, 
    /etc/login.defs r, 
    /etc/lsb-release r, 
    /etc/fact/fact.ini r, 
    /etc/python2.7/sitecustomize.py r, 
    #/etc/security/pam_env.conf r, 
    /lib{,32,64}/** mr, 
    /opt/fact-virtual-environment/** mr, 
    /opt/fact-virtual-environment/bin/python rix, 
    #/proc/*/fd/ r, 
    #/proc/*/mounts r, 
    #/proc/filesystems r, 
    #/proc/loadavg r, 
    #/proc/meminfo r, 
    #/proc/sys/kernel/ngroups_max r, 
    #/run/utmp rk, 
    /sbin/ldconfig rix, 
    /sbin/ldconfig.real rix, 
    /usr/bin/fact rix, 
    /usr/lib{,32,64}/** mr, 
    /usr/share/fact/ r, 
    /usr/share/fact/fact/** r, 
    /usr/share/pyshared/** r, 

} 

и ошибка:

fact 
whoami: cannot find name for user ID 1010 
whoami: cannot find name for user ID 111 
fact is not in the sudoers file. This incident will be reported. 

Потому что он не может определить пользователя, я бегу, как это sudos на самом деле все равно, а потом жалуется, потому что факт не может Судо. Какая настройка аперфоратора необходима для правильной работы whoami?

+0

Проблема находится в/usr/bin/fact. –

+0

Не могли бы вы рассказать о проблеме? – djsumdog

+0

/usr/bin/fact: строка 13: [:! =: Ожидаемый унарный оператор –

ответ

0

Я отключил команду whoami с помощью USER. Это единственное работоспособное решение.