Запретить нормальным пользователям выполнять - PullRequest
1 голос
/ 18 августа 2010

Мне нужен лучший способ запретить обычным пользователям запускать мой скрипт на python. Я делаю что-то подобное:

if __name__ == '__main__':
    if os.getenv('USER') == 'root':
        addUser = addUser()
    else:
        print 'Only root can run that!'

Это работает, но довольно уродливо! Мой сценарий посвящен управлению пользователями в системе Debian.

Ответы [ 2 ]

12 голосов
/ 18 августа 2010

Код Python можно просматривать и редактировать, чтобы обойти любую защиту, которую вы устанавливаете. Лучше всего ограничить доступ к исполняемому файлу пользователем в debian, чтобы только root мог выполнять / просматривать / редактировать.1004 * CHMOD

5 голосов
/ 18 августа 2010

Более нормально ограничивать доступ к ресурсам, необходимым для работы исполняемого файла, чем для принудительного разрешения на уровне исполняемого файла.Например, команда mount(8) обычно может выполняться любым пользователем, но файлы устройств, необходимые для фактического монтирования реальных томов, ограничены определенными пользователями или группами, и команда монтирования проверяет, выполняет ли операциябыло бы возможно, прежде чем даже попытаться сделать системные вызовы для выполнения операций устройства.

Это работает также с обычными файлами.Например, многим менеджерам пакетов linux требуется база данных установленных программ.Перед установкой чего-либо, менеджер пакетов проверит разрешения для файла базы данных, чтобы увидеть, может ли вызывающий пользователь записать в него, а также проверит целевые каталоги, чтобы увидеть, может ли пользователь изменить их.даже если менеджер пакетов не выполняет эти проверки, они не могут вносить эти изменения при попытке, ядро ​​просто запрещает программе выполнять действие, которое не разрешено выполнять владельцу.

...