nixp.ru v3.0

27 мая 2017,
суббота,
20:41:18 MSK

DevOps с компанией «Флант»
grisha написал 13 марта 2008 года в 16:28 (2266 просмотров) Ведет себя как мужчина; открыл 34 темы в форуме, оставил 202 комментария на сайте.

Создал пользователя, а он не умеет перегрузиться и выключиться. Читал про файл sudoers. Команда visudo не работает, поэтому добавил вручную в файле sudoers такую строку

%users localhost=/sbin/reboot NOPASSWD: REBOOT

Под пользовтелем делаю reboot, а в ответ «команда не найдена». Как обычному пользователю разрешить выключать, перегружать комп и вобще выполнять что-нибудь через su?

neogeisha

root ALL=(ALL) ALL

grisha ALL=NOPASSWD: /sbin/reboot, /sbin/init, /bin/su

запускаетца так

sudo /sbin/reboot

а если ты в свое шеле пропишешь алиасы:

alias reboot=’sudo /sbin/reboot'

alias init=’sudo /sbin/init'

то просто можно ребут или ини запускать

Anarchist
grisha
Создал пользователя, а он не умеет перегрузиться и выключиться. Читал про файл sudoers. Команда visudo не работает

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

vi/vim в системе присутствуют?

$ set | grep EDITOR


grisha
поэтому добавил вручную в файле sudoers такую строку

%users localhost=/sbin/reboot NOPASSWD: REBOOT

Интересный подход…

У меня сделано так:

# Cmnd alias specification
Cmnd_Alias      POWER = /sbin/poweroff, /sbin/reboot
Cmnd_Alias      NETWORK = /usr/sbin/traceroute
...
my-uid             ALL=(root) NOPASSWD: POWER, NETWORK


grisha
Под пользовтелем делаю reboot, а в ответ «команда не найдена». Как обычному пользователю разрешить выключать, перегружать комп и вобще выполнять что-нибудь через su?

Правильно.

Прописывай alias (как тебе уже порекомендовали).

Или

sudo /full/path/to/command
grisha

Ясно: редактора vi у меня нет, поэтому visudo не работает. Но su все таки сделал для пользователя, правда, после того, как добавил его в группу wheel. А с переменными не получается. Не знаю нормально это или нет, но свой sudoers у меня лежит по такому адресу /usr/portage/app-admin/files/, а я читал в мануале, что должен быть в /etc/. Вобщем редактирую его в mc так.

Сначала пишу переменную

POWER=/sbin/poweroff, /sbin/reboot

Ниже другая строчка

user ALL=(root) NOPASSWD: POWER

В результате, когда я user. Набираю reboot — команда не найдена. /sbin/reboot — вы должны быть суперпользователем.

neogeisha

а ты так пробовал????

root ALL=(ALL) ALL

grisha ALL=NOPASSWD: /sbin/reboot, /sbin/init, /bin/su

grisha
neogeisha
а ты так пробовал????

root ALL=(ALL) ALL

grisha ALL=NOPASSWD: /sbin/reboot, /sbin/init, /bin/su

Пробовал. Команда не найдена, а если полный пусть прописываю, то должен быть суперпользователем. Топчусь на месте. Объясните. Например как я понимаю такую строку

%users ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/poweroff

По идее это означает что всем, кто в группе пользователи можно выполнять любые команды если они знают пароль рута, а без пароля можно выключаться и перегружаться. У меня это не работает. Сначал мне нужно набрать су потом пароль и потом можно работать. Если судо — команда не найдена. Я подумал 8-) а может у меня судо не установлен, все таки все с нуля — всего несколько утилит, судо не ставил. Ну как бы на всякий случай — emerge sudo, а оно говорит что проверка не удалась, потому что размер файла /usr/portage/app-admin/sudo/files/sudoers не соответствует записанному размеру, получили такой то размер, а ожидали другой. Ну оно наверно понятно, я там полазил (но аккуратно, добавлял только свои строчки потом их все удалил). Прав ли я что хочу поставить судо и если да то как теперь мне его поставить? А если судо тут не причем (видимо я не очень понимаю что такое су а что такое судо), то объясните мою строку с юзерами выше (она логичная? правильная?)

Anarchist
grisha
Ясно: редактора vi у меня нет, поэтому visudo не работает.

И почему в Gentoo без vi она работает? ;)

neogeisha
grisha
Пробовал. Команда не найдена, а если полный пусть прописываю, то должен быть суперпользователем. Топчусь на месте. Объясните. Например как я понимаю такую строку

%users ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/poweroff

