<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF148%3ASysadmin</id>
		<title>LXF148:Sysadmin - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF148%3ASysadmin"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF148:Sysadmin&amp;action=history"/>
		<updated>2026-05-13T00:23:36Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF148:Sysadmin&amp;diff=15423&amp;oldid=prev</id>
		<title>2sash-kan: Новая страница: «==По рецептам доктора Брауна==  : Доктор обучает, пишет и консультирует по Linux. Ученая степе…»</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF148:Sysadmin&amp;diff=15423&amp;oldid=prev"/>
				<updated>2014-07-21T15:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «==По рецептам доктора Брауна==  : Доктор обучает, пишет и консультирует по Linux. Ученая степе…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==По рецептам доктора Брауна==&lt;br /&gt;
&lt;br /&gt;
: Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Вылезайте из-под камня...|Содержание=Ни одна из лягушек в нашем саду не припрыгала ко мне, чтобы попросить адрес IPV6. Но последние пару лет они, скорее всего, жили под камнем.&lt;br /&gt;
&lt;br /&gt;
Все остальные, надеюсь, в курсе, что адресное пространство IPV4 заканчивается. В RIPE NCC, Региональном интернет-реестре [Regional Internet Registry], который обслуживает Европу, Ближний Восток и Центральную Азию, сейчас осталось около 4,5 блока /8 (около 75 миллионов адресов), но эта цифра постоянно тает.&lt;br /&gt;
&lt;br /&gt;
В апреле оставшийся запас в APNIC (обслуживающем Азиатско-Тихоокеанский регион) упал ниже одного блока /8 (16 миллионов адресов).&lt;br /&gt;
&lt;br /&gt;
Необходимость «подготовить» мир к IPV6 начинает давить.&lt;br /&gt;
&lt;br /&gt;
А вам в этой ситуации что делать? Начните с посещения сайта http://test-ipv6.com, который определит, есть ли у вас поддержка IPV6. Скорее всего, ее нет, но это не повод для паники.&lt;br /&gt;
&lt;br /&gt;
;Время действий&lt;br /&gt;
&lt;br /&gt;
Сайты с IPV4 никуда не денутся. Переключение с IPV4 на IPV6 – это не переход с правостороннего движения на левостороннее: его не обязательно делать всем сразу.&lt;br /&gt;
&lt;br /&gt;
В обозримом будущем IPV4 и IPV6 будут сосуществовать в Интернете параллельно. Может пройти лет 20 или больше, прежде чем IPV4 «отключат» окончательно.&lt;br /&gt;
&lt;br /&gt;
Впрочем, мы видим, что новые сайты поддерживают только доступ по IPV6. Если вы работаете в Linux (конечно, да!), ваш компьютер умеет говорить на IPV6, хотя вы могли не активировать эту возможность. А вот ваш ADSL-модем и провайдер – совершенно другая история.&lt;br /&gt;
&lt;br /&gt;
Начните допекать своего провайдера вопросами, когда же он наконец введет поддержку IPV6. Только давление клиентов заставит провайдеров отреагировать. Впрочем, поверьте мне, это не вопрос «если», это вопрос «когда».|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXF148.bytes.png|thumb|«Режим» файла состоит из девяти хорошо знакомых нам битов «прав» и трёх других битов. Ключевой бит в повышении привилегий — setuid.]]&lt;br /&gt;
&lt;br /&gt;
===Вступаем в будущее===&lt;br /&gt;
&lt;br /&gt;
: Сотни сайтов приняли участие во Всемирном дне IPv6.&lt;br /&gt;
&lt;br /&gt;
8 июня был Всемирным днем IPv6. А вы, верно, и не заметили. На самом деле, так и было задумано, что вы не заметите. На 24 часа несколько сотен сайтов, включая Google, Facebook и YouTube, перешли в режим работы «с двойным стеком» (IPv4 + IPv6) на своих обычных адресах.&lt;br /&gt;
&lt;br /&gt;
Многие сайты уже предоставляют доступ по IPV6, но на других URL. Например, записи DNS AAAA (адреса IPV6) можно в любой день найти для адреса ipv6.google.com, но не для google.com. В День IPV6 все было иначе. Большинство компьютеров ничего не ощутили – они либо проигнорировали записи AAAA (по причине отсутствия подключения по IPV6), либо вообще их не увидели.&lt;br /&gt;
&lt;br /&gt;
Ожидалось, что неприятности возникнут лишь у малой части пользователей (около 0,2 %). Это сайты, которые, получив адрес IPV6, возвращенный DNS, решали предпочесть его адресу IPV4, хотя и не имели подключения по IPV6, или пытались использовать туннельное решение IPV6 вроде Teredo, инкапсулирующего датаграммы IPV6 внутрь датаграмм IPV4. При этом сильно тормозится работа в Интернет, так как компьютеры сначала ждут тайм-аута на несуществующем соединении IPV6, а уж потом пробуют IPV4.&lt;br /&gt;
&lt;br /&gt;
Цель Дня IPV6 частично состояла в том, чтобы помочь засечь эти неправильно настроенные сайты, а частично – чтобы мотивировать провайдеров, изготовителей устройств и разработчиков ОС более быстрыми темпами продвигать обеспечение полной сквозной совместимости с IPV6.&lt;br /&gt;
&lt;br /&gt;
Экранный снимок сайта RIPE NCC показывает, как все изменилось в день IPV6, хотя здесь требуется пояснение. Зеленые и синие полоски означают, указывал ли сайт (или нет) адреса IPV6. На временной (горизонтальной) оси ясно виден 24-часовой период в середине, когда все более или менее позеленело. Лично я считаю это волнующим предвестником будущего. Надеюсь, интернет-пользователям на 99,9 % будет все равно.&lt;br /&gt;
&lt;br /&gt;
Более подробные графики и статистику о Всемирном дне IPV6 см. на http://v6day.ripe.net.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|Заголовок=Привилегии Гномов|Содержание=В Gnome для разрешения привилегированных действий используется PolicyKit. Это сложная схема, в которой набор действий вроде “org.debian.apt.install-packages” задается в иерархическом пространстве имен. (В командной строке pkaction выведет список действий.) Действия определяются в XML-файлах в /usr/share/polkit-1/actions. Большинство пользователей увидят агента аутентификации в действии – при попытке выполнения привилегированной операции появится маленькое окошко, которое позволит аутентифицироваться. PolicyKit различает аутентификацию пользователя (запрашивается пароль пользователя) и администратора (запрашивается пароль root). Эти две ситуации аналогичны использованию su и sudo соответственно в мире командной строки.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
===Обновление первого ранга===&lt;br /&gt;
&lt;br /&gt;
: Когда вам не обойтись без полномочий администратора, на помощь приходит эскалация привилегий. Узнайте, как это работает.&lt;br /&gt;
&lt;br /&gt;
Каждый процесс в Linux, т. е. каждая утилита командной строки, каждое приложение рабочего стола, каждый сервис запускается с особым «идентификатором пользователя», называемым UID. У настоящих пользователей (т. е. живых людей) есть UID; также имеются «системные» учетные записи с UID, которые предоставляют идентификаторы для запуска с ними процессов вроде Apache или Postfix.&lt;br /&gt;
&lt;br /&gt;
В большинстве дистрибутивов устанавливается «порог» UID: если значение UID меньше него, то он системный, а если больше – пользовательский. В дистрибутивах на базе Red Hat этот порог установлен в 500, в Debian – в 1000. Порог не имеет реального значения для привилегий, предоставляемых учетной записи.&lt;br /&gt;
&lt;br /&gt;
Ну и, разумеется, есть учетная запись с особыми привилегиями, обычно называемая root – с UID, равным 0.&lt;br /&gt;
&lt;br /&gt;
При входе в Linux по логину и паролю пользователя определяется его UID, и обычно все программы, которые он запускает, наследуют этот UID.&lt;br /&gt;
&lt;br /&gt;
Именно UID используется для принятия решений по управлению доступом. Чаще всего решение принимает ядро: может ли Мэри запустить ту или иную программу или записать в тот файл?&lt;br /&gt;
&lt;br /&gt;
Некоторые решения принимаются логикой внутри программы. Например, системный календарь охотно сообщает время и дату всем, кто ни спросит, но изменить их позволит только пользователю root.&lt;br /&gt;
&lt;br /&gt;
====Повышение по службе====&lt;br /&gt;
&lt;br /&gt;
Впрочем, иногда пользователю нужно выполнить какое-то действие, обычно ему не дозволенное, и он должен (временно) «получить повышение» до другого UID.&lt;br /&gt;
&lt;br /&gt;
Напыщенно это называется «эскалацией привилегий». Примеры подобных ситуаций – изменение пароля (включая запись свертки нового пароля в теневой файл) либо монтирование съемного устройства (это привилегированная операция, доступная только root).&lt;br /&gt;
&lt;br /&gt;
В этих случаях повышение привилегий происходит совершенно незаметно и действует только на время выполнения программы.&lt;br /&gt;
&lt;br /&gt;
Другие программы делают процесс повышения привилегий более явным и иногда более длительным. Классическая утилита командной строки, используемая для этих целей – su (substitute user – заменить пользователя). Она запускает новую оболочку с новым идентификатором пользователя. Самая распространенная форма ее запуска выглядит так:&lt;br /&gt;
&lt;br /&gt;
 chris@m1530-1004:~$ id&lt;br /&gt;
 uid=1000(chris) gid=1000(chris) groups=119(admin),1000(chris)&lt;br /&gt;
 chris@m1530-1004:~$ su -&lt;br /&gt;
 Password:&lt;br /&gt;
 root@m1530-1004:~# id&lt;br /&gt;
 uid=0(root) gid=0(root) groups=0(root)&lt;br /&gt;
 root@m1530-1004:~#&lt;br /&gt;
