Как отключить requiretty для единственной команды в sudoers?

Если Ваша система имеет shuf, можно использовать это вполне удобно (даже обрабатывающий ужасные имена файлов):

shuf -zen200 source/* | xargs -0 mv -t dest

Если Вы не имеете shuf но имейте a sort это берет -R, это должно работать:

find source -type f -print0 | sort -Rz | cut -d $'\0' -f-200 | xargs -0 mv -t dest
46
19.06.2013, 12:25
3 ответа

Можно переопределить настройку по умолчанию для опций такой как requiretty для определенного пользователя или для определенной команды (или для определенного выполнения поскольку пользователь или хоста), но не для определенной команды при выполнении как определенный пользователь.

Например, принятие этого requiretty установлен в опциях по умолчанию компиляции, следующем sudoers файл позволяет обоим artbristol и bob выполниться /path/to/program как базируются из сценария. artbristol потребности никакой пароль, тогда как bob должно быть, придется ввести пароль (по-видимому, tty_tickets выключено и bob введенный его пароль на некотором терминале недавно).

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

Если Вы хотите изменить настройки для команды с определенными аргументами, необходимо использовать псевдоним команды (это - ограничение синтаксиса). Например, следующий фрагмент позволяет artbristol работать /path/to/program --option в сценарии, но нет /path/to/program с другими аргументами.

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
56
27.01.2020, 19:34

Что-то вроде этого:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty
31
27.01.2020, 19:34
  • 1
    Это могло бы работать в /etc/sudoers но, кажется, не работает в a /etc/sudoers.d/ неработающие ссылки –  8bitjunkie 14.11.2015, 02:33
  • 2
    Если это имеет значение, для меня, это редактирование действительно работало при добавлении к a /etc/sudoers.d/ файл. CentOS 7.1 –  John Erck 05.08.2016, 19:17

Я обнаружил, что он отлично работает для меня, используя файл в /etc/sudoers.d . Проверить это довольно просто.

Сначала я создал /etc/sudoers.d/01build с содержанием:

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

Затем проверил, что он работает:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

Затем я изменил /etc/sudoers.d/ 01build и удалил строку Defaults: , после чего я получил:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
4
27.01.2020, 19:34

Теги

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