Во-первых, разрешения. Когда вы создаете новую учетную запись (в любом случае с adduser
в системах на основе Debian - другие могут немного отличаться), вы получаете нового пользователя и новую группу с тем же именем. Вы также получаете домашний каталог для пользователя. Этот новый пользователь будет иметь права пользователя и группы на чтение / запись в своем домашнем каталоге. Они также смогут получить доступ ко всему, что обозначено как доступное для чтения, и изменить все, что доступно для чтения.
Насколько я знаю, невозможно специально исключить одного пользователя или группу из разрешений на чтение / запись в мире, используя традиционную систему разрешений POSIX. Однако вы можете включить более продвинутые ACL-списки (как и NTFS в Windows, если вы знакомы с этим), которые позволяют вам устанавливать определенные разрешения на запрет.
Альтернативный метод - настроить пользовательскую оболочку входа в систему, используя команду chsh
или изменив /etc/passwd
. Когда они войдут в систему, эта «оболочка» будет выполнена с вводом пользователя, перенаправленным в качестве стандартного ввода, а его стандартный вывод / ошибка перенаправлен на выход терминала. Вы можете установить эту «оболочку» в качестве любого исполняемого файла в системе, включая (но не ограничиваясь этим) вашу собственную программу на C, скрипт bash / python / perl и т.д.
Есть несколько способов сделать это. Вы можете установить оболочку входа в систему как скрипт, который просто выводит любые данные, которые вы хотите, и не требует ввода. Он просто выводит данные и выходит, закрывая сессию SSH. Это самый безопасный способ, хотя и не такой гибкий.
В качестве альтернативы, вы можете сделать так, чтобы скрипт взял некоторые данные и использовал их для определения того, что печатать. Как это сделать, зависит от вас - если вы используете скрипт bash
, вы можете использовать read
вместе с оператором case
или серией операторов if
. Тем не менее, вы должны быть осторожны, чтобы не запускать какие-либо неанимированные команды непосредственно от пользователя - и есть другие возможные проблемы с безопасностью при принятии ненадежного ввода. Например, вы можете взять processes
ввода и вернуть вывод команды ps -e
.
Если вы хотите, и хорошо разбираетесь в C, вы можете даже изменить сам bash
, чтобы не иметь доступа к другим каталогам, но гораздо безопаснее либо не принимать ввод, либо фильтровать только определенные команды из белого списка, чем пытаться ограничить какие каталоги вы можете получить доступ. Также проще написать быстрый сценарий оболочки, чем модифицировать сложную программу на Си.