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 [EMAIL PROTECTED] /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 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

