В утилите sudo (https://www.sudo.ws/), применяемой для организации выполнения команд от имени других пользователей, выявлена (http://www.openwall.com/lists/oss-security/2017/05/30/16) опасная уязвимость (https://www.sudo.ws/alerts/linux_tty.html) (CVE-2017-1000367 (https://security-tracker.debian.org/tracker/CVE-2017-1000367)). Проблема позволяет переписать любой файл в системе, например, /etc/shadow, и проявляется только если пользователю делегировано выполнение определённых привилегированных операций в /etc/sudoers, в системе включен SELinux и sudo собран с поддержкой SELinux.
Уязвимость устранена в обновлении sudo 1.8.20p1 (https://www.sudo.ws/), а также в пакетах дистрибутивов RHEL 6/7 (https://access.redhat.com/errata/RHSA-2017:1382), Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1456884), Ubuntu (https://www.ubuntu.com/usn/usn-3304-1/), Debian (https://security-tracker.debian.org/tracker/CVE-2017-1000367), SUSE (https://www.suse.com/support/update/announcement/2017/suse-s.../) и openSUSE (https://lists.opensuse.org/opensuse-security-announce/2017-0...).Уязвимость эксплуатируется через создание символической ссылки на исполняемый файл sudo, с заданием для ссылки имени, содержащем пробел, после которого следует число. При разборе файла /proc/[pid]/stat программа sudo пытается определить номер устройства tty, к которому прикреплён текущий процесс, но так как в качестве разделителей применяются пробелы, наличие в файла с пробелом в имени, нарушает порядок разбора и позволяет подставить фиктивный номер устройства, не связанные с каким-то уже существующим устройством в каталоге /dev. Используя данный фиктивный номер устройства sudo не может найти терминал текущего процесса в каталоге /dev/pts, после чего пытается найти устройство в каталоге /dev.
Атакующий может подобрать момент и создать новый псевдотерминал в момент, когда sudo уже проверил /dev/pts но ещё не начал проверку в /dev, и установить на него символическую ссылку в директории /dev, после чего данный файл будет воспринят sudo как терминал для ввода и вывода. При указании роли SELinux через опцию "-r role" в командной строке данное устройство будет использовано для ввода и вывода sudo. Заменив символическую ссылку с псевдотерминала на реальный файла, можно переписать его содержимое. Например, переписав /etc/shadow или /etc/sudoers можно получить полномочия root.
URL: http://www.openwall.com/lists/oss-security/2017/05/30/16
Новость: http://www.opennet.ru/opennews/art.shtml?num=46633
Чем su не угодил. не понимаю людей ставящих на пк левый бесполезный софт.
Впрочем как и sekinux.
Зачем логины разные, когда есть root.
Так и работаем:# ls -l $(which init)
lrwxrwxrwx 1 root root 9 Jan 1 02:31 /sbin/init -> /bin/bash# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Jan 1 02:31 /proc/1/exe -> /bin/bash
Говорят что вот с systemd загрузка чуть-чуть стала быстрее. Вы сразу в bash вместо init ходите как я!! - Вот это значит быстрее!
А ходил бы в shell (или ещо лучше в ash) ещо б быстрее стала.
Если хотите сразу в bash, то просто в параметрах grub добавьте init=/bin/bash. ;) Но в современных редакциях дистрибутивов это может не сработать. Зато хороший способ сбросить забытый пароль.
> Зато хороший способ сбросить забытый пароль.ну да, верно...
если забыл пароль от LUKS -- то всегда поможет старый добрый dd if=/dev/zero ...
ну а то что потрутся файлы -- ды хрен с ними -- главное что я-у-мамы-хакер
systemd приd порядок навеd!
> systemd приd порядок навеd!su там уже "исправили", так что да, ждём объявления от Рыжего, что судо в таком виде нинужна и вкорячивание собственного, несовместимого (а как иначе?) в системдупу.
'sudod' coming soon (+QRcode & httpd)?
Там и так удод на удоде...
> Зачем логины разные, когда есть root.Т.е. сидеть от рута - плохо, а сидеть от пользователя имеющего права рута - гуд?
Тот же пароль пользователя с приставкой sudo. Может кто расскажет в чём соль этого sudo?
pkexec же есть при желании...
Не понимаю людей, сравнивающих системы контроля доступа и обычную программу для входа от лица какого-либо пользователя.
> Не понимаю людей, сравнивающих системы контроля доступа и обычную программу для входа
> от лица какого-либо пользователя.Улучшая Ваше понимание "людей, сравнивающих системы контроля доступа и обычную программу для входа от лица какого-либо пользователя." сделаю предположение, что у этих людей и фломастеры все разные (наверняка и на вкус и на цвет ;)
По теме, у этих двух систем есть много общего, но есть и существенные различия. Некоторые из которых (на данный момент) возможны только в одной из них. И это меня успокаивает, на предмет того что sudo ни куда не денется!
У меня претензий нет вообще к sudo, просто выше писали про сравнение su. sudo вообще является, на мой взгляд, куда более гибкой и удобной утилитой, нежели, чем su.Да, sudo меня полностью устраивает, если что. :)
>sudo вообще является, на мой взгляд, куда более гибкой и удобной утилитой, нежели, чем su.Но у каждой медали - две стороны. И именно по этому в топике - пролом через sudo, а не через su ... вот такие вот пирожки с котятами :)
>>sudo вообще является, на мой взгляд, куда более гибкой и удобной утилитой, нежели, чем su.
> Но у каждой медали - две стороны. И именно по этому в
> топике - пролом через sudo, а не через su ... вот
> такие вот пирожки с котятами :)Вы имеете в виду то, что чем проще велосипед, тем он надежнее и более предсказуемый? Тут, я думаю, не надо сильно спорить.
Одно здесь хорошо, очередную дырочку закрыли! А так как аналогов sudo не очень много (ИМХО), и велосипедить в данном секторе будут только самые отъявленные (или самые одаренные), то такие нужные и важные инструменты как su и sudo потихонечку "оттачиваются"!
> Одно здесь хорошо, очередную дырочку закрыли! А так как аналогов sudo не
> очень много (ИМХО), и велосипедить в данном секторе будут только самые
> отъявленные (или самые одаренные), то такие нужные и важные инструменты как
> su и sudo потихонечку "оттачиваются"!Рыжий же уже вроде как высказал своё фи насчёт su и забацал замену.
>> Одно здесь хорошо, очередную дырочку закрыли! А так как аналогов sudo не
>> очень много (ИМХО), и велосипедить в данном секторе будут только самые
>> отъявленные (или самые одаренные), то такие нужные и важные инструменты как
>> su и sudo потихонечку "оттачиваются"!
> Рыжий же уже вроде как высказал своё фи насчёт su и забацал
> замену.Да и пусть с ним, и дай Бог ему здоровья. Он стахановец по коду. Да и встряску болоту тоже дает. А то как говорят, одна голова хорошо, ... Ведь, двигается ведь прогресс. А то, что там где то вендорлок, так вон на хорошо удобренной почве например Devuan (и прочие) возрос! Так что все хорошо! По моему, последнее предложение банальщина, какая то ;)
Может это из-за ubuntu? Там sudo популярен, во всех мануалах он используется для запуска команд из-под рута.
Думаю, виноват латинский алфавит, так как во всех мануалах sudo набирают буквами именно этого алфавита.
_руки_ же!!! :-)
Для su нужно знать пароль рута.
Забавно, что в Suse для sudo тоже нужно знать пароль рута.
Если настроить его по-человечески, то не нужно.
У вас какой-то неправильеный Suse. Наверное он делает неправильный sudo.
> Забавно, что в Suse для sudo тоже нужно знать пароль рута.Default: targetpw - во всех линуксах нынче, кроме redhat-derivatives. Потому что все скопипастили эту ненужность у убунты (в смысле, там вообще весь конфиг по умолчанию из одной бочки).
Причина простая: исходник Тода вообще не содержит никакого "дистрибутивного" конфига, и не устанавливает его по умолчанию. examples предназначены для разглядывания глазами, а не для использования as-is.
А предоставлять альтернативно-одаренным современным пользователям САМИМ создавать себе нужные именно им конфиги - не-е-е, это не стильно, не модно и не молодежно.Ну, а что вы хотите от линуксов - у нас еще и PermitRootLogin во всех sshd_conf, даром что в исходном пакете его отродясь не было (*bsd вообще нервно относятся к логинам рутом не с физической консоли).
> Потому что все скопипастили эту ненужность у убунты (в смысле, там вообще весь конфиг
> по умолчанию из одной бочки).Где-то и головой думали, что в пакет класть.
> Ну, а что вы хотите от линуксов - у нас еще и PermitRootLogin во всех sshd_conf
...without-password, бишь "по ключу". У _нас_.
PS: https://cve.basealt.ru/informatsiia-ob-uiazvimosti-cve-2017-... :]
Зачем потёр коммент со ссылкой на unixforum? А если конкретно, то опрос о su и sudo на нём. Вон внизу ссылку на Пикабу не потёр почему-то!
> Зачем потёр коммент со ссылкой на unixforum?Не видел. Возможно, нарвались на автомодератора из-за ссылки -- особенно если пишете через tor (см. тж. http://www.opennet.ru/openforum/vsluhforumID3/111371.html#89).
Lessons are learnt ... и подул на воду :) Ну а с другой стороны, лучше пере* ...
> ..without-password, бишь "по ключу"человек, настроивший ключи, вполне сможет и сам включить.
Я предпочитаю персональные логины и персональные ключи - потому что если все логинятся рутом, не остается записи, у кого именно надысь сперли ключ. Гадай на кофейной гуще и реверс-адресах хостов.Плюс рутовый логин обожает ssh'шный червяк, отличный повод сразу в DENY добавлять, наши люди "так не стучат".
> Я предпочитаю персональные логины и персональные ключи - потому что если все
> логинятся рутом, не остается записи, у кого именно надысь сперли ключ.Ну так uid==0 может быть у более чем одного персонализованного логина.
> если все логинятся рутом, не остается записи, у кого именно надысь сперли ключСразу видно, кто не дочитал документацию OpenSSH до конца. Штатным способом можно логиниться рутом, со своим персональным ключом, имя которого будет записано в лог. См. раздел CERTIFICATES в man ssh-keygen и описание опции TrustedUserCAKeys в mah sshd_config.
а, очередные пыонэры с неспокойными ручонками нахреначили очередное ненужно.
Нет, я не будут читать эту документацию до конца, я такое вообще выпилю нахрен где увижу.Кстати, вот альтернативу sshd - с функционалом ровно вот ssh 1.11 или где там они сделали форк, но с современным представлением о криптографии, очень даже хочется.
Но, в отличие от sudo, хрен такое сам выпилишь :-(
> во всех линуксах нынче, кроме redhat-derivativesВ Дебьяне нет по умолчанию.
> В Дебьяне нет по умолчанию.вау, глянул пакет - похоже они выбросили в какой-то момент все свои самодельные патчи (тыщи их было), и заодно вернулись к дефолтному sudoers десятилетней давности. (жить с этим невозможно, в отличие от редхатовского, который делали люди и для людей, но на первый раз получить доступ и переделать сойдет)
Кстати, кто б мне объяснил физический смысл строки с root (пихаемой тоже во все дистрибутивные конфиги всех вендоров) ? Для настолько альтернативно-одаренных, которые из под рута ТОЖЕ дергают sudo вместо su -c (не то чтоб совсем не имело смысла, но если оно тебе регулярно надо - скорее всего ты делаешь что-то не то)?
> Кстати, кто б мне объяснил физический смысл строки с root
> (пихаемой тоже во все дистрибутивные конфиги всех вендоров) ?Давайте как-то иначе обобщать:
# grep ^root /etc/sudoers
# rpm -qf /etc/sudoers
sudo-1.6.8p12-alt12.x86_64
# _> Для настолько альтернативно-одаренных, которые из под рута ТОЖЕ дергают sudo
"От одарённых для одарённых"(tm), видимо.
> жить с этим невозможно, в отличие от редхатовского, который
> делали люди и для людей, но на первый раз получить доступ
> и переделать сойдет5 минут на настройку единожды потратить не судьба? Как маленькие, честное слово. Один раз настраиваешь и раскидываешь по машинам. В чём проблема то? У меня "свой" конфиг уже 6 лет, ничего лишнего в нём не было по умолчанию.
> 5 минут на настройку единожды потратить не судьба? Как маленькие, честное слово.мы используем дистрибутивы, а не наколенный аналог lfs, ровно потому, что они выполняют за нас ненужную и однообразную работу. Если получается так, что потом три раза переделывать - значит, надо просто выбрать другой дистрибутив.
> Один раз настраиваешь и раскидываешь по машинам. В чём проблема то?
например, что машина не твоя. Или завтра редхат повесит на него нестандартный selinux-контекст, а твоя раскладывалка об этом узнает уже потом.
Поэтому знать о вендорских диверсиях, к сожалению, надо, если ты этим пытаешься хоть каким боком работать.
> У меня "свой" конфиг уже 6 лет, ничего лишнего в нём
> не было по умолчанию.а нелишнего? env_reset, к примеру, обычно совсем нелишний. Но не так же дубово, как у дебиана в конфиге-чтоб-было-что-выбросить. Упражнения с оверрайдом HOME - whom-how.
> единожды настроить
> уже 6 лет ничего не ломается
> потом три раза переделывать...
> редхат
В REHL редко что-то меняют. Там пакеты старее, чем в Debian. Если ты про всякие CentOS и прочие - ну ты сам выбрал полигон, что поделать.
> а нелишнего?
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults: user timestamp_timeout=1Всё что было по умолчанию. Всё остальное ручками, целых 3 строки.
> В REHL редко что-то меняют. Там пакеты старее, чем в Debian. Если
> ты про всякие CentOS и прочие - ну ты сам выбралты не в теме. Пакеты в центосе ровно те же самые что в rhel, с опозданием на две недели.
Поменять такие мелочи - вполне могут прямо вот в minor, у редхата-то не сломается, а у тех кто роботами лазит по ключевым системым файлам, все равно жизнь, полная сюрпризов.> Defaults env_reset
> Defaults mail_badpass
> Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"мнэ... ну поздравляю, почти дебиан получился. Хомяк не устанавливает, окружение сносит к хренам... Если что - первая строчка, скорее всего, лишняя- нынешние версии sudo и так требуют особого ключа сборки, чтобы так не делать.
> ты не в теме. Пакеты в центосе ровно те же самые что
> в rhel, с опозданием на две недели.Хз, в центе пакеты посвежее бывают. Но может я действительно не знаю, потому что даже на серверах Debian всегда ставил.
> мнэ... ну поздравляю, почти дебиан получился.
Это и есть Debian. Сижу на нём давно уже.
> Если что - первая строчка, скорее всего, лишняя
Возможно, я его не обновлял уже 6 лет, наверное. Наверное надо всё же все локальные изменения держать в /etc/sudoers.d/, а не как я (на самом деле слишком ленив).
>> Если что - первая строчка, скорее всего, лишняя
> Возможно, я его не обновлял уже 6 лет, наверное. Наверное надо всё
> же все локальные изменения держать в /etc/sudoers.d/, а не как я
> (на самом деле слишком ленив).Скачал из пакета свежий конфинг. За почти 6 лет ничего не изменилось.
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
> (жить с этим невозможно, в отличие от редхатовского, который
> делали люди и для людей, но на первый раз получить доступ
> и переделать сойдет)Да-да, вот он, ваш прекрасный редхатовский sudoers: https://bugzilla.redhat.com/show_bug.cgi?id=1196451
CLOSED ERRATA
Всё для людей.
> Да-да, вот он, ваш прекрасный редхатовский sudoersда, ужасная страшная катастрофа - у парашутистов-торопыг ломается nopasswd
> Всё для людей.
это,кстати, скорее всего и не люди были.
Это не только NOPASSWD ломает, это много чего ломает. Если хочешь использовать sudo по ssh в скрипте, не забудь опцию -t. В ansible accelerated mode с sudo не работает. gksudo не работает. Продолжать?
> Это не только NOPASSWD ломает, это много чего ломает. Если хочешь использовать
> sudo по ssh в скриптесовсем не хочу.
Я и говорю - не люди это были, а роботы туповатые.
Да, роботы. Нет, не туповатые. Просто роботы, которые не хотят эмулировать пользователя и создавать tty только для того, чтобы ублажить криво сконфигурированный редхатовцами sudo. Ну могут, конечно, приходится, но какой в этом высший смысл?
> Default: targetpw - во всех линуксах нынче, кроме redhat-derivatives.Чего-о? Вообще-то только в suse, которая к редхату никакого отношения не имеет.
Знатоки... Убивать надо таких знатоков!©
Дейсвительно. Давайте уж как в венде. Одной учётки администратора хватит всем! Ты может ещё и из под рута сидишь? Может всё-таки в следующий раз почитаешь, что делает sudo и что делает su, прежде чем бесполезные комментарии писать?
> Дейсвительно. Давайте уж как в венде. Одной учётки администратора хватит всем! Ты
> может ещё и из под рута сидишь? Может всё-таки в следующий
> раз почитаешь, что делает sudo и что делает su, прежде чем
> бесполезные комментарии писать?Похвально, конечно, что ты читаешь - мало кто читает в наше время. Однако мне читать ничего не надо - у меня Gentoo и тут su. Работаю вроде от пользователя.
> Однако мне читать ничего не надо - у меня GentooНадо. Очень много надо. И, главное, не ставь Gentoo на любую mission critial систему, которой когда-либо будет заниматься кто-то, кроме тебя.
> Надо. Очень много надо. И, главное, не ставь Gentoo на любую mission
> critial систему, которой когда-либо будет заниматься кто-то, кроме тебя.да ладно, пусть себе ставит. Я когда вижу генту в таком месте - сразу расслабляюсь, потому что ну в самом худшем случае - окажется что "оно каждую ночь само себя пересобирает из наисвежайших версий софта(c)", непременно еще с march=точной версии не самого распространенного процессора, и это можно просто отключить. А если оно уже развалилось - тем лучше, меньше возни.
А вот если стоит какой-нибудь redhat - может быть что угодно, вплоть до кастомных модулей в selinux, самосборных критических пакетов (а сборочная система ушла вместе с автором) и диверсий в конфигах.
А у меня Gentoo и sudo. По куче причин - от просто хорошей привычки до нескольких настроенных беспарольных команд. И что?
> мне читать ничего не надоКнижки умные ты тоже не читаешь?
> у меня Gentoo
Понятно. Читать ему не надо.
> и тут su
В Генте у тебя может быть всё что угодно. Мог бы и собрать sudo, ничего бы не сделалось с тобой за эти пару секунд.
> Может всё-таки в следующий раз почитаешь, что делает sudo и что делает suСледующий уровень: http://www.opennet.ru/openforum/vsluhforumID3/73378.html#19
> прежде чем не шибко полезные комментарии писать
>>что делает sudo и что делает su
> Следующий уровень: http://www.opennet.ru/openforum/vsluhforumID3/73378.html#19
>> прежде чем не шибко полезные комментарии писатьЗахватывающе... Каждый раз. Испугаться и бежать прочь, вспоминая привычные строчки со screen и su/sudo.
С 2004-го люди ""[We]'ve been discussing privately how we might re-design su"" -- это ж какое упорство надо?!
Тебя заминусила школота, у которой первый линукс уже использовал sudo, и не заставшая su по умолчанию.На Пикабу меня так же заминусили за вопрос в комментах под постом "Мария Захарова откомментировала...". Я спросил "Кто такая, чем знаменита?" И ведь даже ответить не могут, потому что все её знают из телевизора, а признаться что смотришь телевизор - дурной тон. Вот и минусуют - типа "стыдно не знать, все знают!"
Ньюфаги иногда забавляют, да. Так втопить за sudo только потому, что не видели линукса без него. Похоже, я начинаю понимать фанатов Systemd.
sudo есть почти во всех крупных дистрах. Первое что я сделал - как раз настроил его. Я и венде не сидел под админом, прикинь, это опасно: говорят от этого потом ломаются системы от кривых рук пользователей.> На Пикабу
Сборище троллей, которые перебежали из анонимных имеджборд? Чему ты удивляешься тогда?
> потому что все её знают из телевизора
Сомневаюсь. Телевизор сейчас смотрят единицы.
> Вот и минусуют
Социальные сети с лайками\дизлайками ненужны (знаю, opennet одна из таких, но где ещё новости нормально почитать?). Я бы посоветовал бежать из такой. У них уже такое мышление просто, благо я застал ещё интернет в расцвете его сил и без этой фигни. Но увы, интернет уже не торт.
> Ньюфаги
Я пришёл на GNU/Linux когда ветка Дебьяна была ещё Squeeze. Первым же делом, следуя советам из Wiki Дебьяна (sic!) я поставил sudo. Да, знаю, что это был уже ~'11 год, но до этого я с *NIX не сталкивался вообще.
А с su усложняешь себе жизнь только. Хочешь - пользуйся, всем пофигу. У sudo есть много преимуществ перед su.Ну и вот, дабы подкрепить мои слова, выдержка из википедии:
[i]Unlike the similar command su, users must, by default, supply their own password for authentication, rather than the password of the target user. After authentication, and if the configuration file, which is typically located at /etc/sudoers, permits the user access, the system invokes the requested command. The configuration file offers detailed access permissions, including enabling commands only from the invoking terminal; requiring a password per user or group; requiring re-entry of a password every time or never requiring a password at all for a particular command line. It can also be configured to permit passing arguments or multiple commands.[/i]
> не заставшая su по умолчанию.Это как это? Его что, из POSIX выкинули? Или в каких-то дистрибутивах настолько забили на стандарт, что убрали su?
> Чем su не угодил. не понимаю людей ставящих на пк левый бесполезный софт.на десктопе без sudo никуда.
на сервер при помощи sudo можно делегировать пользователю выполнение некоторых комманд. не очень гибко и удобно, но тем не менее.
проблем с безопасностью на сервере он особо никаких не решает, т.к. нет особой разницы между
# rm -fr /*
и
$ sudo rm -fr /*
но тем не менее одна из самых главных фич sudo на сервере - он позволяет работать с личными пользовательскими настройками консоли. всякие pyenv-ы, prompt-ы и т.д. к примеру когда на сервер логинится много кто и у всех свои предпочтения.
> нет особой разницы междуЕсть. Иди учи матчасть.
man sudoers
дружище, я думаю матчасть я знаю лучше тебя. по крайней мере не хуже точно. sudoers использую очень активно.я в своем сообщении написал про sudoers
> на сервер при помощи sudo можно делегировать пользователю выполнение некоторых комманд. не очень гибко и удобно, но тем не менее.
и плохо понимаю при чем тут sudoers в принципе. обсуждали разницу между sudo и su - .
в sudoers для админа как правило выставлено выполнение _любых_ комманд от рута. и в этом случае разницы никакой нет, что ты выполняешь деструктивную команду с суду, либо без суду от рута.
я могу сделать эксепшн для удаления только корня, но указать эксепншы для всех деструктивных действий я не могу. засим указывать их не имеет смысла.
> При разборе файла /proc/[pid]/statfacepalm. Ещё и strtok()'ом поди.
Вот не надо ехидничать, не посмотрев исходники.https://github.com/millert/sudo/commit/b3fe46ce6534ebcb6fb0e...
+ /*
+ * Field 7 is the tty dev (0 if no tty).
+ * Since the process name at field 2 "(comm)" may include spaces,
+ * start at the last ')' found.
+ */
+ char *cp = strrchr(line, ')');
+ if (cp != NULL) {
+ char *ep = cp;
+ const char *errstr;
+ int field = 1;
+
+ while (*++ep != '\0') {
+ if (*ep == ' ') {
+ *ep = '\0';
+ if (++field == 7) {Даа, там ещё круче. Недооценил, чо.
> Ещё и strtok()'ом поди.Нет.
strtok_s() вполне безопасно разбирать.
>> Ещё и strtok()'ом поди.
> Нет.
> strtok_s() вполне безопасно разбирать.Нет такой функции. Есть strrok_r (POSIX). Она потокобезопасна и реентабельна.
s-суффиксы это то, что Непросохт продвигает в стандарт, не?..
Да, действительно спутал. Товарищ выше прав.
>>> Ещё и strtok()'ом поди.
>> Нет.
>> strtok_s() вполне безопасно разбирать.
> Нет такой функции. Есть strrok_r (POSIX). Она потокобезопасна и реентабельна.реентерабельная
а какой вообще правильный способ получения этих данных из ядра?
> а какой вообще правильный способ получения этих данных из ядра?для большинства - никакого.
В смысле, не нужно это никому.
Для такой специфичной штуки, как sudo - вполне правилен способ, которым исправили - нех.шастать по /dev/shm в поисках терминала, можно ненароком и найти. Я бы еще и этот список сократил ровно до двух строк для линукса, не пытаясь угодить всем на свете - предоставив остальным ручку в configure.(надо заметить, что когда ее в 93м году писали, никаких /dev/shm в природе не было, и, что удивительно - как-то вот обходились. Этот код сравнительно недавно появился, и хз для чего.)
вообще, следует иметь в виду, что sudo изначально была написана плохо (я с ней ковырялся в 97м году, поковырялся, плюнул и решил что я это пожалуй не буду использовать), и с годами лучше не стала. Зачем убунтоиды ее навязывают всему миру - я без понятия, поскольку в их дефолтной конфигурации (именно от них ее растиражировали остальные) вся польза старательно помножена на ноль -
Defaults targetpw # ask for the password of the target user i.e. root
ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
afair, этим изобретением мы обязаны именно убунте. Найдите тут десять отличий от банального использования su (которая как раз написана хорошо, поскольку неведомой херни там на два порядка меньше) ?
да хрен с этим большинством
как мне, в случае необходимости, программно узнать ppid или rss или stime процесса?
> как мне, в случае необходимости, программно узнать ppid или rss или stime процесса?а причем тут sudo и этот баг?
с pid/rss все по прежнему, как двадцать лет назад - в линуксе их принято читать из /proc/$pid/status (что в не-hardened линуксах доступно с правами юзера, а если у тебя hardened - так ты, значит, и не хочешь, чтобы кто угодно мог узнать), в bsd - через анус, поскольку kmem дают на почитание не всем, proc монтировать нынче не принято, поэтому придумана отдельная (дыра) через sysctl.
> а причем тут sudo и этот баг?Я пытался поставить себя на место разработчиков sudo и понять, что можно было бы сделать, чтоб не допустить эту ошибку (думал, может существуют альтернативные способы получения этой информации, лишённые недостатков как при парсинге /proc)
> Я пытался поставить себя на место разработчиков sudoтак им не ppid надо.
> лишённые недостатков как при парсинге /proc
для sudo, которая существует на свете много дольше, чем линуксы, основной недостаток /proc вот в этом вот:
> ls -la /proc/total 4
dr-xr-xr-x 2 root wheel 512 Jan 3 2012 .
drwxr-xr-x 19 root wheel 512 Apr 18 22:38 ..;-)
И формат status у всех свой, даже если он там и будет.
А еще есть системы, где и вовсе /proc никакого нет.
Как самый минимум - с sudo не надо на каждый чих вводить пароль, при этом можро не сидеть в рутовой консоли. Шансы начудить по ошибке это явно уменьшает.
Ну на самом деле я немного не согласен. Я после 10 ввода ввожу уже на автомате. Как-то раз чуть не потёр важные файлы, благо вовремя остановил и успел восстановить частично.
на сервере - есть такое дело, да. Но речь изначально шла об убунтах/локалхостах, там не так часто приходится рутом что-то делать, обычно это именно "на первый раз ввёл пароль, потом автоматом". Плюс каждое написанное sudo тоже напоминает, что надо перепроверить, что делаешь. Не гарантия ни разу, но польза есть.
> на сервереБудешь удивлён - на локалхосте :) Просто автоматом уже набираю для apt, например.
> на первый раз ввёл пароль, потом автоматом
Я параноик - у меня каждый раз надо вводить пароль.
> Плюс каждое написанное sudo тоже напоминает, что надо перепроверить
Да, соглашусь. Но всё же, бывают фейлы иногда. С тех пор всегда проверяю сначала в какой я директории, потом уже удаляю.
> каждое написанное sudo тоже напоминает, что...следующей введённой командой должна быть sudo bash: сколько уже можно вводить этот долбаный sudo.
> напоминает, что надо перепроверить, что делаешь.
use PS1, Luke. Раскрась руту приглашение ко вводу в shell так, чтобы оно резало глаза. Воткни туда что-нибудь красненькое, обязательно \$ в конце, чтобы видеть # вместо $. Не надо делать рутовый PS1 слишком длинным -- всё же удобство редактирования команд важно, но ярким и "опасно" выглядящим -- обязательно. И сигналы ACHTUNG! ACHTUNG! твой мозг будет получать не тратя время на ввод команды sudo.
>[оверквотинг удален]
> стала. Зачем убунтоиды ее навязывают всему миру - я без понятия,
> поскольку в их дефолтной конфигурации (именно от них ее растиражировали остальные)
> вся польза старательно помножена на ноль -
> Defaults targetpw # ask for the password of the target
> user i.e. root
> ALL ALL=(ALL) ALL # WARNING! Only
> use this together with 'Defaults targetpw'!
> afair, этим изобретением мы обязаны именно убунте. Найдите тут десять отличий от
> банального использования su (которая как раз написана хорошо, поскольку неведомой херни
> там на два порядка меньше) ?Аналоги sudo есть? С тем же функционалом и без "неведомой херни", пусть хоть на порядок меньше. Ну и конечно же хотелось бы, что бы код был как картина маслом ;)
> Аналоги sudo есть? С тем же функционалом и без "неведомой херни", пустьну собери себе sudo без неведомой херни, я вот понятия не имею, как выглядит и где может на самом деле применяться сетап, требующий -r, что отключается еще - отключи, настрой sudoers без странных оверрайдов (можно взять редхатовский за основу, он условно-вменяем), и, в принципе, большинство новых багов пройдет мимо тебя, а большинство старых в таком древнем проекте кое-как починили уже. Главное, ничего и никогда там не обновлять.
> хоть на порядок меньше. Ну и конечно же хотелось бы, что
> бы код был как картина маслом ;)идеала все равно не будет - там сложный парсер, его аж дважды, помнится, с нуля переписывали, там нужно аккуратно обращаться с токенами, чтобы passwordless sudo не сделалась внезапно общехалявной для каждого nobody, и еще много всяких подводных камней даже для случая, когда у тебя там только trusted users, и sudo именно для замены su, а не для индивидуального доступа к отдельным фичам (который все равно защищает только от честных людей).
> Аналоги sudo есть? С тем же функционалом и без "неведомой херни",
> пусть хоть на порядок меньше.
> http://git.altlinux.org/people/ldv/packages/?p=sudo.gitЭтот ваш альтовский sudo давным-давно поломан. Описанные в мане опции не работают. Молодцы, продолжайте в том же духе.
>> http://git.altlinux.org/people/ldv/packages/?p=sudo.git
> Этот ваш альтовский sudo давным-давно поломан. Описанные в мане опции не работают.А именно?
> Молодцы, продолжайте в том же духе.
Ну не набрасывать же тень на плетень, как это делаете Вы.
-E например. Остальное не проверял, потому что не нужно было.
P.S. И не надо рассказывать, что -E — это дыра. Во-первых, дырой оно было бы, если бы было по умолчанию, а не опцией. Во-вторых, в любом случае поведение должно соответствовать документации.
> P.S. И не надо рассказывать, что -E — это дыра. Во-первых, дырой
> оно было бы, если бы было по умолчанию, а не опцией.ваще-то - дыра. Проблема что опция доступна пользователю, а оверрайд, блокирующий ее применение не тем пользователем - находится в конфиге и неочевиден.
другое дело, что тех, кто дает суду недоверенным пользователям, еще многие открытия ждут не дождутся.
Вот и именно, что если дать дураку sudo — он найдёт способ отстрелить себе ногу, и отсутствие опции, про которую он всё равно не знает, его не спасёт. А не дураку бывает надо. Иногда. Редко.
> -E например. Остальное не проверял, потому что не нужно было.А теперь покажите пальцем место в мане из этого пакета, где эта опция описана.
// понаберут таких...
Когда ставил 7 версию — была. Что, убрали? Ну и ладно, всё равно живых пользователей альта в дикой природе мне встречать не доводилось. Если остались — их проблема, что работающие на всех остальных дистрибутивах скрипты у них падать будут.
> скрипты у них падать будут.ну-ка, ну-ка, с этого места поподробнее - это у кого у нас *такие* скрипты?
Не ansible ли снова?
Нет, не ansible. Если интересует предмет моей боли — это скрипт запуска GUI-приложения с рутовыми привилегиями (то есть нужна переменная DISPLAY, которую sudo нещадно ликвидирует). Да, я знаю про pkexec, нет, не подходит.
> Нет, не ansible. Если интересует предмет моей боли — это скрипт запуска
> GUI-приложения с рутовыми привилегиями (то есть нужна переменная DISPLAY, которую sudo
> нещадно ликвидирует).хха, если бы так - хватило бы env_keep+=DISPLAY - это-то совершенно безобидно.
Засада в том, что хто ж енто последние двадцать лет видел сервер с +localhost, хотя бы?
А в env_keep=HOME столько всяких изумительных побочных эффектов, что даже я, у которого untrusted users и криворукие макаки по хостам не ходют, чавой-та к нему нервно отношусь.
> хватило бы env_keep+=DISPLAY - это-то совершенно безобидно.Во-первых, не безобидно. Запускать в иксах что попало от рута — дело рискованное, и это давно уже запретили везде, где только можно. Тот же pkexec такое разрешает только для избранных программ, заранее прописанных в конфиге.
Во-вторых, править sudoers ради однократного запуска программы, да ещё и не на моей системе, — нет уж, увольте. К тому же такой возможности просто нет. Есть возможность запустить sudo -E, это работает везде, где есть sudo. Альт? Ну что ж, фиг с ним, с альтом, по крайней мере пока на нём юзеров не заведётся.
> Во-первых, не безобидно. Запускать в иксах что попало от рутану так не запускай что попало и от рута - "полагаем, вы уже прослушали лекцию системного администратора, что тут можно, а что нельзя".
> и это давно уже запретили везде, где только можно
никто этого специально не запрещал, оно само сломалось с тех пор, как появились display managers (надо ж как-то изолироваться от других пользователей).
> К тому же такой возможности просто нет. Есть возможность запустить sudo -E
эмм... тогда возвращаемся к исходной теме- раз тебе не дали такую возможность, значит, и -E, гораздо более опасную, тебе оставили просто по ошибке, не зная о такой фиче или как ее отключать. Нет -E - нет ошибок, как хорошо (голосом фошизда-без-лопаты из metroLL).
> Нет, не ansible. Если интересует предмет моей боли — это скрипт запуска
> GUI-приложения с рутовыми привилегиями (то есть нужна переменная DISPLAY,
> которую sudo нещадно ликвидирует).А какой красавец писал GUI-приложение с рутовыми привилегиями вместо привилегированного хелпера? (и нет, не пытающего опять-таки запустить всю ту хрень от рута)
(интересно, слышал ли этот экземпляр про MIT-MAGIC-COOKIE и дальше со всеми вытекающими)
> А какой красавец писал GUI-приложение с рутовыми привилегиями вместо привилегированного
> хелпера?а смысл?
Если запускать его в trusted окружении (читай, из под собственного юзера на собственных иксах, где нет левых клиентов), гораздо надежнее вручную дернуть su, чем полагаться на хелпер (который могут и поломать, и попытаться запустить без спросу другие).
Хотя, разумеется, это не стильно,не модно и не молодежно, и скорее всего речь о какой-нибудь хрени двадцатилетней давности, еще на osf/motif. (хотя, хотя... а скажите-ка, у нас вайршкварк-то уже обзавелся подобным хелпером?)> (интересно, слышал ли этот экземпляр про MIT-MAGIC-COOKIE и дальше со всеми вытекающими)
ну, я, собственно, на это и намекал.
впрочем cat .Xauthority > /root/.Xauthority - всегда так делаем!
> http://git.altlinux.org/people/ldv/packages/?p=sudo.gitsudoedit зачем-то починен, а не выброшен нафиг ;-)
> Аналоги sudo есть? С тем же функционалом и без "неведомой херни", пусть
> хоть на порядок меньше. Ну и конечно же хотелось бы, что
> бы код был как картина маслом ;)Опенята клепали же свой аналог doas, была новость. Не тыкал, не знаю даже, портировали уже на пингвина или оно, как обычно, никому не нужно. Но если код приняли в апстрим опененка, то слишком уж отст0йным оно быть не должно.
> Опенята клепали же свой аналог doas,вам мало roaming в sshd и насквозь гнилой libressl, чтобы понять, что это будет еще хуже, чем sudo?
(особенно, когда попытаешься отвязать от общего чудо-проекта - включая вот ровно обсуждаемые грабли. Они линуксоспецифичны, сюрприз, да?)
Как можно запретить выполнение команды конкретному пользователю, например ls не запрещая другим пользователям? Пока тока acl на ум приходят
> Как можно запретить выполнение команды конкретному пользователю, например ls не запрещая
> другим пользователям? Пока тока acl на ум приходятrbash или подобное, может быть.
selinux, однако :) точнее rbac
Очень красивый метод описан. Не какое-то там осточертевшие переполнение, а красиво и со вкусом.
Зачем его используют на локалхосте? Есть же su.
А чего все так возбудились-то? Если я правильно понял, то нужен физический доступ.