Linux запуск от имени администратора скрипт

Содержание
  1. Запуск скрипта от имени суперпользователя
  2. Re: Случилась беда с KRoN73 🙁
  3. Как запустить sh с правами root через suid
  4. Re: Как запустить sh с правами root через suid
  5. Re: Как запустить sh с правами root через suid
  6. Re: Как запустить sh с правами root через suid
  7. Re: Как запустить sh с правами root через suid
  8. Re: Как запустить sh с правами root через suid
  9. Re: Как запустить sh с правами root через suid
  10. Re: Как запустить sh с правами root через suid
  11. Re: Как запустить sh с правами root через suid
  12. Re: Как запустить sh с правами root через suid
  13. Re: Как запустить sh с правами root через suid
  14. Re: Как запустить sh с правами root через suid
  15. Re: Как запустить sh с правами root через suid
  16. Re: Как запустить sh с правами root через suid
  17. Re: Как запустить sh с правами root через suid
  18. Re: Как запустить sh с правами root через suid
  19. Re: Как запустить sh с правами root через suid
  20. Re: Как запустить sh с правами root через suid
  21. Re: Как запустить sh с правами root через suid
  22. Re: Как запустить sh с правами root через suid
  23. Re: Как запустить sh с правами root через suid
  24. Re: Как запустить sh с правами root через suid
  25. Re: Как запустить sh с правами root через suid
  26. Re: Как запустить sh с правами root через suid
  27. Re: Как запустить sh с правами root через suid
  28. Re: Как запустить sh с правами root через suid
  29. Re: Как запустить sh с правами root через suid
  30. Re: Как запустить sh с правами root через suid
  31. Re: Как запустить sh с правами root через suid
  32. Права суперпользователя Linux
  33. Права суперпользователя в Linux
  34. Вход под суперпользователем
  35. Переключение на суперпользователя в терминале
  36. Получение прав root без переключения
  37. Графически приложения от имени суперпользователя
  38. Выводы

Запуск скрипта от имени суперпользователя

Подскажите программу для реализации следующего. Есть скрипт, он должен запускаться от суперпользователя, так как выполняет некоторое привилегированное действие. Нужно что бы этот скрипт мог выполнить определенный пользователь от имени суперпользователя без ввода пароля и без прав на просмотр и редактирование самого скрипта. И понятно что только этот скрипт. Очевидно проблема решается написанием простой программы за час, но чудится мне что уже кто-то изобрел сей велосипед.

Очевидно проблема решается написанием простой программы за час

ты только что изобрёл 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 лет.

чтобы заслужить такое предательство.

Какое предательство? Они вам клялись в верности? С чего биомусор считает что их бывшие колонии должны быть их вечными рабами? Совок давно растерял свои колонии. Всё, забудьте. Но вы вместо того чтобы заниматься своими внутренними проблемами, повышать качество своей жизни, продолжаете жить в говне и при этом всё своё внимание уделять тому, как живут граждане другой страны. Сидит биомусор за телевизором, жрёт пустую гречку, т.к. им вождь запретил нормальные продукты, а по телевизору каждый выпуск новостей только о том как весело скачут хохлы, пиндосы совсем офигели и в конце вождь обещает что всё будет хорошо.

Так что не жди что такие как я будем каяться.

Да всем насрать. Восстановите себе железный занавес, весь мир вздохнёт с облегчением. Я очень надеюсь что Пути всё же в скором времени вас отрежет от цивилизованного мира, отключит от сети, оставив только внутренний чебурнет. А когда решит уйти на пенсию, оставит после себя Кадырова в качестве преемника. А будете ли вы каяться, пофиг. История давно показала что вы настолько ублюдочная биомасса что никогда не раскаиваетесь в плохих поступках.

Читайте также:  Включение удаленного рабочего стола windows 10 через реестр

Но время всё раставляет по местам и вы не зря живёте так убого. Впрочем, несмотря на это, всё же живёте лучше чем заслуживаете. Хотя, какие там у вас перспективы?

Мы будем воевать (и поддерживать) за нейтральный военный статус Украины.

«Мы» это кто? Нет никаких вас. Надо будет, тебя или твоих ублюдочных детей бросят пушечным мясом в горячую точку, ничего у тебя не спрашивая. И воевать вы будете не за что-то, как ты тут пафосно пишешь, а за своего хозяина и его друзей. Пиздоболов таких как ты дохрена в сети, а на донбас поддерживать «Русский Мир» отправить некого. Так говоришь «мы», будто у вас патриотизм какой-то есть. Существование принудительной службы в армии как бы намекает что патриотизмом и не пахнет, на деле всё только исподтишка.

PS: Не украинец, если что. Вы не только им навредили.

Источник

Как запустить 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:

Читайте также:  Обои для windows 1980

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 толку мало.

Источник

Права суперпользователя Linux

Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.

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

В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.

Права суперпользователя в Linux

Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:

  • Читать, писать и изменять атрибуты файлов в своем каталоге
  • Читать, писать, изменять атрибуты файлов в каталоге /tmp
  • Выполнять программы там, где это не запрещено с помощью флага noexec
  • Читать файлы, для которых установлен флаг чтения для всех пользователей.

Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.

Вход под суперпользователем

Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.

Вы получите полноценное окружение root с возможностью выполнять все действия, но такой способ очень непрактичный, так как вы теряете все преимущества использования графического интерфейса.

Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.

Читайте также:  Do windows phone have flash player

Переключение на суперпользователя в терминале

Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:

$ su опции пользователь

Вот ее основные опции:

  • -c, —command — выполнить команду
  • -g, —group — установить основную группу пользователя (только для root)
  • -G —supp-group — дополнительные группы пользователя (только для root)
  • -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, —preserve-environment — сохранить переменные окружения
  • -s, —shell — задать оболочку для входа
  • —version — отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:

Теперь смотрим что получилось:

whoami
pwd
echo $VAR
echo $PATH
exit

Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.

Теперь используем вход в режиме логина:

И повторим ту же комбинацию:

whoami
pwd
echo $VAR
echo $PATH
exit

Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:

Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:

Более подробно о команде su вы можете почитать в отдельной статье. Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

Получение прав root без переключения

Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:

$ sudo опции команда

  • -b — выполнять запускаемую утилиту в фоне
  • -E — сохранить переменные окружения
  • -g — запустить команду от группы
  • -H — использовать домашний каталог
  • -l — показать список полномочий в sudo для текущего пользователя
  • -r — использовать для команды роль SELinux
  • -s — использовать оболочку
  • -u — запустить команду от имени пользователя, если не задано используется root
  • -i — не выполнять команду, а войти в оболочку, эквивалентно su —

Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:

Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.

Графически приложения от имени суперпользователя

Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.

Просто наберите gksu или kdesu, а затем нужную команду:

Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:

Программа запросит пароль, уже в графическом окне, а потом откроется файловый менеджер.

Выводы

Вот и все. Теперь вы знаете как получить права суперпользователя в Linux, знаете как использовать команду sudo и в чем разница sudo или su. Теперь программы, требующие дополнительных привилегий в системе, не вызовут у вас проблем. Если остались вопросы, пишите в комментариях!

Источник

Оцените статью