Допустим, у меня есть ОС Linux без среды рабочего стола. После завершения загрузки ПК он покажет пользователю терминал оболочки.
Я планирую написать программу сценария оболочки и сделать так, чтобы она автоматически запускалась каждый раз после завершения загрузки ПК, чтобы вместо обычного приглашения оболочки пользователь видел мою программу сценария оболочки после завершения загрузки ПК.
В программе сценария оболочки я дам пользователю список параметров для настройки чего-либо на моем ПК. И я хочу, чтобы программа сценария оболочки работала постоянно на этом ПК.
Я хотел бы заблокировать пользователя в программе сценария оболочки, чтобы он не мог перейти в обычное приглашение оболочки и получить доступ к файловой системе. Только администратор с паролем root может выйти в обычное приглашение оболочки и внести изменения в ПК.
Может ли кто-нибудь дать мне несколько советов, как я могу это сделать?
Спасибо.
Сделайте оболочку входа в систему для вашего автологина rbash и сделайте скрипт единственным, что они могут запускать. Даже если они выйдут из сценария, они не смогут ничего сделать, кроме выхода из системы или повторного запуска сценария.
getty
это программа, которая обрабатывает терминал. Если вы скажете ему запустить что-то другое, кроме оболочки, например
getty -l my-sandbox-program-that-is-not-as-powerful-as-the-shell
у вас гораздо больший контроль над тем, что может делать пользователь.
Добавьте вызов в свой скрипт в /etc/rc.local
, который запускается после системных служб в /etc/init.d/
все запущены и прямо перед отображением приглашения для входа в систему. Сценарий будет запущен от имени пользователя root, но без зарегистрированного пользователя, поэтому вы можете точно контролировать, что происходит в этот момент. Пока ваш скрипт не завершится, пользователь не сможет войти в систему и получить доступ к оболочке.
вы также можете добавить ловушку для перехвата CTRL-C в вашем сценарии bash. таким образом вы можете заблокировать людей от выхода из него (также стоит поймать CTRL-Z)