Баг, глюк или фича? (Переименование и удаление в пользовательском каталоге файла от рута)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy

Баг, глюк или фича?

Сообщение Olden Gremlin »

Находимся в каталоге tmp, который расположен у пользователя системы в хомдире:

Shell

~/tmp$ touch ttt ~/tmp$ chmod 600 ttt ~/tmp$ sudo chown root.root ttt ~/tmp$ ls -l ttt -rw------- 1 root root 0 Сен 26 16:58 ttt ~/tmp$ mv ttt tttt ~/tmp$ ls -l ttt* -rw------- 1 root root 0 Сен 26 16:58 tttt ~/tmp$ rm tttt ~/tmp$ ls -l ttt* ls: невозможно получить доступ к ttt*: Нет такого файла или каталога


То ли лыжи не едут, то ли я чего-то недопонимаю?
Мною проверялось на ядрах 2.6.26-2-amd64 и 3.2.0-3-amd64, ОС Debian.

Подумалось на suid, но нет:

Shell

olden@olden:~$ stat $( which mv ) Файл: «/bin/mv» Размер: 121896 Блоков: 240 Блок В/В: 4096 обычный файл Устройство: 801h/2049d Inode: 263461 Ссылки: 1 Доступ: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2012-09-17 08:37:33.000000000 +0300 Модифицирован: 2012-09-11 23:23:44.000000000 +0300 Изменён: 2012-09-17 08:37:44.842743777 +0300 Создан: -


Shell

olden@olden:~$ stat $( which rm ) Файл: «/bin/rm» Размер: 60000 Блоков: 120 Блок В/В: 4096 обычный файл Устройство: 801h/2049d Inode: 263577 Ссылки: 1 Доступ: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2012-09-17 08:37:33.000000000 +0300 Модифицирован: 2012-09-11 23:23:44.000000000 +0300 Изменён: 2012-09-17 08:37:44.914742121 +0300 Создан: -


В пути тоже никаких странностей не увидел:

Shell

$ stat / Файл: «/» Размер: 4096 Блоков: 8 Блок В/В: 4096 каталог Устройство: 801h/2049d Inode: 2 Ссылки: 26 Доступ: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2010-09-22 11:47:08.000000000 +0300 Модифицирован: 2012-08-18 09:41:20.188733456 +0300 Изменён: 2012-08-18 09:41:20.188733456 +0300 Создан: -


Shell

~$ stat /home Файл: «/home» Размер: 4096 Блоков: 8 Блок В/В: 4096 каталог Устройство: 805h/2053d Inode: 2 Ссылки: 7 Доступ: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2012-01-09 13:50:06.002304506 +0200 Модифицирован: 2012-03-24 09:39:48.690003164 +0200 Изменён: 2012-03-24 09:39:48.690003164 +0200 Создан: -


Shell

~$ stat /home/olden Файл: «/home/olden» Размер: 12288 Блоков: 24 Блок В/В: 4096 каталог Устройство: 805h/2053d Inode: 10223617 Ссылки: 65 Доступ: (0755/drwxr-xr-x) Uid: ( 1000/ olden) Gid: ( 1000/ olden) Доступ: 2012-01-10 07:18:24.774304903 +0200 Модифицирован: 2012-09-26 14:18:32.448362248 +0300 Изменён: 2012-09-26 14:18:32.448362248 +0300 Создан: -


Shell

~$ stat /home/olden/tmp Файл: «/home/olden/tmp» Размер: 4096 Блоков: 8 Блок В/В: 4096 каталог Устройство: 805h/2053d Inode: 10620902 Ссылки: 9 Доступ: (0755/drwxr-xr-x) Uid: ( 1000/ olden) Gid: ( 1000/ olden) Доступ: 2012-01-10 07:46:01.906304669 +0200 Модифицирован: 2012-09-26 16:54:20.820492844 +0300 Изменён: 2012-09-26 16:54:20.820492844 +0300 Создан: -


В fstab-е тоже ничего необычного:

Shell

~$ cat /etc/fstab | egrep "\s+/home\s+" UUID=94f4fda8-3df3-4742-93ca-6d501c62c33d /home ext4 noatime,user_xattr 0 2


У знакомых под мандривами и убунтами всё повторялось точь в точь.

