Re: how to prevent user to login via ssh or exec commands but allow to start ssh tunel
On 2005.03.09 at 20:54:11 +0300, Victor Wagner wrote:
> On 2005.03.09 at 22:06:54 +0400, Vlad Harchev wrote:
>
> > Hi,
> >
> > В общем задача:
> >
> > Есть некий ч-к, хочется дать возможность ему пускать тунели ssh на серваке
> > (ssh -N -R или ssh -N -L) ,но не давать ему возможность логиниться в
> > сервак или
> > выполнять на нем команды.
> >
>
> Поставь ему shell-ом в /etc/passwd, такую программу, которая
> удовлетворяет условиям, требуемым для туннеля, т.е. висит и ждет пока её
> не прервут, но не позволяет выполнять команды.
>
> Например /bin/cat подойдет. Хотя посредством /bin/cat человек сможет
> кое-какие файлики посмотреть. Лучше скриптик вида
> #!/bin/sh
> exec cat
>
> который переданные параметры пожрет и cat-у не отдаст.
> >
> ssh передаст эту команду на выполнение шеллу. Поэтому посредством
> /bin/false хрен чего выполнишь. /bin/false не подходит по другой причине
> - он сразу завершается. А туннель требует живой сессии.
Попробовал. Выяснил, что /bin/cat достаточно безопасен. Потому как для
передачи команды на выполнение shell-у ssh использует опцию -c
А такой опции у cat нет. Поэтому при попытке сказать
ssh forwardonlyuser@host /etc/passwd
(где shell-ом у forwardonlyuser стоит /bin/cat) /etc/passwd на экран не
выводится, а вместо этого выдается
cat: invalid option -- c
Try `cat --help' for more information.
поскольку реально выполняется команда /bin/cat -c /etc/passwd.
А вот при запуске ssh без команды cat честно запускается и ждет пока ему
EOF (Ctrl-D) скажут, что обеспечивает работоспособность port forwarding
Reply to: