⌨️ Команда недели: setpriv
⌨️ Команда недели: setpriv Привет! Иногда нужно запустить программу с ограниченными привилегиями и проверить, что она действительно не сможет сделать лишнего. Менять пользователя через sudo -u можно, но это ещё не вся история: у процесса есть capabilities, no_new_privs и другие параметры безопасности. Для таких экспериментов в Linux есть setpriv. Она позволяет настроить привилегии прямо перед запуском команды. 👨💻 Например, запустим программу с запретом на получение новых привилегий: setpriv —no-new-privs ./app После этого процесс и его потомки не смогут получить дополнительные привилегии через execve(), в том числе за счёт setuid-бинарников и файловых capabilities. ⚡️ Можно пойти дальше и убрать все capabilities из bounding set: sudo setpriv —bounding-set=-all \ —no-new-privs ./app 🔎 Ещё один вариант - проверить поведение программы с другим набором идентификаторов пользователя и групп: sudo setpriv —reuid=1000 —regid=1000 \ —clear-groups ./app Здесь важно явно указать, что делать с дополнительными группами. Иначе можно случайно оставить процессу доступ, который не планировали давать. ⚙️ Текущие настройки привилегий процесса можно посмотреть через: grep -E ‘Cap(Inh|Prm|Eff|Bnd|Amb)|NoNewPrivs’ \ /proc/self/status P.S. setpriv удобна для тестирования ограничений, но сама по себе не создаёт полноценную песочницу. Она не изолирует файловую систему, сеть и системные вызовы. 🤖Бесплатный ChatGPT