По-перше, дозволи. Коли ви створюєте новий обліковий запис (у adduser
будь-якому випадку в системах на базі Debian - інші можуть бути дещо іншими), ви отримуєте нового користувача та нову групу з тим же ім’ям. Ви також отримуєте домашній каталог для користувача. Цей новий користувач матиме користувацькі та групові дозволи на читання / запис у своєму домашньому каталозі. Вони також зможуть отримати доступ до всього, що визначено як "читане у всьому світі", та змінити все, що можна прочитати у світі.
Наскільки мені відомо, конкретно не можна виключити одного користувача або групу з дозволів читання / запису, використовуваних у світі, використовуючи традиційну систему дозволів POSIX. Однак ви можете ввімкнути більш досконалі ACL-файли (подібно до Windows NTFS, якщо ви знайомі з цим), які дозволяють встановлювати конкретні дозволи заборони.
Альтернативним методом є встановлення користувацької оболонки для входу за допомогою chsh
команди або шляхом зміни /etc/passwd
. Коли вони входять, ця 'оболонка' буде виконана, коли вхід користувача буде перенаправлений як його стандартний вхід, а його стандартний вихід / помилка буде переспрямовано на термінальний вихід. Ви можете встановити цю оболонку як будь-який виконуваний в системі, включаючи (але не обмежуючись цим) власну програму C, bash / python / perl скрипт тощо.
Є кілька способів зробити це. Ви можете встановити оболонку входу як сценарій, який просто виводить будь-які дані, які ви хочете, і не вимагає введення даних. Він просто виводить дані і виходить, закриваючи сеанс SSH. Це найбезпечніший спосіб, хоча і не такий гнучкий.
Крім того, ви можете мати сценарій, щоб взяти деякий ввід, і використовувати його, щоб визначити, що друкувати. Як ви це зробите, залежить від вас - якщо ви використовуєте bash
сценарій, ви можете використовувати read
разом із case
заявою або низкою if
заяв. Потрібно бути обережними, щоб ви не запускали будь-яких несанітизованих команд безпосередньо від користувача, - але є й інші можливі проблеми із безпекою із прийняттям ненадійного вводу. Наприклад, ви можете взяти вхід processes
і повернути результат ps -e
.
Якщо ви хочете, і ви добре працюєте з C, ви можете навіть змінити bash
себе, щоб не мати доступу до жодних інших каталогів, - але набагато безпечніше або не брати введення, ні фільтрувати лише певні команди, що перебувають у списку, а не намагатися обмежувати, які каталоги Ви можете отримати доступ. Так само простіше написати швидкий скрипт оболонки, ніж змінювати складну програму C.