Параметр Время отключения Для пользователя в sudoers

Эти примеры работают в любой оболочке POSIX и не требуют внешних программ.

Это сохраняет файлы Part * .mp3 на том же уровне, что и каталог проекта:

(cd Project && for i in Part*/audio.mp3; do echo mv "$i" ../"${i%/*}".mp3; done)

Это сохраняет файлы Part * .mp3 в каталоге проекта:

for i in Project/Part*/audio.mp3; do echo mv "$i" ./"${i%/*}".mp3; done

Эти решения используют сопоставление с образцом оболочки расширение параметра для создания нового имени файла.

  $ {параметр% word} Удалить наименьший шаблон суффикса. Слово расширяется 
, чтобы получить узор. Затем расширение параметра 
приводит к параметру, причем наименьшая часть суффикса 
, соответствующая шаблону, удалена. 
 
2
14.10.2018, 03:38
1 ответ

Моей первой мыслью был сценарий-оболочка, в котором вы предоставляете доступ sudo к этому сценарию, а затем выполняете проверку параметра -в этом сценарии.

username ALL=/usr/local/sbin/shutdown-wrapper

А потом что-то подобное для обёртки -выключения:

#!/bin/sh

case $1 in
  *[!0-9]*) echo Invalid; exit 2;;
esac

if [ "$1" -ge 180 ]
then
  /usr/sbin/shutdown +"$1"
else
  echo Invalid
  exit 2
fi

... и попросите пользователя вызвать sudo /usr/local/sbin/shutdown-wrapper N, где N — количество минут.

Другой вариант — расшифровать, используя диапазоны символов из раздела Подстановочные знаки справочной страницы sudoers:

username ALL=(ALL:ALL) /usr/sbin/shutdown +18[0-9], \
                       /usr/sbin/shutdown +19[0-9], \
                       /usr/sbin/shutdown +[2-9][0-9][0-9], \
                       /usr/sbin/shutdown +[1-9][0-9][0-9][0-9]*

Здесь указаны минуты со 180 по 189, со 190 по 199, с 200 по 999, а затем любое (числовое или иное! ), который начинается как минимум с 4 цифр, первая из которых не может быть нулевой. Это допустило бы недопустимые временные диапазоны, такие как /usr/sbin/shutdown +9999jeff, что просто привело бы к ошибке синтаксического анализа изshutdown:

Failed to parse time specification: +9999jeff

2
27.01.2020, 22:08

Теги

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