Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
  security
  sudo
  visudo
  OpenVPN
EXIM


www.lissyara.su —> документация —> man —> security —> sudo

sudo man

Автор: Andy.


Имя

sudo, sudoedit - запуск команды от имени другого пользователя.

Сценарий

sudo -K | -L | -V | -h | -k | -l | -v

sudo [-HPSb] [-a auth_type] [-c class|-] [-p prompt] [-u username|#uid] {-e file [...] | -i | -s | command}

sudoedit [-S] [-a auth_type] [-p prompt] [-u username|#uid] file [...]

Описание

sudo позволяет разрешенным пользователям запускать команды, как суперпользователь или другой пользователь, определенный в файле sudoers. Настоящий и эффективный uid и gid устанавливаются в соответствии с используемым пользователем, который указан в файле passwd и вектор группы основан на файле группы (пока не будет использована опция -P). Если вызываемый пользователь root, или если целевой пользователь тот же, что и вызываемый, пароль не требуется. В иных случаях, sudo требует чтобы пользователи, аутентифицировали себя с паролем по умолчанию (ПРИМЕЧАНИЕ: в конфигурации по умолчанию, это пользовательский пароль, а не пароль root'а). Как тольк пользователь будет аутентифицирован, отметка времени обновится, а затем пользователь может использовать sudo без пароля, на короткий период времени (5 минут, если не изменено в файле sudoers).

Подразумевается что вызван sudoedit, с опцией -e (описано ниже)

sudo определяет кто авторизованный пользователь, путем проверки файла /etc/sudoers. Используя sudo с флагом -v, пользователь может изменить отметку времени без использования command. Приглашение для ввода пароля истечет по времени, если пользовательский пароль не введен в течении 5 минут (если не отменено в sudoers).

Если пользователь не перечисленный в списке, в файле sudoers, попытается
выполнить команду посредством sudo, будет отправлено письмо, как определено в установленное время или как определено в файле sudoers (по умолчанию root). Учтите, что письмо не будет отправлено, если неавторизованный пользователь попытается запустить sudo, с флагими -l или -v. Эта возможность позволяет пользователям узнать, могут они использовать sudo или нет.

Если sudo запущен пользователем root и переменная SUDO_USER установлена, sudo будет использовать это значение, для определения того, кто является настоящим пользователем. Данная возможность может быть использована пользователем для протоколирования команд через sudo, даже когда вызван root shell. Утилита так же поддерживает -e флаг, который будет полезен, даже если будет запущен через sudo-скрипт или программу. Заметьте, что поиск все еще ведется для root'а, а не для пользователя определенного в SUDO_USER.

sudo может протоколировать все удачные и неудачне попытки (так же как и ошибки) через syslog(3), через log файл, или обоими способами. По умолчанию,sudo протоколирует через syslog(3), но эта возможность может быть изменена во время конфигурирования, или через файл sudoers.

Опции

sudo поддерживает следующие опции командной строки:

  • -H Опция -H устанавливает переменную окружения HOME, в домашний каталог целевого пользователя (по умолчанию root) как определено в файле passwd(5). По умолчанию, sudo не модифицирует HOME (смотрите set_home и always_set_home в sudoers(5))

  • -K Опция -K (совершенно верно - kill), такая же как и -k, за
    исключением того, что она убирает пользовательскую отметку времени Так же, как и -k эта опция не требует пароля.

  • -L Опция -L (список) выведет список параметров, которые могут быть установлены в строке Defaults с небольшим описанием для каждого. Эта опция полезна в сочетании с grep(1)

  • -P Опция -P, заставляет sudo сохранять вызываемый вектор группы пользователя неизменным. По умолчанию sudo будет инициализировать вектор группы, из списка группы в которой находится пользователь. Настоящий и эффективный идентификатор группы, однако, все еще совпадает с целевым пользователем.

  • -S Опция -S (stdin) заставляет sudo читать пароль из стандартного ввода, вместо терминального устройства.

  • -V Опция -V (версия) заставляет sudo выводить номер версии и прекратить работу. Если вызываемый пользователь уже является root'ом, опция -V выведет на экран список опций по умолчанию, с которыми компилировался sudo, а так же локальный адрес компьютера.

  • -a Опция -a (тип аутентификации) заставляет sudo использовать
    определенный тип аутентификации, когда проверяется пользователь, как указано в /etc/login.conf. Системный администратор может указать спиок sudo-специфичных методов аутентификации, путем добавления ``auth-sudo'' строки в /etc/login.conf. Эта опция доступна только системам, которые поддерживают аутентификацию BSD, а sudo сконфигурирован с опцией --with-bsdauth.

  • -b Опция -b(фоновый процесс) говорить sudo выполнять данную
    комманду фоновым процессом. Учтите, что если вы используете -b опцию, вы не можете использовать shell job contorl для управления процессом.

  • -c Опция -c(класс) заставляет sudo запускать определенную команду с ограничением ресурсов, указанных в login class. Аргумет class может быть так же именем класса как указано в /etc/login.conf, или символом "-". Определение class показывает что команда должна быть запущена с ограниченными возможностями логина для пользователя запустившего команду. Если аргумент class определяет существующий пользовательский класс, команда должна запускаться как root, или команда sudo должна быть запущена из оболочки которая принадлежит root'у. Опция доступна только на системах с классами логина BSD,на которых sudo сконфигурирована с опцией --with-logincap

  • -e Опция -e(редактирование) показывает что, вместо запуска команды, пользователь хочет редактировать один или более файлов. В командной строке, строка "sudoedit" используется для проверки файла sudoers. Если пользователь авторизован в sudoers предпринимаются следующие шаги:

    Создаются временные копии файлов, которые будут отредактированы, когда владелец установит вызываемого пользователя.

    Редактор указынный в переменных окружения VISUAL или EDITOR запускается для редактирования временных файлов. Если не VISUAL ни EDITOR не установлены, программа указанная в переменной editor sudoers будет использована.

    Если они были модифицированны, временные файлы копируются назад в изначальное местоположение и временные верси удаляются.

    Если указанный файл не существует, он будет создан. Учтите, что нежелателен запуск большинства команд sudo, редактор загружается с немодифицированым окружением вызываемого пользователя. Если по, некоторым причинам, sudo не может обновить файл его отредактированной копией, пользователь получит предупреждение и редактируемая копия останется во временном файле.

  • -h Опция -h (помощь) заставляет sudo выводить на экран подсказку и завершать работу.

  • -i Опция -i (симуляция логина) запускает shell определенный в записи в passwd(5) пользователя, от которого запускается команда. Имя аргумента команды, отдаваемое shell'у начинается с -, что заставляет shell запускаться как login shell. sudo пытается изменить домашнюю директорию пользователя прежде, чем запустить shell. Так же инициализируется окружение, оставляя TERM неизмененным, устанавливая HOME, SHELL, USER, LOGNAME и PATH и снимает все остальные
    переменные окружения. Учтите, это происходит потому, что shell использует определение до того, как файл sudoers будет парсирован, установка runas_default в sudoers укажет какой shell пользователю запустить, но не скажет какой shell в данный момент запущен.

  • -k Опция -k изменяет отметку времени пользователя, установкой времени в этот момент. На следующий запуск, sudo спросит пароль. Опция не требует пароля и добавлена для возможности отзыва пользователями разрешений sudo из .logout файла.

  • -l Опция -l (список) выведет список разрешенных (и запрещенных) команд для пользователя данного хоста.

  • -p Опция -p (prompt) позволяет отменять строку ввода пароля по умолчанию и использовать свою собственную. Символ процента ("%") и следующие последовательности поддерживаются:

  • %u расширение к имени логина, вызываемого пользователя
  • %U расширение к имени логина пользователя чья команда будет запущена
    (по умолчанию root)
  • %h расширение к локальному имени хоста, без доменного имени.
  • %H расширение к локальному имени хоста, включая доменное имя (включается
    если на имя хоста машины, полностью или опция fqdn sudoers установлена).
  • %% два символа %% превращаются в один %

  • -s Опция -s (shell) запускает shell определенный в переменной SHELLS если она установлена, или shell определенный в файле passwd(5)

  • -u Опция -u (пользователь) заставляет sudo запускать определенную команду, как не root пользователь. Для определения uid вместо username, используйте #uid. Имейте ввиду, что если опция targetpw установлена (см. sudoers) невозможно запустить команду с uid, который отсутствует в списке базы данных паролей.

  • -v Если задана опция -v, sudo изменит пользовательскую отметку времени,  prompting for the user's password if necessary. Опция продлевает таймаут sudo на следующие 5 минут (или на то время которое задано в sudoers), но не запускает команду.

  • -- Флаг показывает, что sudo должна прекратить обрабатывать аргументы командной строки. Полезно в сочетании с флагом -s.

    Возвращаемые значения

    После успешного запуска программы, возвращаемое значение sudo будет возвращаемым значением программы которая запустилась. Иначе, sudo завершит работу со значением 1, если присутствует ошибка в кофигурации/правах доступа или sudo не может запустить данную команду. Строка с ошибкой будет отправлена в stderr. Если sudo не может stat(2) одну запись или более в пользовательском PATH, ошибка будет выведена в stderr. В нормальных обстоятельствах этого не должно происходить. Распространенная причина возвращения stat(2) "permission denied" когда вы запускаете automounter и одна из директорий в вашем PATH, на машине, которая в данный момент недоступна.

    Безопасность

    sudo пытается быть осторожной, когда запускает внешние команды. Переменные,которые контролируют, когда динамическая загрузка и привязка будет завершена, как будут использоваться для препятствия программе которую загружает sudo. Для того что бы победить это переменные окуржения LD_, _RLD_, SHLIB_PATH (только HP-UX), и LIBPATH (только AIX) удаляются из окружения проходя все запущенные команды. sudo так же удаляет переменные IFS, CDPATH, ENV, BASH_ENV, KRB_CONF, KRBCONFDIR, KRBTKFILE, KRB5_CONFIG, LOCALDOMAIN, RES_OPTIONS, HOSTALIASES, NLSPATH, PATH_LOCALE, TERMINFO, TERMINFO_DIRS и TERMPATH, поскольку они так же могут создать угрозу. Если переменная TERMCAP и имя пути установлены, они тоже игнорируются. Вдобавок, если переменные LC_ или LANGUAGE содержат символы / или % они игнорируются. Переменные окружения со значением начинающимся с () удаляются,поскольку они могут быть интерпретированы как функции bash. Если sudoбыл скомпилирована с поддержкой SecurID, переменные VAR_ACE, USR_ACE и DLC_ACE
    тоже очищаются. Список переменных окружения, которые сбрасывает sudo содержаться в выводе sudo -V когда он запущен от root'а.

    Для предотвращения спуфинга команд,sudo проверяет  последние ``.'' and ``'' (обе сбрасывают текущую директорию) когда ищет команду в PATH пользователя (если одна или обе в PATH). Учтите, поскольку действительное окружение PATH, не модифицируется, оно проходит неизмененным к программе, которую запускает sudo.

    Из соображений безопасности, ваша операционная система поддерживает общие библиотеки и не выключает библиотеки в пути поиска, который определил пользователь, для setuid програм (большинства), вы должны использовать опцию линковщика, которая выключает такую возможность линковки или линковать sudo статически.

    sudo проверит владельца и отметку времени директории (/var/run/sudo по умолчанию) и будет игнорировать содержимое директории, если она не принадлежит root'у и доступна для записи не только root'у. В системах, которые поддерживают не root'овых пользователей для отдачи файлов через chown(2) если отметка времени директории находится в директории доступной для записи всем (т.е. /tmp), и пользователя может создавать отметку времени директории прежде чем sudo запустится. Поэтому sudo проверяет владельца и состояние директории и ее содержимого, из-за чего ущерб который может быть причинен заключается в 'скрывании' файлов, путем перемещения их в директорию с отметкой времени. Это может быть нежелательно, потому как будучи однажды положенными в директорию с отметкой времени принадлежащей root'у и недоступной для других пользователей, пользователь складывающий файлы туда, может не иметь возможности вернуть их обратно. Во избежании этого, вы можете использовать директорию которая не доступна на запись "всему миру" для отметок времени (/var/adm/sudo например) или создайте /var/run/sudo с подобающим владельцем (root) и разрешениями (0700) в файлах системной загрузки.

    sudo не будет соблюдать установки отметок времени в будущем. отметки времени с датой выше чем current_time + 2 * TIMEOUT будут игнорироватся и sudo запротоколирует эту ситуацию и пожалуется. Это сделано для того, что бы удержать пользователя от создания собственных отметок времени с поддельной датой в системах,которые позволяют пользователям отдавать файлы.

    Пожалуйста имейте ввиду, что sudo только запротоколирует команду, которая явно запускается. Если пользователь запускает команду такую как sudo или su или sudo sh, последующие команды запущенные из этого shell'а не будут ни записаны, ни контроль доступа sudo не затронет их. Тоже самое справедливо, для команд которые предлагают shell последовательности (включая большинство редакторов). Из-за этого, примите меры предосторожности когда даете пользователю доступ к коммандам через sudo проверьте, не дает ли, случайно, команда пользователю root shell.

    Окружение

    sudo использует следующие переменные окружения:

    EDITOR  Используемый редактор по умолчанию в -e (sudoedit) режиме, если VISUAL не
           установлена

    HOME    В режиме -s или -H (или если sudo был сконфигурирован с опцией          
           --enable-shell-sets-home) устанавливает домашнюю директорию целевому
           пользователю.

    PATH    устанавливается в нормальное значение если sudo был сконфигурирован с опцией
           --with-secure-path

    SHELL   используется для оперделения shell'а для запуска с опцией -s

    SUDO_PROMPT  используется приглашения ввода пароля по умолчанию.

    SUDO_COMMAND  Устанавливает команду запускаемую sudo

    SUDO_USER     Устанавливает логин пользователя который вызвал sudo

    SUDO_UID   Устанавливает uid пользователя который вызвал sudo.

    SUDO_GID   Устанавливает gid пользователя который вызвал sudo

    SUDO_PS1   если определена, PS1 будет установлена в собственное значение

    USER       устанавливает целевого пользователя (root до тех пор пока -u опция
              определена)

    VISUAL     По умолчанию редактор используемый в режиме -e (sudoedit)



    Файлы

    /etc/sudoers  список кто что может запускать
    /var/run/sudo директория содержащая отметки времени


    Примеры

    Примечание: примеры ниже, предполагают настроенный sudoers(5)

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

    $ sudo ls /usr/local/protected

    Для получения списка домашней директории пользователя yazza на машине, где файловая система держит ~yazza не передаваемым root'у:

    $ sudo -u yazza ls ~yazza

    Для редактирования файла index.html как пользователь www:

    $ sudo -u www vi ~www/htdocs/index.html

    Для выключения компьютера:

    $ sudo shutdown -r +15 "quick reboot"

    Сделать используемым список директорий в разделе /home. примечание: управление командами идет в sub-shell'е для возможности работы cd и перенаправления файлов.

    $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

    Смотрите так же

    grep(1), su(1), stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8)

    Авторы

    Много людей работало над sudo на протяжении лет; эта версия, в основном, содержит код написанный:
           
           Todd Miller
           Chris Jepeway

    Смотрите файл HISTORY в дистрибутиве sudo или посетите http://www.sudo.ws/sudo/history.html для чтения небольшой истории sudo

    Caveats

    Нет легкого способа препятствовать пользвателю получать root shell, если пользователь может запускать произвольные команды через sudo. Так же, многие программы (такие как редакторы) позволяют пользователю запускать команды через shell последовательности, таким образом уходя от проверок sudo. Однако,
    во многих системах возможно избежать shell последовательностей с помощью функциональной возможностью sudo noexec. Смотрите руководство sudoers для более подробной информации.

    Совершенно не обязательно запускать cd команду напрямую через sudo, то есть:

    $ sudo cd /usr/local/protected

    с того момента когда команда завершается родительский процесс (ваш shell) будет тем же самым. Для более детальной информации смотрите EXAMPELS.

    Если пользователь может sudo ALL, ничто не остановит его от создания своей собственной программы, которая дает ему root shell независимо от любого '!' в спецификации пользователя.

    Запуск скриптов shell через sudo может обнаружить схожие ошибки ядра, которые делают setuid shell скрипты опасными на некоторых операционных системах (если ваша OS содержит /dev/fd/ директорию, setuid shell скрипты в основном безопасны).

    Ошибки

    Если вы полагаете, что нашли ошибку в sudo, пожалуйста заполните багрепорт
    по адресу http://www.sudo.ws/sudo/bugs/



    размещено: 2007-07-06,
    последнее обновление: 2007-07-07,
    автор: Andy



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    2011-11-20, BlackCat
    Разъём на WiFi-карту

    Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
    2011-09-14, manefesto
    Настройка git+gitosis

    Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
    2011-08-14, zentarim
    Wi-FI роутер + DHCP + DNS

    Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
    2011-06-15, -ZG-
    Охранная система на FreeBSD+LPT

    В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
    2011-03-13, terminus
    ng_nat

    Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
    2011-02-20, Капитан
    Nagios+Digitemp

    Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
    2011-02-17, Le1
    Zyxel Configuration

    Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
    2011-02-16, fox
    hast carp zfs ucarp cluster

    HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
    2011-02-04, BlackCat
    Восстановление ZFS

    История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
    2011-02-03, Капитан
    1-Wire

    Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
    2011-01-28, Капитан
    Температура в серверной

    Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
    2011-01-21, m4rkell
    Syslog server

    Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
    2011-01-07, lissyara
    Canon/gphotofs

    Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
    2010-12-13, Al
    IPSec

    Описание принципов работы IPSEC и способов аутентификации.
    2010-12-07, manefesto
    FreeBSD on flash

    Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
    2010-12-05, Fomalhaut
    root ZFS, GPT

    Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
    2010-09-05, Cancer
    Настройка аудиоплеера на ximp3

    Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
    2010-08-31, Cancer
    Установка и настройка OpenVPN

    На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
    2010-08-25, manefesto
    freebsd lvm

    Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
    2010-04-30, gonzo111
    proftpd file auth&quota

    Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
    2010-04-22, lissyara
    tw_cli

    Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
    2010-04-14, fox
    MySQL Master+Master

    MySQL (Master Master) and (Master Slave) Как настроить репликацию…
    2010-03-22, Mufanu
    named 9.7.0

    Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
    2010-03-09, terminus
    DNS zones

    Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
    2010-03-09, aspera
    Squid+AD (group access)

    Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
    2010-03-02, BlackCat
    Шлюз: Часть 4

    Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
    2010-03-01, BlackCat
    Шлюз: Часть 3

    Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
    2010-03-01, BlackCat
    Шлюз: Часть 2

    Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
    2010-03-01, BlackCat
    Шлюз: Часть 1

    Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
    2010-02-23, Morty
    darkstat

    Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
    2010-01-23, gonzo111
    squid+sams+sqstat

    Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
    2009-12-19, schizoid
    mpd5 + radius + ng_car + Abills

    Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 22 чел.
    За последние 30 мин было: 79 человек
    За сегодня было
    5343 показов,
    998 уникальных IP
     

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

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.1242 секунд
    Из них PHP: 42%; SQL: 58%; Число SQL-запросов: 63 шт.
    Исходный размер: 68016; Сжатая: 17569