Запретить пользователю SSH запускать любую командную строку

Я хочу знать, есть ли способ запретить пользователю запускать любую командную строку (даже такую ​​простую, как ls -la , время безотказной работы ...) Я пробовал несколько способов, например, удалить файл bash пользователя, но это не сработало.

Все пользователи могут войти на сервер, используя свой собственный SSH-ключ, созданный пользователем с правами администратора. Этот сервер предназначен только для аутентификации, поэтому я не хочу давать пользователям разрешение на выполнение каких-либо команд. Я хочу получить следующее: пользователь может войти на сервер и оставаться на нем, больше ничего делать не может.

0
06.03.2017, 23:11
3 ответа

Вы пытались изменить оболочку пользователя?

chsh -s /bin/true username

Это довольно распространено для служб, которым не требуется оболочка, например VsFTP

{{1 }}
2
28.01.2020, 05:06

Я бы использовал chmod для достижения этого.

Например, если вы хотите отозвать разрешения на чтение, запись и выполнение у пользователя, вы можете сделать следующее:

sudo chmod 770 <filehere>

Разбор того, что это делает, можно найти ниже:

1st Determines the permissions in which the owner of the file has
7 = rwx (Read-Write-Execute)

2nd Determines the permissions in which the owner's group has
7 = rwx (Read-Write-Execute)

3rd Determines the permissions in which everyone else has
0 = --- (No permissions)

Вот способ ограничить "всех остальных" от чтения, записи и выполнения /bin/cat

sudo chmod 770 /bin/cat

Вы можете проверить свои изменения, выполнив ls -la /bin/cat

-4
28.01.2020, 05:06

Вы можете изменить оболочку входа на nologin:

~# chsh -s /usr/sbin/nologin 

Список оболочек:

~# chsh -l

Но, читая ваш комментарий, вы хотите разрешить доступ и запретить любой исполняемый файл. Что вы можете сделать, так это удалить бит 'other s' execute из двоичных файлов в каталоге /usr/bin. Я протестировал это с uptime, используя следующее:

~# chmod o-x /usr/bin/uptime

Затем, с обычным пользователем вы получите

user@laptop ~$ uptime
bash: /usr/bin/uptime: Permission denied

Чтобы отменить изменения:

 ~# chmod o+x /usr/bin/uptime

Чтобы найти место назначения исполняемого файла, например, ls, вы используете команду which:

user@laptop ~$ which ls
/usr/bin/ls

А чтобы найти which - which:

~$ which which

Чтобы узнать больше о каталоге Linux, обратитесь к man page hier:

~$ man hier
   hier - description of the file system hierarchy

EDIT:

Это может запустить вашу систему (или нет, я делаю это, чтобы запретить пользователю переходить по команде su), Используя ACL разрешения (список управления), вы добавите каждому пользователю его/ее конкретное разрешение. Например, запретить user1 использовать uptime:

# setfacl -m u:user1:--- uptime

Вы можете сделать это рекурсивно, но на свой страх и риск. И следите за обновлениями, они могут восстановить исходные разрешения.

-3
28.01.2020, 05:06

Теги

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