Работы для дисплеев X11, если можно добраться до него с "ярлыками" на рабочем столе:
Работы над Windows(TM) также.
Простой: потому что это не может. Нет никакого системного вызова для изменения uid другого процесса. Если Вы не хотите оставлять родительскую оболочку вокруг ожидания su
для выхода затем снабдите префиксом его exec
встроенная команда, которая вызывает оболочку непосредственно должностному лицу, не разветвляясь сначала. Конечно, если Вы поймете пароль превратно, то не будет никакой оболочки для возврата к, таким образом, сессия завершится.
Как был указан, нет никакого способа сделать это. Конечно, если существует желание, существует путь: то, что нет такого syscall, не является никакой причиной, почему это не могло быть сделано. Тем не менее как mtk затронутый в комментарии, вообразите опустошение, оно могло создать наличие syscall для изменения контекста защиты несвязанного процесса. Если ничто иное, я вижу, что состояние состязания разражается в три... два... один... (и давайте даже не начинать на какой, изменив контекст защиты init
или getty
мог сделать.)
Еще одна причина - это su
не только вызывает новую оболочку. Это также имеет способность управлять, какая оболочка запускается (использование -s
или --shell
), и управление это передающими параметрами через (в GNU) -
/-l
/--login
и -c
(--command
) параметры. Параметры, переданные su, могут также иметь эффект на среду новой оболочки. Таким образом, даже если бы Вы могли бы просто изменить контекст защиты родительского процесса, Вы не обязательно хотели бы сделать так.