Как я могу предотвратить оболочку доступ к учетной записи пользователя, но вместо этого показывать собственное сообщение (в Linux)?

По разным причинам мне нужно разрешить доступ по 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.

2
задан 4 March 2016 в 16:05
1 ответ

Лучший способ сделать это - использовать ssh и привязать ключ к определенной команде с помощью ограничения 'command = ...', встроенного в открытый ключ.

chsh: / home / test / test.sh - недопустимая оболочка

Здесь помогает документация из chsh (1)

ПРИМЕЧАНИЕ Единственное ограничение, наложенное на оболочку входа, - это то, что имя команды должен быть указан в / etc / shells, если вызывающий не является суперпользователем, и тогда может быть добавлено любое значение.

Вам нужно запустить chsh с соответствующими разрешениями или добавить подходящую запись в /etc/shells.

4
ответ дан 3 December 2019 в 10:00

Теги

Похожие вопросы