Bug 23700

Summary: Совместимость по параметрам и поведению с версией из других дистрибутивов
Product: Sisyphus Reporter: Andrey Cherepanov <cas>
Component: suAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, anubix, asdf, dd1email, evg, glebfm, kharpost, lav, ldv, m, placeholder, raa, rider, shadowsbrother, sotor, zerg
Version: unstableKeywords: usability
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 14078, 46625    
Attachments:
Description Flags
В Ubuntu получше none

Description Andrey Cherepanov 2010-06-30 17:06:53 MSD
Прошу реализовать совместимость по поведению и набору параметров (тот же -m) с принятой во многих мейнстримовых проектах версией su из coreutils. Это позволит обеспечить совместимость как по документации, так и по использованию всяких проприетарных программ (например, Postgres Plus Advanced Server).
Comment 1 Andrey Rahmatullin 2010-06-30 17:12:33 MSD
Дада, и поведение без -l тоже.
Comment 2 Andrey Cherepanov 2010-11-06 17:31:11 MSK
Всё же жить можно и так. Не distro-blocker
Comment 3 Sergey V Turchin 2010-11-13 15:42:00 MSK
Я бы еще попросил не закрывать pty при -l, иначе во всех kdesu приходиться отрывать -l, т.к. перестает работать.
Comment 4 Andrey Cherepanov 2011-07-19 14:08:02 MSK
Дима, то, что ты убрал зависимость на 23155 говорит о том, что время исправления не определено?
Comment 5 Dmitry V. Levin 2011-07-19 15:03:20 MSK
(In reply to comment #4)
> Дима, то, что ты убрал зависимость на 23155 говорит о том, что время
> исправления не определено?

Не только время не определено, но и направление движения сейчас уже не вполне ясно, см. http://openwall.com/lists/oss-security/2011/06/02/3 и далее по треду.
Comment 6 Dmitry V. Levin 2012-06-01 02:15:52 MSK
Тем временем в openSUSE и Fedora su переезжает из coreutils в util-linux:
http://lists.gnu.org/archive/html/coreutils/2012-05/msg00101.html
Comment 7 Sergey V Turchin 2012-06-01 15:47:16 MSK
Переезжают в каком виде? В каком у них или в каком сейчас у нас?
Comment 8 Zerg 2012-07-11 13:21:57 MSK
Наверное, стоит начать собирать ссылки на "успешные истории"
http://forum.altlinux.org/index.php/topic,26167.0.html
Comment 10 Anton Farygin 2017-10-02 22:24:16 MSK
Вот здесь тоже человек забыл про '-'
https://forum.altlinux.org/index.php?topic=40051.msg317487#msg317487
Comment 11 Anton Farygin 2017-10-02 22:28:23 MSK
Дима, несмотря на то, что кто-то где-то куда-то переехал - поведение su у всех и у нас до сих пор отличается. у fc su собран из util-linux, наверное нам тоже стоит переехать на него.
Comment 12 Anton Farygin 2018-11-21 07:30:59 MSK
Предлагаю попробовать решить это к p9.
Кто-то есть, кто расчитывает на наше нестандартное поведение su ?
Comment 13 Dmitry V. Levin 2018-11-21 07:46:57 MSK
При этом у su нет "стандартного" поведения.
Comment 14 Anton Farygin 2018-11-21 08:14:39 MSK
Термин "стандартное" можно заменить на "общепринятое".
Важно что все понимают о чём речь - наши новые пользователи постоянно натыкаются на то, что su у нас и su в других популярных дистрибутивах ведёт себя по разному.
Comment 15 Anton Farygin 2018-11-21 08:16:55 MSK
Так вопрос остаётся  - кто-то у нас расчитывает на несоответствующее общепринятому поведение su ?
Comment 16 Dmitry V. Levin 2018-11-21 08:26:27 MSK
(In reply to comment #15)
> Так вопрос остаётся  - кто-то у нас расчитывает на несоответствующее
> общепринятому поведение su ?

На какое именно?  На поведение без -l?  Это хороший вопрос.
Comment 17 Anton Farygin 2018-11-21 09:48:59 MSK
Да, есть ли кто-то, кому действительно нужен su без -l по умолчанию ?

Может быть соберёшь тестовое задание с другим su, а я подумаю как это проверить ?
Comment 18 Sergey V Turchin 2018-11-21 09:50:12 MSK
(В ответ на комментарий №16)
> На поведение без -l?  Это хороший вопрос.
Этим вопросом пользователи уже за много лет задолбали, задалбывают и будут
задалбывать вечно. Только они его перефразируют, как: "Почему не работает
<что-то-случайное>?".
Comment 19 Anton Farygin 2018-11-21 09:54:08 MSK
Почему вечно ? Я верю в то, что Дима с головой и исправит эту мелкую несуразность.
Comment 20 Sergey V Turchin 2018-11-21 09:59:00 MSK
(В ответ на комментарий №19)
> Почему вечно ? Я верю в то, что Дима с головой и исправит эту мелкую
> несуразность.
Я тоже верю, но вдруг это будет после вечности? ;-)
Comment 21 Sergey V Turchin 2018-11-21 09:59:20 MSK
(В ответ на комментарий №16)
> (In reply to comment #15)
> > Так вопрос остаётся  - кто-то у нас расчитывает на несоответствующее
> > общепринятому поведение su ?
> На какое именно?
У меня, наоборот, обратная проблема из-за закрытия при -l за собой pty, через
который kdesu работает, поэтому приходится там отрывать -l.

Патчей для нормальной работа ни у кого я не видел, следовательно в них такого
поведения нет.

P.S.
Мне бы даже помог отдельный пакет с другим su, который ставиться без
конфликтов.
Comment 22 Vitaly Lipatov 2018-11-21 10:04:37 MSK
(В ответ на комментарий №21)
> (В ответ на комментарий №16)
> > (In reply to comment #15)
> > > Так вопрос остаётся  - кто-то у нас расчитывает на несоответствующее
> > > общепринятому поведение su ?
> > На какое именно?
> У меня, наоборот, обратная проблема из-за закрытия при -l за собой pty, через
> который kdesu работает, поэтому приходится там отрывать -l.
> 
> Патчей для нормальной работа ни у кого я не видел, следовательно в них такого
> поведения нет.
> 
> P.S.
> Мне бы даже помог отдельный пакет с другим su, который ставиться без
> конфликтов.
Быть может нам нужно поступить как с bash и sh — чтобы был su для людей и su для скриптов?
Comment 23 Anton Farygin 2018-11-21 10:08:00 MSK
Для скриптов наверняка можно сделать su без suid, работающий под рутом.
Comment 24 mikhailnov 2018-11-21 15:21:58 MSK
(In reply to comment #14)
> Термин "стандартное" можно заменить на "общепринятое".
> Важно что все понимают о чём речь - наши новые пользователи постоянно
> натыкаются на то, что su у нас и su в других популярных дистрибутивах ведёт
> себя по разному.

Они даже не знают, что такое PATH. Здесь вопрос: а что дает отсутствие sbin в PATH не рута, кроме "ложных" сообщений "command not found"?
Comment 25 Anton Farygin 2018-11-21 15:24:43 MSK
(В ответ на комментарий №24)
> (In reply to comment #14)
> > Термин "стандартное" можно заменить на "общепринятое".
> > Важно что все понимают о чём речь - наши новые пользователи постоянно
> > натыкаются на то, что su у нас и su в других популярных дистрибутивах ведёт
> > себя по разному.
> 
> Они даже не знают, что такое PATH. Здесь вопрос: а что дает отсутствие sbin в
> PATH не рута, кроме "ложных" сообщений "command not found"?

Повесьте, пожалуйста, по этому поводу свою отдельную багу и спрашивайте там.
Comment 26 Anton Farygin 2020-07-14 10:54:55 MSK
Есть предложение собрать общепринятую (совместимую с другими дистрибутивами) реализацию su из пакета util-linux под другим именем и использовать её через alias.

@legion, что скажешь ?
Comment 27 Anton Farygin 2020-07-14 10:55:40 MSK
Второй вариант - поправить эту реализацию для изменения поведения по умолчанию, но на это нужно одобрение @ldv. Дима, что скажешь ?
Comment 28 Alexey Gladkov 2020-07-15 16:12:27 MSK
(Ответ для Anton Farygin на комментарий #26)
> Есть предложение собрать общепринятую (совместимую с другими дистрибутивами)
> реализацию su из пакета util-linux под другим именем и использовать её через
> alias.
> 
> @legion, что скажешь ?

Я посмотрел на две версии и код совсем разный. Поэтому я беспокоюсь, что появяться какие-нибудь регрессии. В идеале нужно вычитывать код util-linux/su и сравнивать.

Я сделал тестовое задание. Прошу заинтересованных проверить:

http://webery.altlinux.org/task/254961
Comment 29 Sergey V Turchin 2020-07-15 16:40:35 MSK
> Я сделал тестовое задание. Прошу заинтересованных проверить:
Как? В нём же упакован /bin/su .
Comment 30 Sergey V Turchin 2020-07-15 16:44:26 MSK
(Ответ для Alexey Gladkov на комментарий #28)
> Я посмотрел на две версии и код совсем разный. Поэтому я беспокоюсь, что
> появяться какие-нибудь регрессии.
Я больше беспокоюсь, что Дима этот обсолет su не пропустит, поэтому и предлагалось сделать alias, чтоб не всем.

P.S.
А если Дима не против, то так даже лучше.
Comment 31 Sergey V Turchin 2020-07-15 16:48:08 MSK
(Ответ для Alexey Gladkov на комментарий #28)
> беспокоюсь, что появяться какие-нибудь регрессии
У меня /usr/libexec/kf5/kdesu обломался из-за того, что пропатчен не обламываться с текущим su.
Comment 32 Alexey Gladkov 2020-07-15 16:50:00 MSK
(Ответ для Sergey V Turchin на комментарий #29)
> > Я сделал тестовое задание. Прошу заинтересованных проверить:
> Как? В нём же упакован /bin/su .

Эм. Поставить util-linux и поверить su из него ?


(Ответ для Sergey V Turchin на комментарий #30)
> Я больше беспокоюсь, что Дима этот обсолет su не пропустит, поэтому и
> предлагалось сделать alias, чтоб не всем.

Если предложение было сделать подпакет с другим именем утилиты, то я против. Это не дело иметь разные реализации такой системной утилиты. Либо используем одну реализацию, либо другую.
Comment 33 Sergey V Turchin 2020-07-15 17:30:28 MSK
(Ответ для Alexey Gladkov на комментарий #32)
> Либо используем одну реализацию, либо другую.
Значит, надо искать. Могут быть ещё регрессии.
Comment 34 Anton Farygin 2020-07-15 18:04:59 MSK
Лёша, спасибо. Берём в тестирование и будем искать регрессии.
Comment 35 Sergey V Turchin 2020-07-16 10:07:30 MSK
$su -l root
su: Сбой при проверке подлинности
$
Comment 36 Sergey V Turchin 2020-07-16 10:09:54 MSK
при этом в логах
июл 16 10:08:39 zerg.malta.altlinux.ru audit[739741]: USER_AUTH pid=739741 uid=500 auid=500 ses=2 msg='op=PAM:authentication grantors=? acct="root" exe="/bin/su" hostname=zerg.malta.altlinux.ru addr=? terminal=pts/12 res=failed'
июл 16 10:08:39 zerg.malta.altlinux.ru kernel: audit: type=1100 audit(1594883319.277:3932): pid=739741 uid=500 auid=500 ses=2 msg='op=PAM:authentication grantors=? acct="root" exe="/bin/su" hostname=zerg.malta.altlinux.ru addr=? terminal=pts/12 res=failed'
июл 16 10:08:39 zerg.malta.altlinux.ru su[739741]: FAILED SU (to root) zerg on pts/12
Comment 37 Alexey Gladkov 2020-07-16 13:25:57 MSK
(Ответ для Sergey V Turchin на комментарий #35)
> $su -l root
> su: Сбой при проверке подлинности
> $

Ага. Спасибо, Серёг! Обновил задание. Должно быть исправлено.
Comment 38 Anton Farygin 2020-07-16 13:46:18 MSK
поставил себе, работает.

man 1 su в русском варианте остался от SimplePamApps, но это уже в другом пакете исправлять.
Comment 39 Sergey V Turchin 2020-07-16 14:11:20 MSK
А у меня kdesu заработал.
Comment 40 Sergey V Turchin 2020-07-16 14:12:15 MSK
Не знаю, правда, достаточно ли нам этого будет. Надо у других посмотреть.

[zerg@zerg ~]$ su -
Пароль: 
[root@zerg ~]# set| grep zerg
HOSTNAME=zerg.malta.altlinux.ru
[root@zerg ~]# 
[root@zerg ~]# logout
[zerg@zerg ~]$ su
Пароль: 
[root@zerg zerg]# set| grep zerg
BASH_ENV=/home/zerg/.bashrc
GIT_AUTHOR_EMAIL=zerg@altlinux.org
GIT_COMMITTER_EMAIL=zerg@altlinux.org
HOSTNAME=zerg.malta.altlinux.ru
LOGNAME=zerg
MAIL=/var/mail/zerg
PWD=/home/zerg
SESSION_MANAGER=local/zerg.malta.altlinux.ru:@/tmp/.ICE-unix/4505,unix/zerg.malta.altlinux.ru:/tmp/.ICE-unix/4505
SSH_AUTH_SOCK=/home/zerg/.ssh/agent
USER=zerg
[root@zerg zerg]#
Comment 41 Sergey V Turchin 2020-07-16 14:49:17 MSK
Created attachment 8875 [details]
В Ubuntu получше
Comment 42 Anton Farygin 2020-07-16 15:05:49 MSK
А что в kubuntu до su с set|grep kubuntu  ?

т.е. - возможно что у них нет тех переменных, которые есть у нас.
Comment 43 Anton Farygin 2020-07-16 15:31:00 MSK
в ubuntu su из другого пакета, уж если сравнивать поведение, то с fedora, в которой он из util-linux.

В man 1 su описано то, что @zerg увидел в su и env, это поведение выглядит приемлемым для su без -l
Comment 44 Sergey V Turchin 2020-07-16 16:10:36 MSK
LOGNAME=zerg
MAIL=/var/mail/zerg
PWD=/home/zerg
USER=zerg

Мне кажется, что это всё у нас лишнее. В Убунте этого нет.
Comment 45 Sergey V Turchin 2020-07-16 17:36:23 MSK
(Ответ для Anton Farygin на комментарий #42)
> А что в kubuntu до su с set|grep kubuntu  ?
MAIL нет, разве что.
Comment 46 Anton Farygin 2020-07-17 08:27:59 MSK
В debian-bases переменные окружения сбрасываются так:
https://github.com/shadow-maint/shadow/blob/master/src/su.c#L838

Но вроде как debian подумывает перейти на su из util-linux, так что будет везде примерно одинаково.
Comment 48 Alexey Gladkov 2020-07-20 12:38:41 MSK
Для протокола: Я жду одобрения от Димы, чтобы отправить задание в сизиф.
Comment 49 Sergey V Turchin 2020-07-24 15:33:34 MSK
Может и Дима для протокола что-нибудь нам напишет?
Comment 50 Dmitry V. Levin 2020-07-24 15:43:24 MSK
Я планирую посмотреть код su в util-linux, но у меня очередь на большие code review.
Сперва у меня apt, который готовит imz@, и это срочно.
Потом strace, там тоже порядочно накопилось.
Потом hasher-priv, который уже сделал legion@ и ждёт, когда я посмотрю.
Comment 51 Sergey V Turchin 2020-07-24 15:47:55 MSK
Ок, но прошу иметь ввиду, что эта проблема за последние 15 лет уже задолбала.
Comment 52 Alexey Gladkov 2021-06-09 16:00:42 MSK
Думаю, эта проблема в ближайшие 10 лет не решится.
Comment 53 Anton Farygin 2021-06-09 17:43:03 MSK
(Ответ для Alexey Gladkov на комментарий #52)
> Думаю, эта проблема в ближайшие 10 лет не решится.

ну apt уже почти скоро, правда я не знаю, смотрит ли его Дима.
Comment 54 Андрей Русев 2022-04-01 17:55:13 MSK
Наткнулся на ещё один вариант несовместимости su в Альте: он не поддерживает "--".  Это обсуловлено тем, что в отличие от традиционных реализаций он собран не с getopt-ом. Кажется, что перейти на getopt, ничего не сломав, куда проще, чем разобраться с -l и -m. Поэтому я бы выделил свою просьбу в отдельный запрос, но Алексей Новодворский предложил написать сюда.
Comment 55 Sergey V Turchin 2023-03-30 11:09:43 MSK
(Ответ для Dmitry V. Levin на комментарий #5)
> Не только время не определено, но и направление движения сейчас уже не
> вполне ясно
За 10 лет что-то прояснилось?
Comment 56 asdf 2023-04-07 12:08:10 MSK
Судя по валу вопросов от новых пользователей, в частности, в @alt_linux, которые внезапно обнаруживают, что "su" надо было вызывать как "su -", надо как-то эту проблему решать, особенно если учесть, что по известным причинам ожидается массовый наплыв новых пользователей дистрибутивов Альт.

Временно эту проблему можно решить, если для любого нового логина в системе вызов утилиты "su" будет сопровождаться предупреждением (на двух языках?), о том, что обычный вызов - это "su -", а в виде "su" вызов возможен, если только вызывающий знает для чего конкретно нужно именно так.

Можно ещё и вопрос включить типа "Знает ли пользователь о возможных разрушительных последствиях, вызывая "su" вместо "su -" (НЕТ/да)?" Хотя это может сломать поведение, конечно.

О том как убрать это предупреждение, должно быть написано где-то в другом месте, где и отличие объясняется в явном виде.

Как-то так. Возможно.
Comment 57 Sergey V Turchin 2023-07-06 12:08:00 MSK
(Ответ для Sergey V Turchin на комментарий #3)
> Я бы еще попросил не закрывать pty при -l, иначе во всех kdesu приходиться
> отрывать -l, т.к. перестает работать.
Это уже неактуально.
Comment 58 Sergey V Turchin 2023-07-06 12:11:01 MSK
(Ответ для Zerg на комментарий #8)
> Наверное, стоит начать собирать ссылки на "успешные истории"
Это не сработало за все годы. Возможно, надо отправлять каждого пользователя прямо к Диме по почте на консультацию.