Наткнулся на такое весьма странное поведение совершенно случайно. Никогда раньше о таких странностях ни от кого не слышал и нигде не читал.

Баг, глюк или фича?
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Баг, глюк или фича?

Сообщение Bizdelnick »

Всё правильно, Вы же файл не изменяете. Вы изменяете каталог, в котором он находится, и в который у Вас есть право записи.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1147
Статус: Slacker!
ОС: Slackware64-current

Re: Баг, глюк или фича?

Сообщение yars »

Ага, а фокусы с rm -Rf / от простого пользователя тогда как не проходят?
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Баг, глюк или фича?

Сообщение Bizdelnick »

yars писал(а):
26.09.2012 18:50
Ага, а фокусы с rm -Rf / от простого пользователя тогда как не проходят?

Не проходят, потому что

Shell

% ls -ld / drwxr-xr-x 24 root root 4096 Сен 14 14:19 /

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy

Re: Баг, глюк или фича?

Сообщение Olden Gremlin »

Bizdelnick писал(а):
26.09.2012 18:39
Всё правильно, Вы же файл не изменяете. Вы изменяете каталог, в котором он находится, и в который у Вас есть право записи.
ok, представляем себе следующую ситуацию. я root. я хочу создать в каталоге пользователя какую-то фееричную хрень, но не хочу чтобы пользователь к ней имел доступ (root.root/0600). каковы мои действия, как рута, чтобы пользователь своими шаловливыми ручками не мог в своём домашнем каталоге удалить мои художества?

ps: чисто теоретический вопрос, не имеющий лично для меня никакого применения ;)
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1147
Статус: Slacker!
ОС: Slackware64-current

Re: Баг, глюк или фича?

Сообщение yars »

Olden Gremlin писал(а):
26.09.2012 18:52
каковы мои действия, как рута, чтобы пользователь своими шаловливыми ручками не мог в своём домашней каталоге удалить мои художества?

Sticky-бит поставить?
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Баг, глюк или фича?

Сообщение Bizdelnick »

Olden Gremlin писал(а):
26.09.2012 18:52
ok, представляем себе следующую ситуацию. я root. я хочу создать в каталоге пользователя какую-то фееричную хрень, но не хочу чтобы пользователь к ней имел доступ (root.root/0600). каковы мои действия, как рута, чтобы пользователь своими шаловливыми ручками не мог в своём домашней каталоге удалить мои художества?

Можно создать в каталоге пользователя подкаталог, принадлежащий руту, а уже в него положить файл. Удалить файл из чужого каталога пользователь не сможет, удалить непустой каталог - тоже.
Решить задачу "в лоб" наверное можно при посредстве систем мандатного контроля доступа, но тут сходу ничего не подскажу.

Olden Gremlin писал(а):
26.09.2012 18:52
ps: чисто теоретический вопрос, не имеющий лично для меня никакого применения

Да вообще ситуация нетипичная, я бы сказал. :-)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Olden Gremlin писал(а):
26.09.2012 18:29
~/tmp$ ls -l ttt*
-rw------- 1 root root 0 Сен 26 16:58 tttt
~/tmp$ rm tttt
~/tmp$ ls -l ttt*
ls: невозможно получить доступ к ttt*: Нет такого файла или каталога

простотите, а ЧЕГО вы ожидали? Перевод на $500k ?
не понимаю.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Баг, глюк или фича?

Сообщение Brainsburn »

1) Владелец каталога может удалять любые файлы, принадлежащие непосредственно этому каталогу.
2) Изменить файл уже не получится, но его можно скопировать, старый файл удалить, а новый поместить на его место.
3) Хотите, чтобы пользователь не мог удалить файлы в своем каталоге, создайте в нем еще один каталог - с соответствующими правами, как уже сказал Bizdelnick.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Olden Gremlin писал(а):
26.09.2012 18:52
ok, представляем себе следующую ситуацию. я root. я хочу создать в каталоге пользователя какую-то фееричную хрень, но не хочу чтобы пользователь к ней имел доступ (root.root/0600). каковы мои действия, как рута, чтобы пользователь своими шаловливыми ручками не мог в своём домашнем каталоге удалить мои художества?

в ext есть immutable.
есть append only (в таких каталогах создавать можно, удалять нелья).
Ну и как выше заметили, если в каталоге есть файл, каталог удалить невозможно. Потому запрещаем менять каталог (-w dir), и теперь юзер не может удалить файл (и создать тоже), а следовательно не может удалить и каталог.
И тем не менее, это НЕ полная защита: юзер может переименовать каталог. Скажем, если рут решил так защитить конфиг (~/.config/), то юзер может переименовать ~/.config/, и создать на его месте свой, со своими файлами.
Hint: immutable вам поможет.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Brainsburn писал(а):
26.09.2012 21:31
1) Владелец каталога может удалять любые файлы, принадлежащие непосредственно этому каталогу.

если:
1а) у владельца хватит ума поставить +w на каталог
1б) рут не поставил append only на каталог
1в) рут не поставил immutable на каталог (или файл)
1г) рут не поставил в ro всю ФС
1д) никакой процесс не использует этот файл (если использует, то файл будет действительно удалён, только когда его все отпустят)
1е) это последний хардлинк. Хардлинки могут быть и у рута или ещё у кого, куда юзеру нет доступа.
1ё) памяти хватит на загрузку этого каталога и редактирование его.
может ещё что-то забыл...
Brainsburn писал(а):
26.09.2012 21:31
2) Изменить файл уже не получится, но его можно скопировать, старый файл удалить, а новый поместить на его место.

sed -i сделает этот процесс нативным и простым...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Баг, глюк или фича?

Сообщение Brainsburn »

drBatty писал(а):
26.09.2012 21:43
может ещё что-то забыл...

Некоторые моменты очевидны, некоторые - нет. Спасибо.

drBatty писал(а):
26.09.2012 21:43
Brainsburn писал(а):
26.09.2012 21:31
2) Изменить файл уже не получится, но его можно скопировать, старый файл удалить, а новый поместить на его место.

sed -i сделает этот процесс нативным и простым...

В vim достаточно сделать :w!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Brainsburn писал(а):
26.09.2012 23:02
В vim достаточно сделать :w!

если в виме сделать :w, то он выдаст сообщение, которое лично мне всегда рвало шаблон напрочь:
E45: Включена опция 'readonly' (добавьте !, чтобы не обращать внимания)

ИЧСХ при :w! он файл таки "отредактирует", причём его права будут точно такими же, READ ONLY, и только ls -i расскажет о том, что это другой файл.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Баг, глюк или фича?

Сообщение SLEDopit »

drBatty писал(а):
27.09.2012 10:56
причём его права будут точно такими же
Владелец только может поменяться.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy

Re: Баг, глюк или фича?

Сообщение Olden Gremlin »

Spoiler
drBatty писал(а):
26.09.2012 21:22
Olden Gremlin писал(а):
26.09.2012 18:29
~/tmp$ ls -l ttt*
-rw------- 1 root root 0 Сен 26 16:58 tttt
~/tmp$ rm tttt
~/tmp$ ls -l ttt*
ls: невозможно получить доступ к ttt*: Нет такого файла или каталога

простотите, а ЧЕГО вы ожидали? Перевод на $500k ?
не понимаю.
Конечно же я ждал плюшек и подарков. Но плюшек не дали, а подарки оказались распакованными.


Всё вышесказанное безусловно верно и понятно. Впрочем немного не очевидно, для неподготовленного сознанияю.
С другой стороны, категорически не могу представить ситуацию в которой руту было бы необходимо что-либо таким вот извратным образом хранить в каталогах пользователей (сам так никогда не поступаю и другим не советую).

Дискуссия имхо исчерпала себя. Остаётся лишь надеяться, что кому-нибудь из начинающих она будет полезна и познавательна.
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

SLEDopit писал(а):
27.09.2012 12:25
Владелец только может поменяться.

Спасибо, К.О.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Olden Gremlin писал(а):
27.09.2012 15:02
С другой стороны, категорически не могу представить ситуацию в которой руту было бы необходимо что-либо таким вот извратным образом хранить в каталогах пользователей (сам так никогда не поступаю и другим не советую).

про киоски слышали? Это такая система, в которой может работать любой МД (луркайте), при этом он НИЧЕГО не может испортить, даже настройки своего аккаунта. Например он не сможет удалить/переместить любую панельку/менюшку, а даже если и сможет, то после перезахода всё вернётся как было. Такие вещи только таким образом и реализуются. Кстати - это совсем не сложно.
Olden Gremlin писал(а):
27.09.2012 15:02
Впрочем немного не очевидно, для неподготовленного сознанияю.

что-бы было очевидно, необходимо и достаточно понять простую вещь: имена файлов - это такие ярлычки, приляпанные к файлам. И лежат они(ярлычки) в каталогах. И команда rm удаляет именно ярлычки, а совсем не файлы. А вот права файлов распространяются на файлы, а не на их ярлычки. Потому, можно удалить/сменить ярлычок, и права файлов тут не причём (точнее, важны права каталога, в котором и лежат удаляемые ярлычки).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Баг, глюк или фича?

Сообщение Ленивая Бестолочь »

а вот у меня есть вопрос в тему.
есть система, в которой юзера работают ssh-ем/telnet-ом. допустим.
то есть юзер заходит на сервер какой-нибудь putty-kitty и там "сразу" запускается нужная программа.
давать юзеру возможность попадать в шелл очень не хочется.
вариантов запуска я вижу примерно три:
1. из ~/.profile ~/.bashrc и т.п.
2. из /etc/pfofile и т.п.
3. поставить юзеру соответствующий shell
теперь проблемы:
при первом и втором варианте юзер может зажать ctrl-c и, при правильном положении звёзд вывалиться в шелл.
при третьем варианте такого не будет, но.
если юзер может зайти в свой хоум по ftp или самба (scp при левом шелле не сработает), то он может поменять ~/.profile и вписать туда "bash" или типа того.
да, в самбе есть veto files, в ftp наверняка тоже что-то подобное, но это как-то кажется немного велосипедным, при наличии прав.
как можно правами защититься от этого?

ещё раз условия:
1. юзер должен ходить ssh-ем, и у него должна "автоматически" запускаться программа
2. юзер должен иметь возможность попадать по самбе и ftp
3. юзер не должен иметь возможности попасть в шелл.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Баг, глюк или фича?

Сообщение SLEDopit »

Ленивая Бестолочь писал(а):
28.09.2012 11:38
ещё раз условия:
1. юзер должен ходить ssh-ем, и у него должна "автоматически" запускаться программа
2. юзер должен иметь возможность попадать по самбе и ftp
3. юзер не должен иметь возможности попасть в шелл.

Код: Выделить всё

echo "PROMPT_COMMAND='logout'
command_name" >> ~user/.bashrc
chattr +i ~user/.bashrc
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
28.09.2012 11:38
ещё раз условия:
1. юзер должен ходить ssh-ем, и у него должна "автоматически" запускаться программа
2. юзер должен иметь возможность попадать по самбе и ftp
3. юзер не должен иметь возможности попасть в шелл.

я думаю вам поможет вот это:
ForceCommand
Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if
present. The command is invoked by using the user's login shell with the -c option. This applies to shell, command, or subsys‐
tem execution. It is most useful inside a Match block. The command originally supplied by the client is available in the
SSH_ORIGINAL_COMMAND environment variable. Specifying a command of “internal-sftp” will force the use of an in-process sftp
server that requires no support files when used with ChrootDirectory.

(man sshd_config)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

SLEDopit писал(а):
28.09.2012 11:58
command_name" >> ~user/.bashrc
chattr +i ~user/.bashrc

От CTRL+C не поможет. Кстати, а ~/.ssh/rc раньше запускается? А ~/.bash_login? А ~/.profile?
Ну и конечно лучше таки +i .bashrc не делать ИМХО.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Баг, глюк или фича?

Сообщение SLEDopit »

drBatty писал(а):
28.09.2012 12:27
От CTRL+C не поможет.
а почему цитирование без
SLEDopit писал(а):
28.09.2012 11:58
PROMPT_COMMAND='logout'
?
или оно тоже не поможет?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Баг, глюк или фича?

Сообщение Ленивая Бестолочь »

спасибо большое за предложения.
вариант drBatty:
- запускаются в следующем порядке:

Код: Выделить всё

~/.ssh/rc
~/.bashrc
~/.profile

причём не зависимо от того, какой интерпретатор (bash или dash) выбран в системе (debian) в качестве "sh".

