Я пытаюсь предоставить ограниченный доступ к определенным функциям, используя ссылки, bash-скрипты и SUID. SUID-скрипт не запускается с root-доступом

РЕДАКТИРОВАТЬ: этот скрипт с включенным битом Sticky не может записывать в корневой файл, похоже, аналогичная проблема

РЕДАКТИРОВАТЬ: Как я могу использовать SetUID в сценарии оболочки для запуска от имени пользователя без полномочий root? тоже очень похоже.

У меня есть скрипт, назовем его read.sh. У меня есть файл, назовем его секретным.

# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>

Я что-то пропустил? Я думал, что бит SUID заставил скрипт работать как владелец? Когда я запускаю следующее

# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>

Что здесь происходит и как мне заставить его работать так, как я хочу? Я хочу, чтобы обычные пользователи выполняли определенный скрипт с полным доступом root. (Я думал, что это то, что сделал бит suid)

ПОЖАРНАЯ БАТА

1 ответ
1

Установить судо apt install sudo

Сделать соответствующих пользователей частью какой-либо группы groupadd group && usermod -g group user

Добавьте следующее в /etc/sudoers %group (ALL)=(root:root) NOPASSWD:/path/to/script.sh

Добавьте псевдоним в .bashrc alias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc

Все члены группы теперь могут запускать рассматриваемый скрипт от имени пользователя root.

Ответ бесстыдно украден из Как я могу использовать SetUID в сценарии оболочки для запуска от имени пользователя без полномочий root? (пользователь9517)

ПОЖАРНАЯ БАТА

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *