Получение синтаксической ошибки при использовании «source/some/path/to/file» внутри файла sudoers

У меня есть пользователь abc, которому я хочу дать очень ограниченные разрешения. Одним из них является «abc», который должен иметь возможность исходить из файла, но не читать его. Итак, я сделал root владельцем этого файла и пытаюсь предоставить доступ sudo этому пользователю «abc», чтобы он мог его получить.

abc ALL = (root) NOPASSWD: source /file/path

Когда я пишу это в файл /etc/sudoers, я получаю синтаксическую ошибку.

Я узнал, что «источник» — это встроенная функция, а не программа, которую можно использовать в файле sudoers. Если да, то есть ли другой выход из моей проблемы?


person Abhishek Sharma M    schedule 08.01.2019    source источник
comment
должен иметь возможность получить файл, но не читать его не имеет смысла, у вас должен быть доступ на чтение, чтобы иметь возможность получить файл. Пожалуйста, покажите точное сообщение об ошибке и обстоятельства, при которых вы получили ошибку. Когда я пишу вышеприведенное в файл /etc/sudoers, я получаю синтаксическую ошибку is ambiguous, как вы это пишете?   -  person cdarke    schedule 08.01.2019
comment
Я пишу это с помощью visudo. Я получаю сообщение об ошибке: /etc/sudoers: синтаксическая ошибка рядом со строкой 116.   -  person Abhishek Sharma M    schedule 08.01.2019
comment
must beable to source a file but not read it Это невозможно. source встроен в bash, его нельзя передать в sudo. Вы можете создать оболочку, которая при выполнении выведет рассматриваемый файл.   -  person KamilCuk    schedule 08.01.2019
comment
@AbhishekSharmaM: вы можете указать команду как, например, /bin/bash -c "source /file/path", хотя я не понимаю, почему вы просто не запускаете скрипт без использования встроенной source, но, конечно, это решать вам. Однако я не думаю, что это ВАША ошибка исчезнет, ​​потому что вы сказали, что получаете синтаксическую ошибку в файле sudoers, и это означает, что sudo даже не пытается вызвать ваш (ошибочный ) исходный код. Поскольку строка, которую вы разместили, не является синтаксически неправильной, ошибка должна быть где-то еще. Проверьте, например, окончания строк в файле.   -  person user1934428    schedule 08.01.2019


Ответы (1)


Вы должны создать файл (здесь я назову его the_sourcerer.sh) с исходной командой

#!/bin/bash    
source /file/path

Убедитесь, что вы запустили следующее, прежде чем пытаться его использовать

chmod +x /path/to/the_sourcerer.sh

Затем добавьте исправленную строку в /etc/sudoers

abc ALL = (root) NOPASSWD: /path/to/the_sourcerer.sh
person Aidan Lovelace    schedule 08.01.2019