LINUX.ORG.RU
ФорумAdmin

Почему не работает sudoers

 , ,


1

1

Добрый день!
Хотел разрешить пользователю монировать файловую систему и перегружать компьютер. Добавил в /etc/sudoers следующее

Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
andrew ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS
andrew ALL=(ALL) NOPASSWD: /bin/mount, /sbin/mount.crypt, /sbin/mount.ecryptfs, /sbin/mount.ntfs-3g, /bin/umount

и не получил желаемого система динамит, говорит:

andrew@andrew-G750JS:~$ reboot
reboot: Необходимо быть суперпользователем
andrew@andrew-G750JS:~$

Почему не работает?


2 варианта действий:
1)

sudo reboot
2)
alias reboot=«sudo reboot»
reboot

snaf ★★★★★ ()
Последнее исправление: snaf (всего исправлений: 1)
Ответ на: комментарий от snaf

Спасибо, работает Я думал что sudo набирать уже не нужно.

sap78 ()

Добавлю тогда сюда вопрос,а каков вообще формат этого sudoers?
А то в мануальнике вместо объяснения назначения полей и приведения списка возможных значений понаписали всяких Петей Васей и Машей с кактусами.
Хрен поймёшь что и для чего предназначено,даже если ман русскоязычный.

В общем если не трудно распишите пожалуйста что что значит.
)andrew ALL ну «andrew» это имя пользователя,а что значит ALL?
) что за (ALL) в скобках,список хостов?
) NOPASSWD я понимаю как способ аутентификации
): как я понимаю разделитель
) /bin/... далее список комманд
Тоесть сейчас я понимаю в конфиге следующее

user_name не_известно_что_может список_хостов = (не_известно_что) способ_аутентификации:список команд

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

Нормально там расписан синтаксис. Смотри строки с ::=

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

про альясы я понял,но как понять что где должно стоять если пример записан как

 root           ALL = (ALL) ALL 

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

Пользователь «root» имеет право запускать на любом хосту «ALL» как любой пользователь "(ALL)" любую команду «ALL».

Да осиливший "EXAMPLES" поймёт и всё другое. ;)

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от torvn77

root ALL = (ALL) ALL

Написано же ясно

User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \
                   (':' Host_List '=' Cmnd_Spec_List)*

Cmnd_Spec_List ::= Cmnd_Spec |
                        Cmnd_Spec ',' Cmnd_Spec_List

Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd

Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'

###########################################333

User_List == root 
Host_List == ALL 
=
Cmnd_Spec_List == (ALL) ALL ----> (Runas_List) Cmnd



т.о.

root           ALL = (ALL)        ALL 
рут        на любом (как любой    любая
            хосте         юзер)  команда
anonymous ()
Ответ на: комментарий от beastie

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

Мы позволим супер-пользователю (root) выполнить любую команду на любой машине от имени любого пользователя.

Одно удовольствие,ваш вариант заработал.
user ALL=(root) /bin/bash

Не ясно только почему если вместо ALL написать 127.0.0.1 то sudo отказывает в запуске.
user 127.0.0.1=(root) /bin/bash

И если в скобках указывается логин,то как понимать запись
FULLTIMERS ALL = NOPASSWD: ALL
В общем путанный формат у sudoers'a

И ещё вопрос,где надо указывать флаги?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

если вместо ALL написать 127.0.0.1 то sudo отказывает в запуске

Note that sudo only inspects actual network interfaces; this means that IP address 127.0.0.1 (localhost) will never match. Also, the host name “localhost” will only match if that is the actual host name, which is usually only the case for non-networked systems.

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

У меня заработало
user ggg=(root) /bin/bash
(ggg это имя компьютера)
Но хотелось бы явно указать запрет на не локальный запуск sudo.
Как это можно сделать?
И ещё в мане упомянуты флаги,куда в этой строке их надо засовывать?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 4)
Ответ на: комментарий от torvn77

Их отдельно. Например — не читать root наставления:

Defaults:root	!lecture

Посмотреть, что касается нас конкретно: sudo -l

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Тоесть чтобы заблокировать не локальный вход надо набрать
Defaults:root requiretty
Но как проверить,работает это или нет?
и этого точно достаточно для блокирования сетевого входа?

torvn77 ★★★★★ ()

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

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

Каким образом? Через уязвимости в mount, или как?

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

Например примонтировать свой /etc поверх нормального, или примонтировать свой, заранее подготовленный, раздел с suid бинарником.
Это те варианты которые пришли мне в голову за минуту.

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

Хмм, о как. Ладно у меня десктоп домашний, там и монтировать-то кроме меня некому :)

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

А что помешает вирусу это проверить и сделать соответствующий вызов mount?
Просто так,в надежде на повезёт.
Если тебе надо оперативно монтировать то лучше сделай так,чтобы консоль автологинилась под рутом.

(лично у меня интерес к этой теме из-за желания ставить софт через гуевый synaptic,при этом разрешать на этот момент «общее» sudo пользователю,под которым лазею по порносайтам не хочется.)

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

Сейчас мой sudoers выглядит так

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	requiretty
Defaults:root	!lecture

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

user	work=(root:work) NOPASSWD: /usr/bin/virt-manager
исх.пользователь хост=(целевой_пользователь:целевой_хост) аунтентификация: путь_к_программе

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.