&lt;br /&gt;
Здесь мы запустили новую оболочку от имени root (предельный вариант повышения привилегий). Вы заметите, что завершающий символ в приглашении командной строки изменился с $ на #.&lt;br /&gt;
&lt;br /&gt;
Я также воспользовался командой id до и после su; вы ясно видите изменение идентификатора пользователя и его принадлежности к группе.&lt;br /&gt;
&lt;br /&gt;
Можно переключиться и на другого пользователя, не root, хотя это менее распространенный вариант:&lt;br /&gt;
&lt;br /&gt;
 $ su - fred&lt;br /&gt;
 Password:&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
В любом случае, нужно ввести пароль того пользователя, на которого мы переключаемся. Аргумент - велит утилите su запустить новую оболочку как «оболочку входа в систему», чтобы она прочитала файлы настройки запуска для нового пользователя и создала окружение, подобное тому, которое было бы, если бы этот пользователь сам вошел в систему.&lt;br /&gt;
&lt;br /&gt;
Переменная окружения PATH (она задает путь поиска для исполняемых команд) – пожалуй, самая важная из этих настроек.&lt;br /&gt;
&lt;br /&gt;
Утилиту su также можно применить для запуска однократной команды с повышением привилегий, после чего привилегии немедля снижаются обратно до уровня вашего пользователя. Здесь мы устанавливаем дату и время:&lt;br /&gt;
&lt;br /&gt;
 chris@m1530-1004:~$ su -c ‘date 06021012’&lt;br /&gt;
 Password:&lt;br /&gt;
 Thu Jun 2 10:12:00 BST 2011&lt;br /&gt;
&lt;br /&gt;
Другая популярная команда, повышающая привилегии – sudo. Sudo применяется для запуска команды от имени другого пользователя (опять же, обычно это root). Ее настройки лежат в файле /etc/sudoers, который тщательно контролирует, какие команды каждый пользователь может запускать подобным образом.&lt;br /&gt;
&lt;br /&gt;
На все подробности здесь нет места; если вам интересно, загляните в man sudoers. В своей конфигурации по умолчанию Ubuntu в значительной мере полагается на sudo. Вход в систему под пользователем root отключен совсем. Вместо этого учетная запись, создаваемая при установке Ubuntu, делается членом группы ‘admin’, и sudo настраивается так, чтобы члены этой группы могли запускать любые команды от имени root. Вот как я повышаю свои привилегии с помощью sudo для установки нового пакета:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install abiword&lt;br /&gt;
 [sudo] password for chris:&lt;br /&gt;
 ... and so on ...&lt;br /&gt;
&lt;br /&gt;
Чтобы разобраться с повышением привилегий «изнутри», сначала нужно понять, что процесс на самом деле работает с реальным UID и действующим (эффективным) UID.&lt;br /&gt;
&lt;br /&gt;
Реальный UID – это пользователь, кем вы являетесь на самом деле, а действующий UID – тот пользователь, для которого проверяются права на управление доступом, т. е. права, на которые вы покусились.&lt;br /&gt;
&lt;br /&gt;
Обычно эти идентификаторы одинаковы, но при запуске программы, у которой установлен бит ‘set user ID’ [задать идентификатор пользователя], действующий UID становится равным UID владельца исполняемого файла.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Разверните собственную систему|Содержание=Имея доступ root, вы можете создавать собственные программы с setuid. В доказательство, вот вам showid.c, простая программа на C – она выводит мои реальный и действующий идентификаторы пользователя:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
  printf(“real = %d\n”, getuid());&lt;br /&gt;
  printf(“effective = %d\n”, geteuid());&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я скомпилировал ее командой&lt;br /&gt;