однако - с ~/.ssh/rc ведь выходит та же песня, что и с другими пользовательскими конфигами - владелец может дать себе права на изменение каталога ".ssh" и мувнуть оттуда файл rc.
а менять владельца на ".ssh" не стоит из-за того, что ssh проверят права и, например, ключи не будут работать.

вариант Следопыта:

Код: Выделить всё

test@debian-1:~$
test@debian-1:~$ cat test.sh
PROMPT_COMMAND='logout'
while true; do
 sleep 1
done
logout
test@debian-1:~$
test@debian-1:~$ bash test.sh
^C
test@debian-1:~$
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Баг, глюк или фича?

Сообщение SLEDopit »

Ленивая Бестолочь

Код: Выделить всё

 # adduser test
Adding user `test' ...
<..>
Is the information correct? [Y/n] y
 # echo "PROMPT_COMMAND='logout'
> while : ; do sleep 1 ; done" >> ~test/.bashrc
 # chattr +i .bashrc
 #  ssh test@localhost
test@localhost's password:
Linux note 3.2.0-3-amd64 #1 SMP Mon Jul 23 02:45:17 UTC 2012 x86_64
Last login: Fri Sep 28 18:53:27 2012 from localhost
^C
Connection to localhost closed.
 #
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Баг, глюк или фича?

Сообщение Ленивая Бестолочь »

да, так работает.
тогда выходит у меня есть два варианта, примерно одинаковых по достоинствам:
либо PROMPT_COMMAND в bashrc, либо сделать программу шеллом.
и там и там проблема в том, что юзер может изменять .bashrc, что решается установкой аттрибута.
спасибо.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
28.09.2012 18:30
вариант drBatty:

мой вариант: Баг, глюк или фича?
SLEDopit писал(а):
28.09.2012 12:59
а почему цитирование без

всё равно ненадёжно ИМХО.
Ленивая Бестолоч... писал(а):
28.09.2012 19:33
тогда выходит у меня есть два варианта

прочитайте моё сообщение(ссылка выше).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Баг, глюк или фича?

Сообщение Ленивая Бестолочь »

drBatty писал(а):
28.09.2012 22:21
мой вариант: Баг, глюк или фича?

да, это очень хороший вариант.
единственный момент, который меня смущает: ведь придётся или запускать второй ssh-сервер для "светло-зелёных" пользователей, которым таки надо в шелл, например админов и сопровождения, или вызывать шелл из скрипта , решая, достоин ли юзер. второй вариант перекладывает на автора скрипта ответственность за "если что".
update:
в таком разрезе ещё scp, кажется, не работает. по крайней мере у меня не сработал.

про вариант с локальными конфигами: меня беспокоит то, что, теоретически, я могу забыть о каком-нибудь конфиге и не создать его, и не поставить аттрибут. и тогда его сможет создать юзер. или, например в 2020 году bash6 после обновления начнёт читать ~/.bash/rc или типа того. или где-нибудь внутри этой системы кто-нибудь использует csh и юзер создаст .cshrc.
короче, чтобы полагаться на вариант, завязанный на пользовательские конфиги, нужно гарантировать, что мы точно знаем все конфиги, из которых можно что-то запустить.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
29.09.2012 15:27
единственный момент, который меня смущает: ведь придётся или запускать второй ssh-сервер для "светло-зелёных" пользователей, которым таки надо в шелл, например админов и сопровождения, или вызывать шелл из скрипта , решая, достоин ли юзер. второй вариант перекладывает на автора скрипта ответственность за "если что".

facepalm.png
drBatty писал(а):
28.09.2012 12:19
It is most useful inside a Match block.

ну ведь вы вроде читать умеете? (
Match Introduces a conditional block. If all of the criteria on the Match line are satisfied, the keywords on the following lines
override those set in the global section of the config file, until either another Match line or the end of the file.

The arguments to Match are one or more criteria-pattern pairs. The available criteria are User, Group, Host, LocalAddress,
LocalPort, and Address. The match patterns may consist of single entries or comma-separated lists and may use the wildcard and
negation operators described in the PATTERNS section of ssh_config(5).

The patterns in an Address criteria may additionally contain addresses to match in CIDR address/masklen format, e.g.
“192.0.2.0/24” or “3ffe:ffff::/32”. Note that the mask length provided must be consistent with the address - it is an error to
specify a mask length that is too long for the address or one with bits set in this host portion of the address. For example,
“192.0.2.0/33” and “192.0.2.0/8” respectively.

Only a subset of keywords may be used on the lines following a Match keyword. Available keywords are AcceptEnv,
AllowAgentForwarding, AllowGroups, AllowTcpForwarding, AllowUsers, AuthorizedKeysFile, AuthorizedPrincipalsFile, Banner,
ChrootDirectory, DenyGroups, DenyUsers, ForceCommand, GatewayPorts, GSSAPIAuthentication, HostbasedAuthentication,
HostbasedUsesNameFromPacketOnly, KbdInteractiveAuthentication, KerberosAuthentication, MaxAuthTries, MaxSessions,
PasswordAuthentication, PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTunnel, PubkeyAuthentication,
RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset, X11Forwarding and X11UseLocalHost.


Ленивая Бестолоч... писал(а):
29.09.2012 15:27
в таком разрезе ещё scp, кажется, не работает. по крайней мере у меня не сработал.

а оно надо? Я вас не понимаю - cp значит можно сделать, а shell нельзя? Кстати, не понимаю, почему не сработало, попробуйте ssh -v.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Баг, глюк или фича?

Сообщение Ленивая Бестолочь »

drBatty писал(а):
29.09.2012 19:12
facepalm.png

окей, таких подробносей об openssh я не знал :-)

Код: Выделить всё

rakul@lucky-star ~ $ ssh 192.168.0.100 -l test
   Сентябрь 2012
Вс Пн Вт Ср Чт Пт Сб
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Connection to 192.168.0.100 closed.
rakul@lucky-star ~ $
rakul@lucky-star ~ $ scp -v drwzones.xml test@192.168.0.100:/home/test/
Executing: program /usr/bin/ssh host 192.168.0.100, user test, command scp -v -t -- /home/test/
OpenSSH_5.9p1-hpn13v11, OpenSSL 1.0.0j 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 192.168.0.100 [192.168.0.100] port 22.
debug1: Connection established.
debug1: identity file /home/rakul/.ssh/id_rsa type 1
debug1: identity file /home/rakul/.ssh/id_rsa-cert type -1
debug1: identity file /home/rakul/.ssh/id_dsa type -1
debug1: identity file /home/rakul/.ssh/id_dsa-cert type -1
debug1: identity file /home/rakul/.ssh/id_ecdsa type -1
debug1: identity file /home/rakul/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze2
debug1: match: OpenSSH_5.5p1 Debian-6+squeeze2 pat OpenSSH*
debug1: Remote is NON-HPN aware
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1-hpn13v11
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: AUTH STATE IS 0
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA e4:02:f7:fa:fb:c6:ae:24:b7:61:ae:2a:37:3e:bb:f4
debug1: Host '192.168.0.100' is known and matches the RSA host key.
debug1: Found key in /home/rakul/.ssh/known_hosts:14
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/rakul/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.0.100 ([192.168.0.100]:22).
debug1: HPN to Non-HPN Connection
debug1: Final hpn_buffer_size = 2097152
debug1: HPN Disabled: 0, HPN Buffer Size: 2097152
debug1: channel 0: new [client-session]
debug1: Enabled Dynamic Window Scaling

debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending command: scp -v -t -- /home/test/
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
   Сентябрь 2012
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2736, received 2456 bytes, in 0.0 seconds
Bytes per second: sent 581014.4, received 521553.9
debug1: Exit status 0
rakul@lucky-star ~ $

на счёт надо - да, некоторые сопровожденцы используют. но если разруливать через match block, то я думаю всё получится.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Баг, глюк или фича?

Сообщение drBatty »

Ленивая Бестолоч... писал(а):
29.09.2012 21:35
debug1: Sending command: scp -v -t -- /home/test/

наверное эта команда посылается не шеллу, а вашей программе, которая forcedcommand. Посылается что-то вроде cat file, с выводом на stdout, а на клиенте это вылавливается, и складывается в файл. Но ваша "оболочка" не может обработать эту команду. Либо до шелла даже не доходит. ИМХО придётся вам в вашу команду встроить эту функцию оболочки (копирование в stdout). Т.е., как я понял, scp работает типа

$

( ssh cat source ) >target

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: