LINUX.ORG.RU
ФорумAdmin

Монтирование через sudo

 ,


0

2

Добрый день! Нужно примонтировать токен по скрипту, в скрипте команда:

sudo usbip attach -r 192.168.13.41 -b 1-1

в судорезе указываем

user   ALL=(ALL) NOPASSWD: /home/user/usb.sh

при запуске скрипта заставляет вводить пароль

если указываем

user ALL=(ALL) NOPASSWD: ALL

то даёт выполнить, но это ни есть безопасно, дав ему творить всё что захочется


А что в sudoers можно прописать конкретные программы, которым sudo будет доступен без пароля?

xmikex ★★★★
()
Ответ на: комментарий от utanho

а без него посылает нафик и не даёт смонтировать

Dim0n_
() автор топика
Ответ на: комментарий от xmikex

Попробуйте убрать (ALL). По-моему оно лишнее.

user   ALL=NOPASSWD: /home/user/usb.sh

Ещё более точно попробуйте так (это рабочий вариант из моего конфига):

Cmnd_Alias USBSH=/home/user/usb.sh
user ALL=NOPASSWD: USBSH
unDEFER ★★★★★
()
Ответ на: комментарий от xmikex

тут будет юзер запускать как ярлык программы, ему консолька не нужна)) без судо дело не пойдёт

Dim0n_
() автор топика
Ответ на: комментарий от unDEFER

Я так понимаю вам надо указать путь к usbip а не к usb.sh.

unDEFER ★★★★★
()
Ответ на: комментарий от Dim0n_

Я просто для проверки что делает ваш конфиг sudoers. Как шаг на пути к желаемому результату.

unDEFER ★★★★★
()
Ответ на: комментарий от Dim0n_

так что в скрипте судо палюбасу надо

Dim0n_
() автор топика
Ответ на: комментарий от Dim0n_

sudo: usb.sh: command not found

Ну это вы не правильно sudo запускаете. Я же не знаю по какому пути он у вас и есть ли он в $PATH. sudo ./usb.sh наверное.

unDEFER ★★★★★
()

можно прописать всю команду вместе с параметрами в sudoers на беспарольный запуск.

user   ALL=(ALL) NOPASSWD: /usr/bin/usbip attach -r 192.168.13.41 -b 1-1

и тогда будет беспарольно запускаться только данная строчка $ sudo usbip attach -r 192.168.13.41 -b 1-1
запуск usbip с другими параметрами будут обрабатываться другими правилами, т.е. будет парольным

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 4)
Ответ на: комментарий от unDEFER

а кто его знает подвожу итоги:

команда в скрипте sudo usbip attach -r 192.168.13.41 -b 1-1

и судорес sudo visudo

sisastra ALL=(ALL) NOPASSWD: /usr/bin/usbip

скрипт работает, спасибо!

Dim0n_
() автор топика
Ответ на: комментарий от Dim0n_

если тебя устраивает что sudo usbip с любыми параметрами теперь запускается от имени root без пароля - то ок :)

pfg ★★★★★
()
Ответ на: комментарий от firkax

А без рута есть другие технологии монтирования? а то тут все серты от всех юзеров вылезут у каждого юзера, даже если запускать монтирование по потребности, а не по автозапуску в сессию

Dim0n_
() автор топика
Ответ на: комментарий от Dim0n_

все токены попадают при рутовском маунте в текущем пользователе /dev/bus/usb/005 и имя файла -005

Dim0n_
() автор топика

usbip тоже добавь в sudoers. А скрипт как раз можешь оттуда убрать.

Dog ★★★
()
Последнее исправление: Dog (всего исправлений: 2)
Ответ на: комментарий от einhander

истиноТруЮниксВейно $ echo %пароль от рут% | su траляля
ну или правоверный вариант от firkax - написать прогу на си, скампелять и повесить на бинарь suid.

pfg ★★★★★
()
Ответ на: комментарий от einhander

Насчёт жертвы я имел ввиду то, что он, будучи уже ментально повреждён sudo-идеологией, пытался выдать рутовые права скрипту в $HOME. Последствия очевидны: скрипт редактируется в дальнейшем как угодно, и через него выполняется что угодно. Выдача таких прав usbip, посоветованная кем-то позже, немногим лучше: этим выдаются права на все действия, которые может сделать эта программа, а для этого надо как минимум их всех внимательно просмотреть, чтобы удостовериться, что среди них нет ни одного, которое можно использовать для незапланированной вредоносной деятельности.

Да, единственный нормальный вариант это писать обёртку с suid-root. Обёртка должна проверять, что именно этот набор аргументов допустим для запросившего это действие юзера (getuid() для suid-прог возвращает uid запустившего), и только после этого делать нужное действие. Ну или проще: если разрешённый вариант аргументов только один, пусть обёртка сразу его и вызывает а своих входных аргументов не имеет).

sudo тоже может выполнять роль такой обёртки, но его методы проверки (строковое сравнение команды с шаблонами) плохие, сравнивать надо не строки а их функциональное содержание.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от einhander

Ну, вместо suid на бинарь можно повесить CAP_NET_ADMIN, в отличии от запуска скрипта через sudo.

Не секьюрно.

Безопасность — это миф. И suid на бинарь не создаёт проблемы, проблемы создают ошибки в этом бинаре, которые ещё надо найти. Одно дело общераспространённые бинарники Линукс дистрибутивов, а другое дело уникальный бинарник, исходники от которого припрятаны.

А насчёт «жертвы sudo» согласен. ТС запускал скрит через sudo и в сам скрипт пихал вызов usbip через sudo. Ubuntu повредела мозг людям, они теперь везде sudo пихают.

mky ★★★★★
()
Ответ на: комментарий от pfg

это последствия употребления тяжелых наркотиков? Пароль через эхо в скрипте в явном виде писать. Вот это трушность! Вот это юниксвей!

SpaceRanger ★★
()
Ответ на: комментарий от mky

Ну, вместо suid на бинарь можно повесить

Который слетит при следующем обновлении пакета.

Безопасность — это миф

Абсолютная безопасность - миф.

они теперь везде sudo пихают.

Ехал sudo, через sudo

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от einhander

Сейчас у файла есть ambient capabilities, поэтому CAP_NET_ADMIN можно ставить на простой самописный бинарь, который будет только вызывать usbip с нужным параметрами и ничего другого не делать.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.