Защитите собственный скрипт от несанкционированного доступа и запустите NOPASSWD без присмотра w / sudoers.

Используя /etc/sudoers, я дал пользователю без полномочий root (anyuser ниже) разрешение sudo-выполнить скрипт, принадлежащий пользователю root (test-script ниже) с установленным тегом NOPASSWD:.
Восьмеричное значение разрешения скрипта равно 0550. Его выполнение возможно только с одним предопределенным аргументом (cache_bak ниже) и , когда файл сценария не был подделан. Последнее возможно на основе условного выполнения SHA256 (соответствующая информация на странице руководства sudoers).

Все работает хорошо, ... пока я не протестирую-не изменим скрипт, чтобы получить другой дайджест SHA и посмотрю, как sudoers его обрабатывает.

То, что я сделал, было:

$ cat /home/anyuser/Scripts/test-script
#!/bin/bash
/bin/mkdir -p /var/"$1"
/bin/cp -R /var/cache/* /var/"$1" # copies content of /var/cache/ 
                                  # to /var/$1, defined by script's lone arg 
exit $?
# End of test-script

$ sudo chmod 0550 /home/anyuser/Scripts/test-script
$ sudo chown root:admin /home/anyuser/Scripts/test-script
$ ls -lsAF test-*   # check
4 -r-xr-x--- 1 root admin   75 Apr 25 18:23 test-script*

$ cat /etc/group | grep sudo   # check
sudo:x:27:anyuser

$ sudo cat /etc/sudoers         # check
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    insults
root    ALL = (ALL:ALL) ALL
%sudo   ALL = (root:ALL) ALL
%admin  ALL = (ALL:ALL) ALL
%wheel Somehost = (ALL:ALL) ALL
#includedir /etc/sudoers.d

Затем я заполнил /etc/sudoers.d 10_user, содержание которого:

$ cat /etc/sudoers.d/10_user
Cmnd_Alias CPVARCACHE = sha256:48805bae82834f323xxxxxxxxxxxxx10145c7bbf80bae183b7de3ea52ef90637 /home/anyuser/Scripts/test-script cache_bak

# GROUP SPECS
%admin Somehost = NOPASSWD: /usr/bin/rsync

# USER SPECS
anyuser Somehost = (root) NOPASSWD: CPVARCACHE

Все работает хорошо то есть пароль не запрашивается, и задание копирования выполняется, пока я не симулирую вмешательство в test-script. Я сделал это, добавив к нему строку, например, if [ "$1" ] ;then :; fi и работает: sudo /home/anyuser/Scripts/test-script cache_bak снова.

1130 Оболочка sudo не прерывается, как я ожидал. Вместо этого он проверяет, что дайджест SHA стал другим, и запрашивает пароль для anyuser для выполнения задания. Однако в этом случае я хочу, чтобы строка cmd прерывала работу без присмотра (тихо).

Попытка перенаправить stdout и stderr в / dev / null:

# after modifying the script so its SHA digest is different from
#+ that in '/etc/sudoers.d/10_user'

$ sudo /home/anyuser/Scripts/test-script cache_bak > /dev/null 2>&1
[sudo] password for anyuser: _^C

Выше только перенаправляет вывод процесса подоболочки, а не процесс sudo.

Если сценарий подделан, мне нужно прервать процесс sudo, по-видимому, даже до того, как он запустит сценарий ... Я видел интересные вещи (например, это ), но ничего по-настоящему не актуально. ..

1
задан 26 April 2016 в 14:44

1 ответ

Мое решение, непосредственно адаптированное из ответа MarcoS на StackOverflow:

$ sudo -n /home/anyuser/Scripts/test-script cache_bak -- 2> sudo-stderr_"$(date+\%Y\%m\&d-\%H\%M\%S)".log

ОБЪЯСНЕНИЕ:
-n отметьте запрос passwd sudo suppresse. Таким образом, ничто не отображено на stdout.
Если passwd, тем не менее, требуется, sudo умирает корректно после отправки сообщения об ошибке к stdderr. Например:

$ sudo -n ls
sudo: a password is required

сразу сопровождается sudo смерть процесса.

Перенаправить sudo stderr, сначала добавьте -- после sudo'd cmd для выражения этого sudo интерпретация остановок, что стало впоследствии cmd аргументы строки. Перенаправление stderr как обычно, обозначен 2> сопровождаемый специальным именем файла журнала.

0
ответ дан 27 April 2016 в 00:44
  • 1
    По первому вопросу: если я не глуп выполнить Internet Explorer в ВИНЕ, но только выполнять игру в ВИНЕ + я просматриваю с предварительно установленной программой Firefox БЕЗ ВИНА тогда, теневые сайты имеют шанс? Также Вы лично встречались с некоторыми проблемами с разделом NTFS, повреждающимся при использовании Linux? – shackt 22 September 2017 в 01:57

Другие вопросы по тегам:

Похожие вопросы: