Добавить в судоерсы как вариант, я о нем думал, но интересно почему так получается в стандартной реализации и где баг. Все-таки забью на проблему и пропишу себя :) Спасиб.
Это не баг. По дефолту дебиан запрещает использование команды sudo тем пользователям которые не прописаны в /etc/sudoers
Такой вопрос: я выключаю комп, вводя sudo halt в консоли, и перегружаю через sudo reboot там же. Надоело уже каждый раз при выключении вводить свой пароль; можно ли как-нибудь сделать так, чтобы при вводе этих двух команд пароль бы не запрашивался?
Это ,кажись, через /etc/sudoers делается. Нужно строчку раскомментировать или добавить. Воспользуйся visudo. В терминале sudo visudo и редактируй файл. И читай , что digger написал.
2Константин digger Поводич: спс огромный за разъяснение. теперь все как надо. :)
2Константин mixer82 Широков: пропиши в судоерсах отмену пароля на эти комманды или вообще отмени запрос пароля при судо.
Да это же почти как под рутом сидеть, как я понимаю! Вот лично мне не влом вводить 16-тисимвольный пароль каждый раз, когда нужно, тем более что пароль действует минут пятнадцать... А на ребут можно отдельно поставить nopasswd.
Так, что касается ребута без пароля, то вроде разобрался как это сделать. А есть ли фронтенд к sudo, типа gksu или kdesu, но чтобы не тянул пол-гнома/кедов по зависимостям?
Макс, ага, правильно понимаешь.
Константин, надеюсь, Вы понимаете что есть Фронтенд? Это графика. Так чего вы хотите? Вы используете gksu, у Вас стоит Gnome, так какого банана он с собой еще потащит? GTK есть - все. Так же и с кде.
КДЕ стоит, стоит kdesu. Что за ерунду пишете? Потащит, может быть, пару либ для работы, но это в любом случае.
вот kdesudo, gksudo не ставится по дефолту, а kdesu и gksu тянутся зависимостями
А если не стоит ни гном, ни кде, а стоит какой-нибудь флюксбокс или, как в моём случае, icewm. И принцип анонимуса о том, что десктоп не нужен и все эти его либы тоже.
А хотя ладно, чёрт с ним. Если независимого от десктопов фронтенда нет, то и консольный su-to-root устроит.
>digger ALL=NOPASSWD: ALL
вот эта строка ух как опасна
Извини, но у меня в системе только один юзер - я. ЗАчем мне извращатся чтобы выполнить команду с помощью sudo?
Блин, пофиг сколько юзверей на машине. Фишка не в этом.
Cmnd_Alias SYS = /sbin/halt, /sbin/reboot
digger ALL = NOPASSWD: SYS
Вот этого хватит. Нефиг делать еще что-то беспарольное.
Уважаемый, попрошу повежливее. Я ведь тоже послать могу, и не только в винду
Посылайте. Вот только объясните мне свою точку зрения, почему можно выставлять ALL? В данном случае абсолютно всё равно сколько пользователей в системе, это не для того сделано
sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Воистину... не сочтите за паранойю, но я и на домашней машине убрал 10-минутное окно на sudo. Теперь сначала стоит подумать, стоит ли что-либо делать под судо, перед тем как вводить. Они же сами пишут, что
great knowledge leads to great responsibility.
Кстати, в x таки объяснили, что в дебиане по дефолту для sudo надо вводить пароль юзера а не рута.
Это и есть основная идея sudo, что требуется пароль юзера.
Кстати, я так и не понял, таймстампы в судо всетаки опасны, или их не удастся никак использовать сторонней программе? И если они - таки опасны, то как их отключить? Я не нашел в мане.:)
Убрал таки отмену запроса пароля и прописал себя в судоерсы :)
Всем спасиб за ответы.
блиа.... вот с такими вот Никсы будут подвергаться большим атакам/взломам чем сейчас, ибо нубы узнали, что в судоерсах можно отключить пасс... ты же легкая наживка.
попадется скрипток, по дурости запускаешь, а в нутри волшебные самые элементарные строки:
#!/bin/sh
sudo rm -rf /*
а потом будете орать, что никсы дырявые! Сами же себе проблемы делаете.
>Знаешь Миша, а можно еще хер себе дверью специально прищемить
>и потом всем рассказывать про неправильные двери.
(с) LOR ( )
2Артём Thomas Павлович: я наоборот убрал беспарольное судо и прописал юзера чтобы он мог пускать судо (ведь не прописав юзера в sudoers он даже судо пускать не может), НО с обязательным запросом пароля. Ещё раз повторюсь что раньше я жил под SuSe, где по дефолту надо вводить пароль рута, и столкнувшись в дебиане с непоняткой я спросил.
А. Извините, не правильно понял. К стати, цитата с Лора тоже на тему suse :)
Я когда на SuSe жил пару лет, сначала не мог понять почему её все ругают. С выходом 10.3 я начал достигать просветления. Ушел в убунту но тоже что-то не то, ставил слаку, поднимал на моем буке все, т.е. все работало, но не совсем мне подходит её идеология. Вот пришел к логическому завершению скитаний :) А на безопасности я никогда не экономил, т.к. видел что можно сделать с дырявой системой. :)
И ещё из одного:
о поводу использования Sudo в Ubuntu и отсутствие как такового рута - сказано много. Я лишь выскажу своё мнение. Sudo отличная утилита с помощью которой можно например дать права рута отдельному пользователю и только к примеру на выполнение одной единственной команды. Но в случае с UBUNTU не все так гладко, объясню чуть ниже. Что нужно было сделать, нужно создать пользователя на всех серверах UNIX (Ubuntu, Debian Lenny, FreeBSD) и дать ему права только на выполнение команды shutdown, вот сводка примеров того, что может sudo (файл настроек /etc/sudoerc):
ПРИМЕРЫ
Ниже приведены примеры записей sudoers. Возможно, некоторые из них являются выдуманными. Сначала мы определяем свои псевдонимы:
# Определение псевдонимов пользователя
User_Alias FULLTIMERS = millert, mikef, dowdy
User_Alias PARTTIMERS = bostley, jwfox, crawl
User_Alias WEBMASTERS = will, wendy, wim
# Определение псевдонимов Runas (Выполнить как)
Runas_Alias OP = root, operator
Runas_Alias DB = oracle, sybase
# Определение псевдонимов машин
Host_Alias SPARC = bigtime, eclipse, moet, anchor :\
SGI = grolsch, dandelion, black :\
ALPHA = widget, thalamus, foobar :\
HPPA = boa, nag, python
Host_Alias CUNETS = 128.138.0.0/255.255.0.0
Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias SERVERS = master, mail, www, ns
Host_Alias CDROM = orion, perseus, hercules
# Определение псевдонимов Cmnd (команд)
Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
/usr/sbin/restore, /usr/sbin/rrestore
Cmnd_Alias KILL = /usr/bin/kill
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown
Cmnd_Alias HALT = /usr/sbin/halt, /usr/sbin/fasthalt
Cmnd_Alias REBOOT = /usr/sbin/reboot, /usr/sbin/fastboot
Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
/usr/local/bin/tcsh, /usr/bin/rsh, \
/usr/local/bin/zsh
Cmnd_Alias SU = /usr/bin/su
Здесь мы переопределим некоторые встроенные значения по умолчанию. Мы хотим, чтобы sudo регистрировал события при помощи syslog(3), во всех случаях используя метод auth. Мы не хотим, что бы sudo читало лекции всем пользователям, и пользователь millert не должен указывать пароль. В добавок, на машинах в SERVERS Host_Alias мы держим дополнительный локальный файл журнала и удостоверимся, что мы регистрируем год в каждой строке файла журнала, так как записи журнала будут сохраняться в течение нескольких лет.
# Переопределяем встроенные значения по умолчанию
Defaults syslog=auth
Defaults:FULLTIMERS !lecture
Defaults:millert !authenticate
Defaults@SERVERS log_year, logfile=/var/log/sudo.log
Определение пользователя является частью, которая фактически определяет кто что может выполнять.
root ALL = (ALL) ALL
%wheel ALL = (ALL) ALL
Мы позволим супер-пользователю (root) и любому пользователю в группе wheel выполнить любую команду на любой машине от имени любого пользователя.
FULLTIMERS ALL = NOPASSWD: ALL
Системные администраторы занятые полный рабочий день (millert, mikef и dowdy) могут выполнить любую команду на любой машине без аутентификации.
PARTTIMERS ALL = ALL
Системные администраторы занятые не полный рабочий день (bostley, jwfox и crawl) могут выполнить любую команду на любом компьютере, но сначала должны себя аутентифицировать (так как в записи отсутствует тэг NOPASSWD).
jack CSNETS = ALL
Пользователь jack может выполнить любую команду на машинах с псевдонимом CSNETS (сети 128.138.243.0, 128.138.204.0 и 128.138.242.0). Из этих сетей только <128.138.204.0> имеет явную сетевую маску (в соответствии с CIDR) означающую сеть класса C. Для остальных сетей в CSNETS в случае соответствия будет использоваться сетевая маска машины.
lisa CUNETS = ALL
Пользователь lisa может выполнять любую команду на любой машине с псевдонимом CUNETS (сеть класса B 128.138.0.0).
operator ALL = DUMPS, KILL, PRINTING, SHUTDOWN, HALT, REBOOT,\
/usr/oper/bin/
Пользователь operator может выполнять команды ограничивающиеся простым обслуживанием. В данном случае таковыми являются резервное копирование, уничтожение процессов, система печати, выключение системы и любая команда в каталоге /usr/oper/bin/.
joe ALL = /usr/bin/su operator
Пользователь joe может выполнять только su(1) оператору.
pete HPPA = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
Пользователю pete разрешено изменять любой пароль, за исключением пароля супер-пользователя (root) на машинах HPPA. Учтите, что passwd(1) не воспринимает несколько имен пользователей подряд в одной командной строке.
bob SPARC = (OP) ALL : SGI = (OP) ALL
Пользователь bob может выполнять любые команды на машинах SPARC и SGI, как пользователь описанный в Runas_Alias в OP (root и operator).
jim +biglab = ALL
Пользователь jim может выполнить любую команду на машинах в сетевой группе biglab. Sudo знает, что biglab является сетевой группой из-за префикса +.
+secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
Пользователи в сетевой группе secretaries должны как помогать в управлении принтерами, так и добавлять или удалять пользователей. Таким образом им позволено выполнять эти команды на всех машинах.
fred ALL = (DB) NOPASSWD: ALL
Пользователь fred может выполнять команды от имени любого пользователя в Runas_Alias DB (oracle или sybase), без указания пароля.
john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
На машинах ALPHA пользователь john может выполнить su любому пользователю, за исключением супер-пользователя (root), но не имеет права задавать su(1) какие-либо флаги.
jen ALL, !SERVERS = ALL
Пользователь jen может выполнить любую команду на любой машине, за исключением машин в Host_Alias SERVERS (master, mail, www и ns).
jill SERVERS = /usr/bin/, !SU, !SHELLS
Для любой машины в Host_Alias SERVERS jill может выполнить любую команду в каталоге /usr/bin/, за исключением команд относящихся к Cmnd_Aliases SU и SHELLS.
steve CSNETS = (operator) /usr/local/op_commands/
Пользователь steve может выполнить любую команду в каталоге /usr/local/op_commands/, но только как пользователь operator.
matt valkyrie = KILL
На своей персональной рабочей станции, valkyrie, matt необходима возможность уничтожать зависшие процессы.
WEBMASTERS www = (www) ALL, (root) /usr/bin/su www
На машинах www, любой пользователь в User_Alias WEBMASTERS (will, wendy и wim), может выполнить любую команду как пользователь www (который является владельцем web-страниц) или просто su(1) к www.
ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\
/sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
Любой пользователь может монтировать или размонтировать CD-ROM на машинах в Host_Alias CDROM (orion, perseus, hercules) без ввода пароля. Ввод этого несколько утомителен для пользователей, поэтому это первейший кандидат для включения в сценарий оболочки.
Взято из мануала к sudoerc на opennet.
Согласно выше написанному, мне подходит срока:
operator ALL = DUMPS, KILL, PRINTING, SHUTDOWN, HALT, REBOOT,/usr/oper/bin/
Меняю ее под свои нужды:
user ALL = SHUTDOWN
(Не забудте создать пользователя user в системе!)
ВАЖНО! настройки начал с Debian Lenny, как известно встроенный root имеется. Так вот, захожу под этим пользователем и ввожу
sudo shutdown -r now
на что система говорит, данную команду может выполнить только root. Так вот!!!! в DEBIAN формат строки в sudoerc немного отличается и надо было прописать
user ALL = /sbin/shutdown
ИМЕННО ТАК! после этого пользователь user в Debian Lenny смог выполнить команду
user ALL = /sbin/shutdown
Остальные команды и операции в системе от имени рута ему запрещены, что и требовалось настроить.
Следующий этап, это настройка системы UBUNTU, все тоже самое. Создаю пользователя user и так как есть уже рабочая строка в sudoerc на Debian ее и добавляю в sudoerc
user ALL = /sbin/shutdown
Сохраняю файл и выхожу и вот тут самое интересное, при попытке выполнить sudo любая команда от системного пользователя или от пользователя user я получаю ошибку в строке 23 (это добавленная строка). Что это значит, это значит, что раз в системе нет как такового рута я не смогу поправить файл sudoerc! не смогу выполнить ни одной команды требующей прав рута, даже выключить или перезагрузить корректно сервер не смогу. Ситуация в которой приходится править файл sudoerc, если это не домашний ПК, достаточно частая и достаточно часто получается такая незадача. Возможно кто то подумает что я драматизирую и что достаточно подойти к серверу, ребутнуть его, загрузится с лайв СД и делов то. Но что если сервер за 350 км? и все настройки выполняются удаленно через консоль SSH?
Меня спасло то, что root в системе был создан очень давно, пароль к сожалению не помнил, но смог сменить его через Webmin, который так же присутствовал на системе, иначе было бы худо.
После смены пароля зашел в систему уже рутом, через su и пароль рута, далее поправил файл sudoerc, в UBUNTU синтаксис строки не такой как в Debian и надо писать:
Cmnd_Alias SHUTDOWN = /sbin/shutdown
user ALL = SHUTDOWN
ИТОГ: Создавайте в системе полноценного ROOT, даже если вы им не пользуетесь, это спасет в непредвиденных ситуациях с ошибками в файле sudoerc или его порчей. Как это сделать, можно прочитать здесь...
P.S. ... производите правки sudoerc с помощью специальной утилитой visudo, защита sudo и проверка синтаксиса обеспечены, возможно это сохранит вам немного нервов и позволит избежать вышеописанного.
Удачи!
H@wk!
/Охальников Олег/
digger@dignux:~$ sudo cat /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
digger ALL=NOPASSWD: ALL