Intereting Posts
Проблема с режимом редактирования GRUB2 Как выбрать главы учебных пособий в Uemacs Есть ли средство командной строки для чтения байтовых секторов / кластеров с определенных адресов на диске? bash: вставлять текст в переменную без необходимости пропускать символы Пакетное переименование папок с помощью одной команды bash Можно ли запустить FreeRDP без отображения для запуска скриптов? Могу ли я использовать wlan для входящих данных и eth0 для исходящих по одной и той же сети? Вставьте отсутствующую строку в несколько упорядоченных столбцов Как расширить раздел с LVM и физическим томом и логическим томом? Установщик Debian, использующий PXE с предварительно заданным config и двумя сетевыми интерфейсами Не добавляйте новые интерфейсы Ethernet, используйте его как eth0 Как выполнить две команды grep для одного файла? Asterisk: использование шаблонов расширений с файлами вызовов Выведите отрицательные значения, независимо от оригинала, на выбранных линиях Почему перезагрузка / proc / sys не является глобальной или не сохраняется в пространстве имен в сети внутри LXC

Возможности для скрипта в Linux

Если я хочу установить возможность ( capabilities(7) ), такую ​​как CAP_NET_BIND_SERVICE , в исполняемом файле, а этот файл является скриптом , мне нужно установить возможность ( setcap(8) ) в интерпретаторе, начинающем этот сценарий, или достаточно ли установить его в самом файле сценария?

Примечание. В частности, вопрос касается Scientific Linux 6.1, но я думаю, что на него можно ответить в целом.

    Возможность установки скрипта не будет эффективной. Это аналогичная ситуация, так как не работает бит setuid в скрипте. Подобно тому, как в последнем случае это реализация того, как execve обрабатывает shebang и соображения безопасности позади него (подробнее см .: Разрешить setuid для сценариев оболочки ).

    Я думаю, у вас есть эти варианты

    1. установить возможности самого интерпретатора (на самом деле скорее его копию)

      • у вас есть проблема в том, что любой, кто сможет ее выполнить, будет работать с этими повышенными возможностями (сможет выполнить какой-либо произвольный скрипт или запустить его в интерактивном режиме)
    2. напишите исполняемый файл обертки, который будет иметь жесткую логику для выполнения вашего скрипта и установить желаемые возможности для этого исполняемого файла

      • убедитесь, что никто не может изменять и не удалять / не заменять скрипт
      • все еще делая chroot можно пропустить такую ​​обертку

    В обоих случаях вам нужно будет убедиться, что набор возможностей сохранится, execve настройку inheritable флага. Вы также можете использовать pam_cap распространенный с помощью libcap обычно для активации желаемых возможностей по конфигурации только для выбранных пользователей.

    И вообще вы хотите удостовериться, что никто не может изменить поведение вашего интерпретатора, изменив среду, например. PYTHON_PATH или что-то подобное.