Я хочу знать, есть ли способ запретить пользователю запускать любую командную строку (даже такую простую, как ls -la
, время безотказной работы ...)
Я пробовал несколько способов, например, удалить файл bash пользователя, но это не сработало.
Все пользователи могут войти на сервер, используя свой собственный SSH-ключ, созданный пользователем с правами администратора. Этот сервер предназначен только для аутентификации, поэтому я не хочу давать пользователям разрешение на выполнение каких-либо команд. Я хочу получить следующее: пользователь может войти на сервер и оставаться на нем, больше ничего делать не может.
Вы пытались изменить оболочку пользователя?
chsh -s /bin/true username
Это довольно распространено для служб, которым не требуется оболочка, например VsFTP
{{1 }}Я бы использовал 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
Вы можете изменить оболочку входа на 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
Вы можете сделать это рекурсивно, но на свой страх и риск. И следите за обновлениями, они могут восстановить исходные разрешения.