По идее это означает что всем, кто в группе пользователи можно выполнять любые команды если они знают пароль рута, а без пароля можно выключаться и перегружаться. У меня это не работает. Сначал мне нужно набрать су потом пароль и потом можно работать. Если судо — команда не найдена. Я подумал 8-) а может у меня судо не установлен, все таки все с нуля — всего несколько утилит, судо не ставил. Ну как бы на всякий случай — emerge sudo, а оно говорит что проверка не удалась, потому что размер файла /usr/portage/app-admin/sudo/files/sudoers не соответствует записанному размеру, получили такой то размер, а ожидали другой. Ну оно наверно понятно, я там полазил (но аккуратно, добавлял только свои строчки потом их все удалил). Прав ли я что хочу поставить судо и если да то как теперь мне его поставить? А если судо тут не причем (видимо я не очень понимаю что такое су а что такое судо), то объясните мою строку с юзерами выше (она логичная? правильная?)

сделай из под рута

which init

which reboot

эти пути и пропиши

Anarchist
neogeisha
сделай из под рута

which init

which reboot

эти пути и пропиши

Ты гонишь.

У меня на Gentoo с вышецитированным вариантом конфига sudoers работает следующее:

1. В профиль (~/.bashrc) прописано следующее:

alias poweroff="sudo poweroff"
alias reboot="sudo reboot"

2. Вызывается соответственно как:

$ reboot
$ poweroff

И, что удивительно, оно работает!

grisha
Anarchist
Ты гонишь.

У меня на Gentoo с вышецитированным вариантом конфига sudoers работает следующее:

1. В профиль (~/.bashrc) прописано следующее:

alias poweroff="sudo poweroff"
alias reboot="sudo reboot"

2. Вызывается соответственно как:

$ reboot
$ poweroff

И, что удивительно, оно работает!

Ура, я так и думал. До меня понемногу дошло, что путь к исполняемому файлу и соответственно переменную надо указывать в домашнем каталоге пользователя. Правда не знал как именно должна выглядеть строка с переменной и в каком именно файле, думал между .bashrc и .bash_profile (а было вот так легко и просто reboot /sbin/reboot).Теперь ясно, теперь должно заработать. Еще сгоряча решил тупо юзера добавить в группу adm (вдруг получится? :-)). Нихрена. Заглянул в /etc/group, в строке adm есть root,adm,daemon а моего юзера там нет). К чему бы это? Как мне быть с sudo, как его теперь поставить?

Когда спрашивал which reboot то в результате нет ребута и дальше указывались директории с каталогами где его нет (/usr /opt /bin).

Anarchist
grisha
До меня понемногу дошло, что путь к исполняемому файлу и соответственно переменную надо указывать в домашнем каталоге пользователя.

Ни фига ты не понял.

Незачёт!

Команды существуют в двух ипостатях: исполняемый файл (или скрипт) в каталогах перечисленных в значении переменной PATH. и/или в виде alias’ов перечисленных в профиле пользователя (для случая «и» используется alias).

Список путей PATH для простого пользователя, специального системного (их несколько типов) и root’а различен!!!

grisha
Правда не знал как именно должна выглядеть строка с переменной и в каком именно файле, думал между .bashrc и .bash_profile (а было вот так легко и просто reboot /sbin/reboot).Теперь ясно, теперь должно заработать.

Ни фига не просто!

Это — alias. Причём работать он у тебя будет только если ты не забудешь про sudo!

Относительно разницы между ~/.bashrc и ~/.bash_profile я помнится уже отписывался.

grisha
Еще сгоряча решил тупо юзера добавить в группу adm (вдруг получится? :-)). Нихрена. Заглянул в /etc/group, в строке adm есть root,adm,daemon а моего юзера там нет). К чему бы это?

Интересно.

А как ты добавлял пользователя в группу?

grisha
Как мне быть с sudo, как его теперь поставить?

Да как обычно:

# emerge -pv sudo >> /etc/portage/package.use
# vim /etc/portage/package.use
# emerge sudo


grisha
Когда спрашивал which reboot то в результате нет ребута и дальше указывались директории с каталогами где его нет (/usr /opt /bin).

См. мой первый абзац: список путей по которым ищется команда для простого пользователя и для root’а различен!!!

Простой пользователь рылом не вышел выполнять команды типа 'reboot’.

Если очень хочется, то можно разрешить ему это. Наиболее правильным путём является использование sudo.

Ставишь sudo, правильным образом (man visudo) редактируешь конфиг (прописываешь туда приведённый мной пример), прописываешь alias’ы в профиль, перечитываешь профиль — и готово!

