Делегиране на права чрез /etc/sudoers

За конфигуриране на основни компоненти в системата.

Модератори: Freya, Kulu Ngile

Делегиране на права чрез /etc/sudoers

Мнениеот phantomlord » Пет 19, Май, 2006 22:48

В Linux, за да конфигурирате основни параметри на системата са ви необходими правата на su/root. Сигурно ви е писнало да му пишете паролата, когато ви е нужно да правите това. Има много лесен начин да използвате правата на root без да му пишете паролата и той се състои в редакция на файлът /etc/sudoers и използване на sudo. След като направите промените, които ще посоча по-долу, ще можете да изпълните която и да е команда, без да е необходимо да въвеждате паролата на root.

Ето един прост пример как да редактирате /etc/sudoers:
# User alias specification
User_Alias[TAB]FULLTIMERS = юзъра_ви

# User privilege specification
FULLTIMERS[TAB]ALL = NOPASSWD: ALL


Така ще можете да стартирате която и да е програма или команда с привилегиите на su/root, без парола, като напишете sudo преди нея. Пример:
Код за потвърждение: Избери целия код
sudo synaptic


Възможностите на sudo са далеч по-големи, но са необходими когато един компютър се използва от повече от един потребител. Можете да зададете права на потребителите да изпълняват определени команди с или без парола.

Ето пример какво и къде да редактирате:
# User alias specification
User_Alias[TAB]FULLTIMERS = user1, user2, user3
User_Alias[TAB]PARTTIMERS = user4, user5
User_Alias[TAB]OTHERS = user6, user7

# Cmnd alias specification
Cmnd_Alias[TAB]SHUTDOWN = /sbin/shutdown
Cmnd_Alias[TAB]REBOOT = /sbin/reboot
Cmnd_Alias[TAB]INIT = /sbin/init
Cmnd_Alias[TAB]DEBUTILS = /usr/bin/apt-get
Cmnd_Alias[TAB]GEDIT = /usr/bin/gedit
Cmnd_Alias[TAB]SYNAPTIC = /usr/sbin/synaptic

# User privilege specification
FULLTIMERS[TAB]ALL = NOPASSWD: ALL
PARTTIMERS[TAB]ALL = ALL
OTHERS[TAB]ALL = NOPASSWD: SHUTDOWN, REBOOT, INIT
OTHERS[TAB]ALL = DEBUTILS, GEDIT, SYNAPTIC


В първата секция User alias specification са групирани отделните потребители. В секцията Cmnd alias specification е списъкът на командите, които могат да се използват чрез sudo. В User privilege specification са правата на отделните групи. Потребителите в групата FULLTIMERS могат да изпълняват която и да е команда без парола. Потребителите от PARTTIMERS могат да изпълнят която и да е команда, но ще трябва да я потвърдят с паролата си. Потребителите от OTHERS могат да изпълняват само командите дефинирани в Cmnd alias specification, като за SHUTDOWN, REBOOT, INIT няма да им трябва парола, докато за DEBUTILS, GEDIT, SYNAPTIC ще им бъде необходима.

Това е само пример, който да илюстрира накратко възможностите на sudo. Те са многократно по-големи, но са нужни само на системни администратори, които да задават определени привилегии на определени потребители на една машина. Коригирайте примера по свой вкус и нужди.

Още информация – тук.

ЗАБЕЛЕЖКА: Където пише:[TAB] трябва да има табулация.

Допълнения относно повишаване на сигурността на системата:

Необходимо е да помислите и да намерите най-добрия за вас баланс в съотношението безопасност/удобство. Защото това, което е максимално безопасно, не е удобно, а онова, което максимално удобно, не е безопасно. Например ако сте си настроили sudo да изпълнявате всички команди без парола, тогава ако стартирате един bash скрипт съдържащ командата "sudo rm -rf /" (никога не изпълнявайте тази команда, освен ако не искате да заличите всички файлове по хард-диска си!!!) ще останете с празен хард-диск. Препоръчвам в /etc/sudoers да окажете да се изпълняват без парола само командите, които използвате най-често, но употребата им не може да доведе до фатално увреждане на системата.
Ето едно примерче:

# User alias specification
User_Alias FULLTIMERS = phantomlord

# Cmnd alias specification
Cmnd_Alias INIT = /sbin/init #преминаването от един runlevel в друг или спирането и рестартирането на някой демон няма да унищожи системата
Cmnd_Alias APT = /usr/bin/apt-get #добавянето или премахването на пакети не е толкова фатално, защото няма как да се махнат всички наведнъж, а за да се махне някой пакет трябва да се знае точното му име. И да се премахне неоторизирано, после просто си го слагате отново.
Cmnd_Alias KATE = /usr/bin/kate #може да навреди на системата само ако трети лица добият неоторизиран директен физически достъп до машината, но пак няма да е крайно фатално.
Cmnd_Alias SYNAPTIC = /usr/sbin/synaptic #виж горното
Cmnd_Alias DPKG = /usr/bin/dpkg #виж горното
Cmnd_Alias COPY = /bin/cp #безвредно е, освен ако не изпълните bash скрипт съдържащ например: sudo cp /usr/bin/amarok /usr/bin/apt-get
Cmnd_Alias MOVE = /bin/mv #като при cp


# User privilege specification
root ALL=(ALL) ALL
#FULLTIMERS ALL = NOPASSWD: ALL
FULLTIMERS ALL = NOPASSWD: INIT, APT, KATE, SYNAPTIC, DPKG, COPY, MOVE #само посочените команди ще се изпълнят без парола
FULLTIMERS ALL = ALL #всички останали команди ще трябва да бъдат потвърдени чрез паролата ви.


100% сигурност няма никога. Примерът ограничава възможността за нежелано автоматично изпълнение на опасни команди съдържащи се в скриптове, освен ако сте стартирали скрипта като root. Винаги преглеждайте кода на скриптове с несигурен произход преди да ги изпълните, особено когато ги пускате като su!
Последна промяна phantomlord на Вто 27, Ное, 2007 13:30, променена общо 1 път
Hear the cry of War
Louder than before
With his sword in hand
to control the land
Crushing metal strikes
on this frightening night
Fall onto your knees
For the Phantom Lord
Аватар
phantomlord
Шеф
 
Мнения: 1517
Регистриран на: Пет 03, Мар, 2006 1:16
Местоположение: София

Мнениеот SHTILL » Чет 08, Фев, 2007 15:44

За по-лесно може и така:
# chmod +w /etc/sudoers
# echo 'XXX ALL=(ALL) ALL' >> /etc/sudoers
# chmod -w /etc/sudoers


!!!На мястото на ХХХ трябва да се въведе потребителя, който ще използва sudo!!!

Проверка дали sudo работи:
du -sh /root: Permission denied <- не работи
sudo du -sh /root <- работи :)
46.2MB (примерно)

Забележка: командите, пред които има # значи, че трябва да се изпълнят като root
SHTILL
Участник
 
Мнения: 6
Регистриран на: Пет 02, Фев, 2007 1:24

Мнениеот biggie » Пон 13, Авг, 2007 22:57

Значи направих каквото разбрах от темата и ако опитам да ползвам судо ми изписва:
Код за потвърждение: Избери целия код
sudo: /etc/sudoers is mode 0640, should be 0440


Ето и sudoers файла ми за проверка, защото не съм на 100% сигурен в себе си ;)
Код за потвърждение: Избери целия код
# /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

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification
User_Alias[TAB]FULLTIMERS = biggie

# Cmnd alias specification

# User privilege specification
root   ALL=(ALL) ALL
FULLTIMERS[TAB]ALL = NOPASSWD: ALL
Аватар
biggie
Участник
 
Мнения: 280
Регистриран на: Пон 04, Дек, 2006 15:47

Мнениеот phantomlord » Пон 13, Авг, 2007 23:41

Не си чел внимателно, пропуснал си:
ЗАБЕЛЕЖКА: Където пише:[TAB] трябва да има табулация.
Hear the cry of War
Louder than before
With his sword in hand
to control the land
Crushing metal strikes
on this frightening night
Fall onto your knees
For the Phantom Lord
Аватар
phantomlord
Шеф
 