&lt;br /&gt;
 $ gcc showid.c -o showid&lt;br /&gt;
&lt;br /&gt;
Если запустить ее от имени обычного пользователя, мы увидим, что реальный и действующий идентификаторы одинаковы, чего и следовало ожидать:&lt;br /&gt;
&lt;br /&gt;
 $ ./showid&lt;br /&gt;
 real = 1000&lt;br /&gt;
 effective = 1000&lt;br /&gt;
&lt;br /&gt;
Затем от имени root я изменил владельца файла на root и установил бит setuid:&lt;br /&gt;
&lt;br /&gt;
 # chown root showid&lt;br /&gt;
 # chmod u+s showid&lt;br /&gt;
&lt;br /&gt;
Вернувшись в обычного пользователя, запускаю программу снова:&lt;br /&gt;
&lt;br /&gt;
 $ ./showid&lt;br /&gt;
 real = 1000&lt;br /&gt;
 effective = 0&lt;br /&gt;
&lt;br /&gt;
Реальный UID не изменился, но действующий UID сейчас – тот, что принадлежит root. Я всемогущ! При попытке сделать это с аналогичным скриптом оболочки –&lt;br /&gt;
&lt;br /&gt;
 #/bin/bash&lt;br /&gt;
 id -ur # Show real UID&lt;br /&gt;
 id -u # Show effective UID&lt;br /&gt;
&lt;br /&gt;
вы увидите, что бит setuid не имеет эффекта. И для реального, и для действующего UID выводится значение 1000.|Ширина=40%}}&lt;br /&gt;
&lt;br /&gt;
====Хранение файлов====&lt;br /&gt;
&lt;br /&gt;
Бит setuid – один из трех особых битов в «режиме» файла. Нижние девять бит режима доступа – это три набора прав доступа ‘rwx’, которые вам наверняка знакомы, а следующие три бита описаны в таблице внизу.&lt;br /&gt;
&lt;br /&gt;
Биты setuid можно увидеть, внимательно расмотрев вывод команды ls -l. Например:&lt;br /&gt;
&lt;br /&gt;
 $ ls -l /bin/su&lt;br /&gt;
 -rwsr-xr-x 1 root root 36864 2011-02-14 22:11 /bin/su&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на s, третью букву в правах доступа, где обычно располагалось бы «право исполнения для пользователя».&lt;br /&gt;
&lt;br /&gt;
Так как владельцем файла в данном случае является root, этот бит говорит, что нужно «установить setuid в root». Вы увидите, что владельцем большинства программ с установленным setuid в системе является root. Найти эти файлы по режиму доступа можно командой&lt;br /&gt;
&lt;br /&gt;
 # find / -perm +4000 -ls 2&amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
В Ubuntu 10.04 эта команда обнаружила 36 программ с setuid (владельцем 34 из которых являлся root). В Fedora 15 я нашел 28.&lt;br /&gt;
&lt;br /&gt;
Механизм set-user-id – основа повышения привилегий в Linux. Автор этой идеи – Деннис Ритчи [Dennis Ritchie], один из отцов-основателей Unix, и в 1973 году он зарегистрировал на нее патент (US Patent 4,135,240), хотя отнюдь не ради получения авторских отчислений.&lt;br /&gt;
&lt;br /&gt;
Патент был выдан в 1979 году, что, между прочим, дает представление о том, как медленно работает бюро патентов США.&lt;br /&gt;
&lt;br /&gt;
Это любопытный документ, потому что в нем логика работы setuid отражена в виде схемы устройства, так как в то время было непонятно, можно ли защищать патентами алгоритм программы.&lt;br /&gt;
&lt;br /&gt;
Юные историки могут отправиться по ссылке http://www.wikipatents.com/US-Patent-4135240/protection-ofdata-file-contents.&lt;br /&gt;
&lt;br /&gt;
Для изменения группы существует аналогичный механизм, под названием setgid. Это чуть более тонкая форма передачи привилегий, которая требует несколько большего анализа в отношении групповых владельцев и прав доступа файлам, чтобы извлечь из этого пользу.&lt;br /&gt;
&lt;br /&gt;
Хороший пример – почтовая программа Postfix, написанная гуру безопасности Виетсе Венема [Wietse Venema]. Postfix намеренно разбита на несколько исполняемых файлов, и каждый из них запускается с минимально необходимыми привилегиями. Вот пример из Fedora 15:&lt;br /&gt;
&lt;br /&gt;
 $ ls -l /usr/sbin/postdrop&lt;br /&gt;
 -rwxr-sr-x. 1 root postdrop 187144 Mar 23 18:52 /usr/sbin/postdrop&lt;br /&gt;
