Это были годы, с тех пор как я в последний раз коснулся PHP, но если я вспоминаю правильно, что можно назвать внешнее (оболочка) команда от него и впитать результаты. Под тем предположением, если сервер Вы имеете дело с, поле Unix/Linux, Вы могли бы обратиться к команде 'находки' и позволить ей сделать работу.
Базовый синтаксис был бы: find /your/web/root/here/ -mtime -5 -print
если Вы хотели список всех файлов, измененных за прошлые 5 дней.
Просто запишите обертку PHP вокруг той команды (измененный по мере необходимости), чтобы выполнить его и отобразить результаты на странице для Вас. Я думаю, что это должно добиться цели.
Присвойте оболочку, которая не позволяет пользователю войти в систему.
например.
#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0
препятствовал бы тому, чтобы они получили приглашение оболочки и дал бы им тайм-аут 60 секунд - если не будет никакого соединения, активного в течение 60 секунд затем, то это выйдет и таким образом разъединит их полностью (увеличьте число согласно требованиям).
Они не могут выполнить удаленную команду, также, потому что та оболочка не позволит им.
logout
" на нормальном.
– grawity
20 August 2009 в 15:47
В пользовательском файле .ssh / authorized_keys поместите что-то вроде следующего:
permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...
Итак, в основном, вы должны находиться перед открытым ключом ssh пользователя, разделенным пробелом. В этом примере соединениям с использованием определенного открытого ключа будет разрешено перенаправление портов SSH только на сервер MySQL 192.168.1.10 и веб-сервер 10.0.0.16, и им не будет назначена оболочка (no-pty). Вы конкретно спрашиваете о опции "no-pty", но другие могут быть полезны, если пользователь должен туннелировать только к определенным серверам.
Посмотрите на страницу руководства для sshd дополнительные параметры для файла authorized_keys .
Обратите внимание, что пользователь опыт может выглядеть немного странно: когда они подключатся по ssh, это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.
В любом случае попробуйте.
это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.В любом случае попробуйте.
это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.В любом случае попробуйте.
Предоставьте пользователю оболочку, которая позволяет им только выходить из системы, например /bin/press_to_exit.sh
#!/bin/bash read -n 1 -p "Press any key to exit" key
Таким образом, он может оставаться в системе столько, сколько захочет, с активными туннелями, но не выполнять никаких команд. Ctrl-c
закрывает соединение.
Мое решение - предоставить пользователю кто только может туннелировать, без интерактивной оболочки , чтобы установить эту оболочку в / etc / passwd на / usr / bin / tunnel_shell .
Просто создайте исполняемый файл / usr / bin / tunnel_shell с бесконечным циклом .
Дополнительно используйте параметр AllowGroups
и Match Group
.
Полностью объяснено здесь: http://blog.flowl.info/2011/ssh- туннель-группа-только-и-без-оболочки-пожалуйста /
##Create a new user
sudo useradd -m [user]
##Edit /etc/ssh/sshd_config
Match User [user]
#AllowTcpForwarding yes
#X11Forwarding no
#PermitTunnel no
GatewayPorts yes ##Enable listening on 0.0.0.0
AllowAgentForwarding no
PermitOpen localhost:2888 ##specify port
ForceCommand echo 'This account can only be used for Tunneling'