- Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Re: Как запустить sh с правами root через suid
- Запуск скрипта от имени суперпользователя
- Re: Случилась беда с KRoN73 🙁
- Запуск скрипта sh в Linux
- Как работают скрипты
- Запуск скрипта sh в Linux
- Выводы
Как запустить sh с правами root через suid
Нужно чтобы программа с битом suid запустила скрипт с правами root, но sh не хочет с правами root запускаться, он всё равно запускается с правами пользователя.
Re: Как запустить sh с правами root через suid
> но sh не хочет с правами root запускаться, он всё равно запускается с правами пользователя.
Это как? Если запускать sh программой с рутовыми правами, то процесс sh должен по идее уначледовать права.
Я относительно недавно написал влосипед для генерации SUID’ных бинарников для запуска скриптов, может подойдёт:
Re: Как запустить sh с правами root через suid
Ссылки пока не смотрел, но вообще вот:
#!/bin/sh
mkdir /home/dim/lalala
mkdir /lalala
___________________________
#include
int main(int argc,char *argv[])<
execl(«/bin/sh»,»/bin/sh»,»/home/dim/Desktop/test/sh»,0);
>
________________________-
первая команда выполнилась, а вторая нет
Re: Как запустить sh с правами root через suid
командные сценирии под suid не работают. защита типа того, напиши на си обёртку
Re: Как запустить sh с правами root через suid
Я в программировании на сях под линух не силен, но могу посоветовать использовать аналог su, т.е. явно задать, что дочерний процесс ты запускаешь от рута.
Re: Как запустить sh с правами root через suid
и как его использовать, там ведь пароль вводить надо
Re: Как запустить sh с правами root через suid
а через sudo никак, да?
Re: Как запустить sh с правами root через suid
написать си обёртку, это значит переделать скрипт sh в си?
Re: Как запустить sh с правами root через suid
а как через судо? если судо запускать в suid программе на си, то требуется пароль.
Re: Как запустить sh с правами root через suid
NOPASSWD в sudoers
Re: Как запустить sh с правами root через suid
Я полагаю, скрипт с suid правами может запускать процессы от имени любого пользователя. Ведь в рутовом шелле su и sudo пароль не просят 🙂
Re: Как запустить sh с правами root через suid
да не нужно тебе это, не нужно! sudo можно и нужно запускать от пользователя, оно само поднимет привелегии запускаемого процесса до рутовых.
Re: Как запустить sh с правами root через suid
а потом нубы ноют про «мифы о безопасности линупса».
Re: Как запустить sh с правами root через suid
>да не нужно тебе это, не нужно!
С помощью судо можно запускать скрипты?
Re: Как запустить sh с правами root через suid
$ cat test.sh
#!/bin/sh
$ sh test.sh
denis
denis@laptop:
$ sudo sh test.sh
[sudo] password for denis:
root
Re: Как запустить sh с правами root через suid
да, лучше даже вот так :
$ chmod 755 test.sh
denis@laptop:
Re: Как запустить sh с правами root через suid
хорошо попробую дать разрешение на скрипт.
Re: Как запустить sh с правами root через suid
#!/bin/sh -p
так начинается твой скрипт
man bash (т.к. в линуксе /bin/sh это линк на /bin/bash)
If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the -p option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the SHELLOPTS variable, if it appears in the environment, is ignored,
and the effective user id is set to the real user id. If the -p option
is supplied at invocation, the startup behavior is the same, but the
effective user id is not reset.
Re: Как запустить sh с правами root через suid
>скрипт с suid
Я имел в виду «программа с suid-правами». И это было просто предположение.
>а потом нубы ноют про «мифы о безопасности линупса».
Это к чему?
Re: Как запустить sh с правами root через suid
Начинаю понимать как работает судо, похоже это то что нужно.
Re: Как запустить sh с правами root через suid
к тому что не есть хорошо раскидывать suid налево и направо. я в свое время наоборот оставлял этот бит только там где это действительно нужно было.
Re: Как запустить sh с правами root через suid
Поставил -p вроде заработало
Re: Как запустить sh с правами root через suid
Шо-то как-то оно не воркает.
[nnz@imp art]$ ls -al /usr/bin/rndcread
-rwsr-xr-x 1 root root 67 2009-06-29 12:41 /usr/bin/rndcread*
[nnz@imp art]$ cat /usr/bin/rndcread
#!/bin/sh -p
whoami
/usr/sbin/rndc -c /var/lib/named/etc/rndc.conf status
[nnz@imp art]$ rndcread
nnz
rndc: error: none:0: open: /var/lib/named/etc/rndc.conf: permission denied
rndc: could not load rndc configuration
Re: Как запустить sh с правами root через suid
Ну вообще я не так сделал. sh -p script
Re: Как запустить sh с правами root через suid
От обычного пользователя не прокатывает. А если через su или sudo, то -p нафиг не надо.
Re: Как запустить sh с правами root через suid
Re: Как запустить sh с правами root через suid
Нострадамус мод
Следующий вопрос будет, как сделать ldpreload к suid программе
Re: Как запустить sh с правами root через suid
Как страшно жить. 🙂
Спасибо, это был непростительный пробел в моем образовании.
Re: Как запустить sh с правами root через suid
вам в коде своем нужно еще сделать setuid(0); — от одного euid=0 толку мало.
Источник
Запуск скрипта от имени суперпользователя
Подскажите программу для реализации следующего. Есть скрипт, он должен запускаться от суперпользователя, так как выполняет некоторое привилегированное действие. Нужно что бы этот скрипт мог выполнить определенный пользователь от имени суперпользователя без ввода пароля и без прав на просмотр и редактирование самого скрипта. И понятно что только этот скрипт. Очевидно проблема решается написанием простой программы за час, но чудится мне что уже кто-то изобрел сей велосипед.
Очевидно проблема решается написанием простой программы за час
ты только что изобрёл sudo
Оно, конечно, похвально, что вот так от зубок отскакивает одно из реализаций решений для ТС-ов. Вот только это именно реализация, без понимания как оно делается, и не стадартная в мире юникс. Правильный ответ всё же — суидный враппер, который может делать а может не делать проверки и логи, что делает, например sudo, а может иметь гораздо более развесистый конфиг, что есть у sudo.
Я конечно дико извиняюсь, но ты сейчас пытаешься посоветовать ТСу для запуска скрипта из под рута написать собственный suid-wrapper? Потому что(поправь если я ошибаюсь), suid-бит на скриптах не работает.
И да, ТС просил готовую реализацию. sudo под это определение подходит. Если б ТС интересовался как оно в кишках работает — можно было бы и подсказать(в любой более-менее нормальной книги по UNIX/Linux об этом рассказывается), но у него несколько более прикладная задача(понятное дело — знать как оно в принципе работает не повредит, скорее наоборот — поможет избежать возможных проблем).
TL;DR: я тоже не во всем в восторге от sudo, но именно она эту задачу решает(правда скрипт придется запускать не как /path/to/script, а /path/to/interpreter /path/to/script — может ТСа это не устроит, но что гадать — пусть сам скажет?)
P.S. Фух, какое же я занудный с утра. Похоже надо накатить 🙂
sudo под это определение подходит
Наверное, вы не выспались? Я дал более полное объяснение и нисколько не запрещал использовать sudo, как одной из реализации решения задачи.
А, ну извини, видимо я неверно тебя понял.
создает скрыпт с нужными командами и делаем его исполняемым
вариант2: chmod +s
Я его тоже не понял, выглядело как критика )))
Re: Случилась беда с KRoN73 🙁
НАТО это опасная антироссийская военная организация, сильнейшая в мире.
Если так, то почему она не уничтожила вашу помойку в самый удобный момент, в начале 90х? Вместо этого зачем-то они стали помогать выжить. А ублюдочная помойка, нарастив жирок и встав на ноги, снова начала выпендриваться.
Так что факты говорят о том что к сожалению на самом деле никакая не антироссийская. К сожалению. Иначе бы биомусорки уже не было бы почти 20 лет.
чтобы заслужить такое предательство.
Какое предательство? Они вам клялись в верности? С чего биомусор считает что их бывшие колонии должны быть их вечными рабами? Совок давно растерял свои колонии. Всё, забудьте. Но вы вместо того чтобы заниматься своими внутренними проблемами, повышать качество своей жизни, продолжаете жить в говне и при этом всё своё внимание уделять тому, как живут граждане другой страны. Сидит биомусор за телевизором, жрёт пустую гречку, т.к. им вождь запретил нормальные продукты, а по телевизору каждый выпуск новостей только о том как весело скачут хохлы, пиндосы совсем офигели и в конце вождь обещает что всё будет хорошо.
Так что не жди что такие как я будем каяться.
Да всем насрать. Восстановите себе железный занавес, весь мир вздохнёт с облегчением. Я очень надеюсь что Пути всё же в скором времени вас отрежет от цивилизованного мира, отключит от сети, оставив только внутренний чебурнет. А когда решит уйти на пенсию, оставит после себя Кадырова в качестве преемника. А будете ли вы каяться, пофиг. История давно показала что вы настолько ублюдочная биомасса что никогда не раскаиваетесь в плохих поступках.
Но время всё раставляет по местам и вы не зря живёте так убого. Впрочем, несмотря на это, всё же живёте лучше чем заслуживаете. Хотя, какие там у вас перспективы?
Мы будем воевать (и поддерживать) за нейтральный военный статус Украины.
«Мы» это кто? Нет никаких вас. Надо будет, тебя или твоих ублюдочных детей бросят пушечным мясом в горячую точку, ничего у тебя не спрашивая. И воевать вы будете не за что-то, как ты тут пафосно пишешь, а за своего хозяина и его друзей. Пиздоболов таких как ты дохрена в сети, а на донбас поддерживать «Русский Мир» отправить некого. Так говоришь «мы», будто у вас патриотизм какой-то есть. Существование принудительной службы в армии как бы намекает что патриотизмом и не пахнет, на деле всё только исподтишка.
PS: Не украинец, если что. Вы не только им навредили.
Источник
Запуск скрипта sh в Linux
Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.
Но у новичков может возникнуть вопрос — как запустить скрипт в Linux, что для этого нужно сделать, что будет происходить и какие команды нужно выполнить. Но сначала нужно рассмотреть как работают скрипты и что такое исполняемость.
Как работают скрипты
В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
Запуск скрипта sh в Linux
Сначала рассмотрим пример небольшого sh скрипта:
#!/bin/bash
echo «Hello world»
Вторая строка — это действие, которое выполняет скрипт, но нас больше всего интересует первая — это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:
chmod ugo+x script.sh
Мы разрешаем выполнять запуск sh linux всем категориям пользователей — владельцу, группе файла и остальным. Следующий важный момент — это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:
Или полный путь от корня:
Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ — /usr/local/bin.
cp script.sh /usr/local/bin/script.sh
Теперь вы можете выполнить:
Это был первый способ вызвать скрипт, но есть еще один — мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:
А если нам нужно запустить скрипт на php, то выполните:
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
Даже запустить процесс linux не так сложно.
Выводы
Как видите, запуск скрипта sh в linux — это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!
Источник