&lt;br /&gt;
Здесь postdrop использует механизм setgid, чтобы получить возможность записывать в каталог очереди приема почты (в данном случае /var/spool/postfix/maildrop). Я собирался написать «setgid используется значительно реже, чем setuid», но экспресс-проверка показала, что я неправ. Я насчитал 14 таких программ.&lt;br /&gt;
&lt;br /&gt;
Любая программа, устанавливающая setuid в root, должна быть достойна доверия. Она должна быть написана очень тщательно, для гарантии, что из нее нельзя сделать ничего не предусмотренного автором.&lt;br /&gt;
&lt;br /&gt;
Так как обычные пользователи не могут создавать файлы, принадлежащие кому-то другому, они не могут создавать программы с setuid, которые запускаются от имени другого пользователя.&lt;br /&gt;
&lt;br /&gt;
Однако импорт файлов с setuid на съемный диск чреват проблемами, потому что монтировать съемные диски, как правило, могут и обычные пользователи.&lt;br /&gt;
&lt;br /&gt;
====Шалунья Сьюзан====&lt;br /&gt;
&lt;br /&gt;
Представьте себе такую ситуацию: в офисе Сьюзан вставляет USB-флэшку в свой компьютер (к которому у нее есть root-доступ) и копирует на него исполняемый файл оболочки Bash.&lt;br /&gt;
&lt;br /&gt;
Она делает владельцем файла root и устанавливает бит setuid. Затем она создает затор бумаги в офисном принтере (дело нехитрое, поскольку это обычное состояние офисного принтера) и зовет на помощь меня.&lt;br /&gt;
&lt;br /&gt;
Я отхожу от своего компьютера, а она вставляет в него USB-флэшку, монтирует ее и запускает свою оболочку от имени root. Шалунья Сьюзан.&lt;br /&gt;
&lt;br /&gt;
На практике у нее бы возникли препятствия, так как в большинстве систем съемные диски монтируется с опцией nosuid, то есть бит setuid не будет учитываться для файлов на этом устройстве (взгляните на опции owner, user и nosuid на man-странице команды mount).&lt;br /&gt;
&lt;br /&gt;
Натянув свой колпак безопасности потуже, я призываю вас рассмотреть эту ситуацию в перспективе. При наличии физического доступа к моему компьютеру, у Сьюзан хватает и других вариантов урвать права root – иногда достаточно загрузки в режиме одного пользователя; если это не сработает, она может загрузиться с liveCD и смонтировать файловые системы на моем жестком диске, или, в порядке крайней меры, просто открутить и утащить мой жесткий диск. Физическая безопасность компьютера важна.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Биты «режима» файла====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!БИТ&lt;br /&gt;
!ВОСЬМЕРИЧНОЕ ЗНАЧЕНИЕ&lt;br /&gt;
!ЧТО ОН ДЕЛАЕТ&lt;br /&gt;
|-&lt;br /&gt;
|setuid&lt;br /&gt;
|4000&lt;br /&gt;
|При выполнении файла в действующий UID процесса устанавливается UID владельца файла.&lt;br /&gt;
|-&lt;br /&gt;
|setgid&lt;br /&gt;
|2000&lt;br /&gt;
|При выполнении файла в действующий GID процесса устанавливается GID группы файла.&lt;br /&gt;
|-&lt;br /&gt;
|sticky bit&lt;br /&gt;
|1000&lt;br /&gt;
|Для каталога, предотвращает удаление файлов, владельцем которых не является текущий пользователь. Для обычного файла значения не имеет.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>2sash-kan</name></author>	</entry>

	</feed>