grisha
Anarchist
Список путей PATH для простого пользователя, специального системного (их несколько типов) и root’а различен!!!

Чего это он различен, если я в .bashrc для юзера пишу alias reboot=«/sbin/reboot» делаю под юзером reboot и на этот раз команда (ура) находится (правда сообщение о суперпользователе выдается-у меня пока нет судо). Как я понимаю, root тоже пользуется этой дорогой /sbin/reboot, чтобы перегрузиться.

Интересно.

Anarchist
А как ты добавлял пользователя в группу?

Как обычно- usermod user -G adm

Anarchist
grisha
Чего это он различен

То, что простым пользователям и root’у доступен для выполнения разный набор команд!

grisha
если я в .bashrc для юзера пишу alias reboot=«/sbin/reboot» делаю под юзером reboot и на этот раз команда (ура) находится (правда сообщение о суперпользователе выдается-у меня пока нет судо).

Во-первых: с таким alias’ом ты пудешь послан независимо от наличия и конфигурации sudo.

Во-вторых: от этого не станут доступны простому пользователю прочие команды из каталога /sbin.

Ты ещё не проникся сутью FHS.

grisha
Как я понимаю, root тоже пользуется этой дорогой /sbin/reboot, чтобы перегрузиться.

И, в отличие от обычного пользователя, у него для этого достаточно прав.

grisha
Anarchist
# vim /etc/portage/package.use

# emerge sudo

[/code]

Зачем мне редактировать package.use? Чтобы удалить/добавить флаги? Единственный флаг для sudo там получается pam, остальные с минусом. Что означают эти флаги пока не знаю, сделал -pam, команда emerge sudo по-прежднему ожидает файл другого размера.

neogeisha

.zshrc — coool!!!!!!!!!!!!! =)

Anarchist
grisha
Зачем мне редактировать package.use? Чтобы удалить/добавить флаги?

/etc/portage/package.use — это фактически описание твоей конфигурации.

RTFM http://www.gentoo.org/dyn/use-index.xml

grisha
Единственный флаг для sudo там получается pam, остальные с минусом. Что означают эти флаги пока не знаю, сделал -pam, команда emerge sudo по-прежднему ожидает файл другого размера.

Не редактируй список флагов пока не понимаешь что ты делаешь!

Скачай файл правильного размера, проверь контрольные суммы и положи в /etc/portage/distfiles!

И хватит плакаться!!! Это — не единичный случай, когда в автоматическом режиме скачивается битый файл (наблюдал и на FreeBSD и в Gentoo).

grisha

Заменил файл, взяв из установочного portage пакета. После этого судо установился. Однако visudo говорит что то типа, что редактор вим не определен в /usr/bin/vim. В rc.conf я сменил умолчальный нано на вим. Не помогло. В итоге как раньше редактировал в мк. Теперь все работает: и перезагрузка, и выкл. Может насчет висудо просвятишь?

Anarchist
grisha
Однако visudo говорит что то типа, что редактор вим не определен в /usr/bin/vim. В rc.conf я сменил умолчальный нано на вим. Не помогло.

Глупый вопрос: vim вообще установлен?

$ eix -e vim


grisha
Может насчет висудо просвятишь?

А что там просвещать?

При наличии установленного (и прописанного в /etc/rc.conf) vim и выполнении команды от имени пользователя root (а другим и не положено: рыдом не вышли) всё должно работать.

grisha

visudo говорит Nчто указанный редактор

D-(//usr/bin/vim) не Nсуществует. Хотя он естьN,

я его вижу иD- дD-даже запускаю :-).

Команды eix нет.

Anarchist

1.

set | grep EDITOR

в студию!

2.

emerge eix
grisha

Вот такая понимашь D-загагулина

N’\E[32m]\E[40m\E[8]/usr/bin/vim'

grisha

Выше это после grep, а тут после eix

app-editors/vim

Available versions: 6.4 7.0.235 7.1.042 7.1.123 ~7.1.164 ~7.1.213 {acl bash-completion cscope gpm minimal nls perl python ruby vim-pager vim-with-x}

Installed versions: 7.1.123(20:39:48 17.03.2008)(acl gpm nls perl python -bash-completion -cscope -minimal -ruby -vim-pager -vim-with-x)

Homepage: http://www.vim.org/

Description: Vim, an improved vi-style text editor

Anarchist
grisha
Вот такая понимашь D-загагулина

N’\E[32m]\E[40m\E[8]/usr/bin/vim'

Какая-то лажа.

Такого быть не должно.

Ты уверен, что ничего не напутал в процессе установки?

За более точной диагностикой шёл бы ты на gentoo.ru