Мнения: 1517
Регистриран на: Пет 03, Мар, 2006 1:16
Местоположение: София

Мнениеот tolostoi » Чет 16, Авг, 2007 13:09

Табулация означава да натиснеш бутона tab, той прави един по голям интервал. sudoers e много чувствителен файл и се пипа внимателно. Ето ти моя, замести tolostoi с твоят юзър нейм (изтрии всичко и постави новото, използвай nano за текстов редактор, е visudo най-добрият вариант за корекции в този файл то си пише, но невярвам да се оправиш с него)
Код за потвърждение: Избери целия код
# /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
User_Alias      FULLTIMERS = root
User_Alias      PARTTIMERS = tolostoi
# Cmnd alias specification

# User privilege specification
        #root   ALL=(ALL) ALL
FULLTIMERS      ALL = ALL
PARTTIMERS      ALL = ALL
Аватар
tolostoi
Участник
 
Мнения: 329
Регистриран на: Пон 11, Дек, 2006 16:01
Местоположение: Варна

Мнениеот biggie » Съб 18, Авг, 2007 12:56

Meрси много на tolstoi и phantomlord, оправих го най-после. ;) Една кратка добавка от мен:
ако ви изписва това
Код за потвърждение: Избери целия код
sudo: /etc/sudoers is mode 0640, should be 0440


трябва да направите следното:
Код за потвърждение: Избери целия код
su
chmod 0440 /etc/sudoers

И сте готови ;)
Аватар
biggie
Участник
 
Мнения: 280
Регистриран на: Пон 04, Дек, 2006 15:47

Мнениеот tolostoi » Пон 20, Авг, 2007 14:21

biggie написа:Meрси много на tolstoi и phantomlord, оправих го най-после. ;) Една кратка добавка от мен:
ако ви изписва това
Код за потвърждение: Избери целия код
sudo: /etc/sudoers is mode 0640, should be 0440


трябва да направите следното:
Код за потвърждение: Избери целия код
su
chmod 0440 /etc/sudoers

И сте готови ;)
омазал си нещо за това, сещам се и за друг такъв случай, той беше сложил еднаква парола за руут и на своя юзър, но неразбрах дали е от това проблема http://forums.data.bg/viewtopic.php?t=1 ... ght=debian
Аватар
tolostoi
Участник
 
Мнения: 329
Регистриран на: Пон 11, Дек, 2006 16:01
Местоположение: Варна

Мнениеот biggie » Пон 20, Авг, 2007 21:35

tolostoi написа:
biggie написа:Meрси много на tolstoi и phantomlord, оправих го най-после. ;) Една кратка добавка от мен:
ако ви изписва това
Код за потвърждение: Избери целия код
sudo: /etc/sudoers is mode 0640, should be 0440


трябва да направите следното:
Код за потвърждение: Избери целия код
su
chmod 0440 /etc/sudoers

И сте готови ;)
омазал си нещо за това, сещам се и за друг такъв случай, той беше сложил еднаква парола за руут и на своя юзър, но неразбрах дали е от това проблема http://forums.data.bg/viewtopic.php?t=1 ... ght=debian

Не е от това ;) Нещо друго съм бил омазал ;)
Аватар
biggie
Участник
 
Мнения: 280
Регистриран на: Пон 04, Дек, 2006 15:47

Мнениеот phantomlord » Вто 21, Авг, 2007 7:31

tolostoi написа:омазал си нещо за това, сещам се и за друг такъв случай, той беше сложил еднаква парола за руут и на своя юзър, но неразбрах дали е от това проблема http://forums.data.bg/viewtopic.php?t=1 ... ght=debian

Няма проблем да се ползва една и съща парола за руут и потребител :)
Hear the cry of War
Louder than before
With his sword in hand
to control the land
Crushing metal strikes
on this frightening night
Fall onto your knees
For the Phantom Lord
Аватар
phantomlord
Шеф
 
Мнения: 1517
Регистриран на: Пет 03, Мар, 2006 1:16
Местоположение: София


Назад към Системни настройки

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта

cron