Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: bash suid  (Прочитано 1002 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
bash suid
« : 23 Марта 2014, 15:15:11 »
Как разрешить bash скрипту выполнение от имени суперпользователя? Почитав веб, понял, что ядро не позволяет скриптам SUID, из-за проблем безопасности. Но должен же быть какой-то способ запустить скрипт с SUID.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: bash suid
« Ответ #1 : 23 Марта 2014, 17:24:32 »
Первое, что подумал - сделать suid'ную копию bash с другим именем,
например, bash_s и запускать им: "bash_s имя_скрипта".
Пётр.

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash suid
« Ответ #2 : 23 Марта 2014, 17:44:52 »
Не работает. Почему я не могу запустить копию bash?
[42]user@comp:/tmp/mytemp$ ls -al
итого 1176
drwxrwxr-x  2 user user   4096 Мар 23 15:43 .
drwxrwxrwt 18 root root 229376 Мар 23 15:41 ..
-rwsr-xr--  1 root root 959120 Мар 23 15:42 bash
-rwsr-xr--  1 root root     21 Мар 23 15:43 script.bash
[43]user@comp:/tmp/mytemp$ ./bash script.bash
bash: ./bash: Отказано в доступе
[44]user@comp:/tmp/mytemp$ cat script.bash
echo $UID
echo $EUID
[45]user@comp:/tmp/mytemp$
« Последнее редактирование: 23 Марта 2014, 20:27:49 от hon »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: bash suid
« Ответ #3 : 23 Марта 2014, 19:10:47 »
Действительно, не работает. Даже если установить на bash_s оба бита:
chmod 6755 bash_s
и внести его в группу users, в которую у меня входит пользователь,
то не работает. И даже если собственником скрипта в каталоге пользователя
сделать root, то и при этом не работает. Т.е. bash_s, принадлежащий root,
не может запустить с правами root принадлежащий root скрипт, если его
запускает пользователь.
Пока не знаю, в чём дело.

Кстати, можно либо в 1-й строке этого скрипта написать
#!/bin/bash_s
и запускать его просто, как любой исполнимый,
либо вообще убрать эту строку, т.к при запуске файла
с последовательностью команд способом
bash имя_файла
она не нужна.

Пользователь решил продолжить мысль 23 Марта 2014, 19:56:45:
Не может запустить - я неправильно выразился. Я имел в виду,
что не может выполнить команды в скрипте или файле,
требующих прав root.
« Последнее редактирование: 23 Марта 2014, 19:56:45 от Peter_I »
Пётр.

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash suid
« Ответ #4 : 23 Марта 2014, 20:29:45 »
Я не могу даже bash запустить:
user@comp:/tmp/mytemp$ ls -al
итого 1176
drwxrwxr-x  2 user user   4096 Мар 23 18:26 .
drwxrwxrwt 19 root root 229376 Мар 23 18:25 ..
-rwsr-xr--  1 root root 959120 Мар 23 15:42 bash
-rwsr-xr--  1 root root     28 Мар 23 18:25 script.bash
user@comp:/tmp/mytemp$ cat script.bash
#!bash
echo $UID
echo $EUID
user@comp:/tmp/mytemp$ ./bash
bash: ./bash: Отказано в доступе
Если разрешить запуск всем, то все равно:
user@comp:/tmp/mytemp$ sudo chmod +x * && ls -al
итого 1176
drwxrwxr-x  2 user user   4096 Мар 23 18:26 .
drwxrwxrwt 19 root root 229376 Мар 23 18:28 ..
-rwsr-xr-x  1 root root 959120 Мар 23 15:42 bash
-rwsr-xr-x  1 root root     28 Мар 23 18:25 script.bash
user@comp:/tmp/mytemp$ ./bash
bash-4.2$ whoami
user
bash-4.2$ exit
exit
user@comp:/tmp/mytemp$

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: bash suid
« Ответ #5 : 23 Марта 2014, 20:35:02 »
Может Вы подробно объясните цель всего действа (наверняка есть более простой способ достичь желаемого результата…)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash suid
« Ответ #6 : 23 Марта 2014, 20:39:07 »
Цель: иногда нужно писать скрипты, которые поработают и выключат компьютер. Можно запускать их через sudo, но тогда опасность каждой ошибки в скрипте возрастет.
Решил сделать два скрипта: один принадлежит суперпользователю с SUID, который просто выполняет poweroff.
Другой — выполняет нужные мне действия и в конце запускает скрипт с SUID.

Меня больше интересует способ решить проблему, а почему эта проблема происходит. Почему я не могу запустить копию bash, на которой стоит SUID?

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: bash suid
« Ответ #7 : 23 Марта 2014, 20:41:40 »
Так есть же команды выключающие компьютер без судо. Они некрасивые(длинные просто), но все же есть.

Пользователь решил продолжить мысль 23 Марта 2014, 20:47:47:
Можно например в одном скрипте запустить два паралельных процесса, второй будет проверять наличие второго в списке процесов каждую минуту.

Типа вот так:
Создали файл приманку
sudo sh scriptPower.sh &
Действия от имени пользователя.

По окончанию удалил файл приманку.

В scriptPower.sh

пишем типа такого:

sudo shutdown -h 10 &
if [ Файл приманка есть?]
    shutdown -c
    shutdown -h 10 &
    sleep 1m
fi

После исполнение скрипта, комьютер выключится через 10 минут, после срабатывания скрипта полностью.
« Последнее редактирование: 23 Марта 2014, 20:47:47 от JmAbuDabi »
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: bash suid
« Ответ #8 : 23 Марта 2014, 20:55:46 »
Что в ней длинного и/или некрасивого?gnome-session-quit --power-off --no-promptПросто Вы эту имели ввидуdbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: bash suid
« Ответ #9 : 23 Марта 2014, 21:02:23 »
Что в ней длинного и/или некрасивого?gnome-session-quit --power-off --no-promptПросто Вы эту имели ввидуdbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Просто длинная и не запомнишь с первого раза)
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash suid
« Ответ #10 : 23 Марта 2014, 21:05:16 »
Они будут работать на Ubuntu Server без графики?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: bash suid
« Ответ #11 : 23 Марта 2014, 21:08:37 »
Так разрешите выключать комп без пароля через /etc/sudoers
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash suid
« Ответ #12 : 23 Марта 2014, 21:21:03 »
Azure, cпасибо за sudoers.

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.