Differences between revisions 4 and 5
Revision 4 as of 2012-12-31 23:53:54
Size: 7983
Comment: add link to french translation
Revision 5 as of 2014-04-09 20:13:18
Size: 7971
Comment: may be safer to only allow dedicated commands
Deletions are marked like this. Additions are marked like this.
Line 48: Line 48:
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff

Translation(s): العربية - English - Español - Français - Italiano - Русский

(!) ?Обсуждения


Root > sudo


Sudo — программа дающая возможность системным администраторам позволять пользователям выполнять команды как root (или другой пользователь). Основная философия — позволить людям выполнить свою задачу, используя как можно меньше привилегий. Также sudo эффективный способ для записи деятельности root: кто использует sudo,какую команду и когда.

Sudo не включён по умолчанию в Debian

Грубо говоря, sudo установлен и включён (если во время установки были выбраны компоненты рабочего стола). Но в Debian права не предоставляются по умолчани. (в отличии от некоторых других дистрибутивов).

Выполнить команду от имени root: (по умолчанию в Debian)

  • Пароль учётной записи root выбирается при установке системы.

  • Gnome запрашивает пароль (для учетной записи администратора) при запуске программ, которые настраивают систему.

  • Для выполнения команды от root, откройте Root Terminal (Приложения > Стандартные > Root Terminal), или запустите su в любом терминале.

(Примечание для DebianSqueeze: введён аналогичный инструмент PolicyKit, ориентированные на потребности настольных компьютеров и ноутбуков).

Почему sudo

Использование sudo лучше (безопаснее) открытия сессии root, по следующим причинам:

  • Нет необходимости в пароле root (sudo запрашивает пароль текущего пользователя).
  • По умолчанию команды выполняются от имени обычного пользователя (не привилегированного), что позволяет избежать ошибок. От имени root выполняются только команды с префиксом sudo.

  • Проверка/запись: когда выполняется sudo, записывается имя пользователя и исполняемая команда.

По этим причинам, переключение на root с помощью "sudo -i" (или sudo su) считается устаревшим, поскольку отменяет вышеперечисленные особенности.

Обзор настроек

Небольшой пример для того чтобы разрешить определённым пользователям запускать некоторые программы (для получения дополнительной информации, см. документацию).

# /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      MYADMINS = jdoe

# User alias specification

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias      PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# User privilege specification

# Users listed above (MYADMINS) can run package managers and reboot the system.
MYADMINS ALL = PKGMGMT, SHUTDOWN

# Users in the group wheel can execute any command impersonating any user.
#%wheel ALL= ALL

#Default rule for root.
root    ALL=(ALL) ALL

Проблемы и решения

Извините, пользователь jdoe не может выполнять ...

Типичный сеанс выглядит следующим образом:

  • $sudo test
    
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    
    [sudo] password for jdoe: 
    Sorry, user jdoe is not allowed to execute '/usr/bin/test' as root on localhost.

Это сообщение обычно означает, что пользователю не разрешено выполнять этого действие.

sudoers только для чтения

Файл /etc/sudoers только для чтения, даже для root!

Нужно использовать команду visudo для редактирования /etc/sudoers.

CVE-2005-4158

With the fix for CVE-2005-4158: Insecure handling of PERLLIB PERL5LIB PERL5OPT environment vars, the default behaviour of handling environment variables was switched to protect against malicious local users with sudo privileges getting sudo to do more than the malcontent was given privileges to do.

  • sudo (1.6.8p7-1.3) stable-security; urgency=high
    • Non-maintainer upload by the Security Team
    • Reverse the environment semantic by forcing users to maintain a whitelist [env.c, Bug 342948, CVE-2005-4158]

As a result, unless you modify your sudoers file to contain Defaults env_reset, you may experience problems using sudo like the following:

  • E138: Can’t write viminfo file $HOME/.viminfo!
  • dircolors: no SHELL environment variable, and no shell type option given
  • squidview: can't get your home directory, exiting

If you had more complex setups where you meant to pass through environment variables, your work around may be more complex or no longer possible.

Bug: 342948

Опция PASSWD не работает

sudo has a flag called exempt_group which contains a list of groups for which always NOPASSWD is true and setting PASSWD has no effect. On Debian Systems this list consists of the group sudo.

Неправильное поведение HOME (и настроек профиля)

If you are having problems when you sudo to your shell and your HOME (and profile settings) doesn't work as expected because your new HOME is root's homedir you must know that sudo since upstream version 1.7.4 (Debian Squeeze/Sid after Sep/2010) resets all environmental variables in it's new default configuration, to restore the old behavior of reading the users HOME dir you may preserve the HOME environment variable by adding this to your /etc/sudoers configuration file:

Defaults env_keep += HOME

Для получения дополнительной информации см. список изменений для версии 1.7.4

См. также