LINUX.ORG.RU
Ответ на: комментарий от schizoid

Перловый скрипт владелец которого root лежит в домашней папке пользователя с правами -rwx--x--x
выполняю root-ом chmod o=x /home/user/file права те же и остаются!
Нужно чтобы скрипт запукался с правами root хотябы из какой папки.

Vlad-76 ★★★★
() автор топика

Скрипт = текстовый файл с первой строкой вида #!/путь/к/исполнителю/скрипта

Выполнение скрипта = запуск /путь/к/исполнителю/скрипта <путь/к/файлу/скрипта> <прочие параметры, переданные скрипту>

Отсюда видим, что без права на чтение запустить скрипт нельзя. Лучше оставьте у файла права на всё только для владельца (опционально - группы), а пользователю разрешите запуск через sudo.

AITap ★★★★★
()
Ответ на: комментарий от Vlad-76

с правами -rwx--x--x
выполняю root-ом chmod o=x /home/user/file права те же и остаются!

Всё правильно. Он выполняется от пользователя? Пользователь читать его может?

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

Ой, другой аноним выше уже расписал. Ну да ладно.

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

Знаешь, shc по сути создает самораспаковывающийся зашифрованный файл, который запускает /bin/sh -c. Извлечь передаваемый шелу для выполнения текст — задача решаемая.

В любом случае это не запуск скрипта, а скомпилированного бинарника.

baka-kun ★★★★★
()

В sudoers добавляем в соответствующие секции

User_Alias SSZB_USER = твой_юзернейм
Cmnd_Alias SSZB_COMMAND = /путь/до/скрипта
Defaults: SSZB_USER env_reset
SSZB_USER ALL = (юзернейм_владельца_скрипта) NOPASSWD SSZB_COMMAND
Потом вызываешь
sudo -u юзернейм_владельца_скрипта /путь/до/скрипта
Если будешь использовать nano вместо vi, не забудь -w.

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

Естественно, прежде всего в твоей системе должно быть установлено sudo.

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

Супер! через sudo все работает как надо
поправочка

SSZB_USER ALL = (юзернейм_владельца_скрипта) NOPASSWD: SSZB_COMMAND

не хватало ":"
и на
Defaults: SSZB_USER env_reset

sudo тоже ругается (":" удалял, без толку), закомментил всю строку

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от Vlad-76

не хватало ":"

Да, это я проглядел.

sudo тоже ругается (":" удалял, без толку)

Там не должно быть пробелов вокруг двоеточия,

Defaults:SSZB_USER env_reset

Deleted
()
Ответ на: комментарий от Vlad-76

sudo выполняет указанную команду в том шелле, из которого она вызвана, пользовательский шелл может быть изменён персональными настройками, поэтому, чтобы команде, выполняющейся от другого пользователя, достался максимально чистый и дефолтный шелл во избежание того, что что-то пойдёт не так, оттуда выбрасываются все лишние определения. Если нужно наоборот, оставить что-то в окружении из того шелла, который вызвал sudo, то в sudoers после env_reset добавляются соответствующие правила наподобие

Defaults:SSZB_USER env_keep += MY_IMPORTANT_VAR
и теперь можно спокойно вызывать
MY_IMPORTANT_VAR=foo sudo -u username command
MY_IMPORTANT_VAR сохранит своё значение для выполняемой команды. Можно применять для локалей например.

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