Intereting Posts
Линии 1,2,3,4, …, n-1, n к строкам n, n-1, …, 4,3,2,1 Измените размер физического объема, resize2fs не будет работать с ним Как преобразовать символ метки опроса в акцентированные буквы Не удается отформатировать поврежденную 32-гигабайтную SD-карту Различные методы получения SHA1 дают разные результаты отношение между chmod и sudo в исполняемом файле sshfs: тип файла отличается от точки монтирования В чем разница между выводами dmesg и / var / log / messages? Как добавить команды в последовательность загрузки? Есть ли инструмент для отображения информации Wi-Fi в консоли? Как я могу исключить тип файла * .sql типа файла ack-grep или размер файла больше> 3 МБ? Как установить разные обои для каждого экрана из командной строки в Gnome3? ssh для предопределенного сервера работает только после того, как я ssh к нему, набрав ip вручную Ищем элегантное решение iproute2 для хоста с 2 интерфейсами на 2 сети и 3 шлюза Как выполнить инструкцию IF из результата выполненной команды

Убедитесь, что только root может редактировать скрипт перед его выполнением

У меня есть скрипт, который должен запускаться от имени root. Он также имеет файл конфигурации, который считывается с использованием источника:

source conf.sh 

Я хотел бы проверить, что обычный пользователь не может редактировать conf.sh и, следовательно, получить доступ root.

Я могу проверить, кто является владельцем файла и какая группа разрешений и другие пользователи имеют:

 if [[ "$(stat -c "%a" conf.sh | egrep ".2.|.3.|.6.|.7.|..2|..3|..6|..7")" != "" ]] || [[ "$(stat -c "%u" conf.sh)" != "0" ]]; then #don't execute the file" fi 

Я что-то пропустил? Есть ли лучшие практики?

Я бы сделал это с арифметической оценкой:

 if [[ $(stat -c '%u' conf.sh) -ne 0 -o \ $(( $(stat -c '%a' conf.sh) & 0044)) -ne 0 ]]; then # file's owner is not root or file is writable by group or world fi