Свежие обсуждения
Компьютеры

Нужен ответ линуксоида.

1 3 5

Сделал так. Установил SUID:
chmod u+s /sbin/shutdown

Потом создал на столе ярлыки для Reset и Off sutdown -r now и -h now
Всё работает.
--------------------------
Однако, вопрос всё ещё остался. Как в скрипте залогиниться под рутом? То есть как в скрипте прописать залогинивание рута, чтоб потом все действия происходили с его правами?

 

>Как в скрипте залогиниться под рутом? То есть как в скрипте прописать залогинивание рута, чтоб потом все действия происходили с его правами?

А и не надо этого делать!
Штатного способа для этого, на сколько я знаю, нет - это противоречит философии unix.
Не стоит делать из линукса винду.
SUID flag c "/sbin/shutdown" стоит снять, а вместо этого настроить sudo. Без пароля, или лучше с паролем - правила техники безопасности в компьютерах лучше соблюдать.
Настройка sudo - нужно отредактировать файл /etc/sudoers. Самое лучшее набрать от root:
visudo
откроется консольный текстовый редактор по умолчанию (у меня nano)
затем добавить строчку (поправите имя пользователя):
username localhost = NOPASSWD: /sbin/shutdown
или с паролём:
username localhost = /sbin/shutdown
После этого можно использовать "sudo /sbin/shutdown" от указанного пользователя - а не как в случае с SUID, что любой пользователь, с минимальными привилегиями, может выключить команду от рута.
Вместо "shutdown -r now" и "shutdown -h now" можно использовать /sbin/reboot и /sbin/halt
Вот так:
username localhost = NOPASSWD: /sbin/reboot,/sbin/halt
Если вы хотите выполнять весь скрипт от рута, то добавьте в sudo весь скрипт,
если пару команд в скрипте, то только их,
если если какую-то часть - попробуйте выделить её в отдельный файл - и настроить sudo соответственно.
Для редактирования файлов от рута есть sudoedit.
Для справки:
по самой sudo:
man sudo
по формату файла /etc/sudoers
man sudoers

 

Предыдущее замечание взял на заметку.

Проблема вылезла, не понял почему.

Раньше при запуске от юзера Харддрейк нормально запускался и работал. Теперь ничего не происходит
[vlad@localhost ~]$ /usr/sbin/harddrake2
[vlad@localhost ~]$

В менеджере процессов на секунду появляется и пропадает. Если запускать от рута, то нормально работает.

Ради эксперемента пробовал харддрейку присваивать бит SUID, тогда он вообще перестаёт запускаться
[root@localhost ~]# /usr/sbin/harddrake2
Setuid/gid script is writable by world.

Возвращаю обратно, работает только от рута. Что делать?
----------------
Та же проблема с /usr/bin/rpmdrake

 

Гм... для этих программ sudo, наверно, был настроен по умолчанию...

А как Вы редактировали /etc/sudoers? С помощью visudo? Ничего лишнего не удалили?
Судя по http://wiki.mandriva.com/ru/Docs/Basic_tasks/Installing_and_removing_software (сам не Mandriva пользуюсь), для запуска rpmdrake нужны права администратора.

Можно посмотреть Ваш /etc/sudoers?
Ну и ёщё сделайте:
ls -l /usr/sbin/harddrake2
ls -l /usr/bin/rpmdrake
и пришлите их вывод

 

aem: А как Вы редактировали /etc/sudoers?
Да, собственно, никак. Просто посмотрел что внутри. А вообще у меня есть kate (kate /etc/sudoers)

aem: для запуска rpmdrake нужны права администратора
Это я в курсе. Ведь раньше он при запуске просил пароль (если не вводить, то работал на просмотр только), а теперь ничего не происходит.

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Defaults syslog=auth
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now

[root@localhost vlad]# ls -l /usr/sbin/harddrake2
-rwxrwxrwt 1 root root 29064 Мар 30 2007 /usr/sbin/harddrake2* (эти буквы зелёные /usr/sbin/harddrake2)

[root@localhost vlad]# ls -l /usr/bin/rpmdrake
lrwxrwxrwx 1 root root 27 Апр 11 14:18 /usr/bin/rpmdrake -> ../../usr/bin/consolehelper* (это синее /usr/bin/rpmdrake , а это красное ../../usr/bin/conehelper)

Если запускать этот /usr/sbin/rpmdrake , то запускается в режиме чтения без возможности ввеси пароль.

 

Так...
Сразу, о редактировании /etc/sudoers. ОЧЕНЬ не рекомендуется редактировать его чем-то кроме visudo (от root-а в консоли), visudo создаст временную копию файла, после сохранения и выхода проверит её - и только тогда перезапишет /etc/sudoers.

Коротко о проблеме:
Похоже, что Вы просто запутались, надо запускать не /usr/sbin/rpmdrake (этот пароля не спросит) а /usr/bin/rpmdrake или просто rpmdrake

Подробнее:
/usr/bin/rpmdrake это символическая ссылка на /usr/bin/consolehelper
В общем, ссылки - это аналог shortcut в виндовс, только лучше. Если интересно могу,потом, объяснить подробней.
Но в этом случае все хитрее - consolehelper (с помощью /usr/sbin/userhelper) запускает прогу из /usr/sbin/ с таким же именем файла(rpmdrake) какое у ссылки (в нашем случае выходит /usr/sbin/rpmdrake) предварительно проверив пароль.

Признаться, я этого не знал. Всё sudo и консоль... по-другому привык. У меня таких и не установлено.

И ещё, подозреваю, что перезагрузить и выключить компьютер можно командами reboot и halt
(/usr/bin/reboot и /usr/bin/halt), уже настроенными через, всё тот же, consolehelper.

Вот тут коротко описывается как такое настраивать, правда для другого дистрибутива:
http://www.rhd.ru/docs/manuals/enterprise/RHEL-AS-2.1-Manual/custom-guide/s1-acc...

 

aem: /usr/bin/rpmdrake это символическая ссылка на /usr/bin/consolehelper
Я про это догадывался, символ ярлыка файл имеет ибо.
Про остальное почитаю...

 

Снова проблемы и гугл не помогает.
Как отключить иксы в debian lenny lxde?
Но чтоб потом можно было снова включть.

 

Конкретно про ваш дистр не скажу, но в качестве стандартного хода загрузка в runlevel 3 (без иксов).

 

Detector: загрузка в runlevel 3 (без иксов).
Если бы я ещё знал что это значит...

Сделал немного криво, но сработало.

В папке /etc/rc2.d/

Переименовывал :
@S30gdm в @off30gdm

Иксы не стартовали.