По разным причинам мне нужно разрешить доступ по telnet (через частную сеть), и когда кто-то пытается войти в систему с определенной учетной записью пользователя (скажем, CheckStatus
), вместо того, чтобы предоставить пользователю оболочку, он вместо этого запускает очень-очень быстрый код / скрипт / что угодно и возвращает одну из двух очень специфических строк. Эта учетная запись может иметь пароль.
I ' m, по сути, пытается воспроизвести то, что происходит, когда вы пытаетесь подключиться к SSH на серверах Github, где вам говорят, что доступ к оболочке не предоставляется.
Я думал, что решением этой проблемы будет замена оболочки пользователя, поэтому я создал сценарий:
#! /bin/bash
echo "HI!!!"
затем попытался установить его в качестве оболочки пользователя через:
test@development-1:~$ chmod +x test.sh
test@development-1:~$ chsh
Password:
Changing the login shell for test
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]: /home/test/test.sh
chsh: /home/test/test.sh is an invalid shell
Есть идеи, как это лучше сделать?
Для справки, большинство наших систем - это Ubuntu 14.04.
Лучший способ сделать это - использовать ssh и привязать ключ к определенной команде с помощью ограничения 'command = ...', встроенного в открытый ключ.
chsh: / home / test / test.sh - недопустимая оболочка
Здесь помогает документация из chsh (1)
ПРИМЕЧАНИЕ Единственное ограничение, наложенное на оболочку входа, - это то, что имя команды должен быть указан в / etc / shells, если вызывающий не является суперпользователем, и тогда может быть добавлено любое значение.
Вам нужно запустить chsh с соответствующими разрешениями или добавить подходящую запись в /etc/shells.