Я создал тюрьму с ssh использование Finch-Freebsd на NAS4FREE и добавил локальное не суперпользователь для доступа к тюрьме через ssh.
Я хочу смочь предоставить этому пользователю ограниченный доступ оболочки конкретно, чтобы закрыть тюрьму и в свою очередь начать завершение работы сервера, на котором находится тюрьма
Как я могу дать упомянутому пользователю ограниченные права команды оболочки инициировать команду завершения работы?
До сих пор в попытке инициировать a sh /etc/rc.shutdown
Я получаю следующий вывод
оценка: не может открыть/var/run/cron.pid: Разрешение отрицало Останавливаться, sshd. уничтожают: 12060: Операция, не разрешенная Остановку lighttpd., уничтожает: 12001: Операция, не разрешенная оценку: не может открыть/var/db/mysql/RemandYard.pid: Разрешение отклонило pututxline: Разрешение, отклоненное Завершенным
Как сказал Кассандри, вы не можете сделать это с помощью команды внутри самой тюрьмы.
Однако вы могли бы создать отдельного пользователя (которым я буду впредь вызовите ближе
в хост-системе. Этот пользователь должен быть заблокирован, чтобы он мог входить в систему только с помощью ключа SSH.
Заключенный в тюрьму пользователь должен иметь закрытый ключ и пароль для ключа.
На стороне хоста вы предоставляете учетной записи sudo close
разрешения:
closer localhost=NOPASSWD:/usr/sbin/shutdown
На стороне хоста поместите открытую часть ключа SSH в /home/closer/.ssh/authorized_keys
. Отредактируйте ключ так, чтобы он начинался с
command="sudo /usr/sbin/shutdown",from="1.2.3.4"
, а затем следовал фактический ключ, все в той же строке. (Конечно, исправьте IP-адрес, чтобы он соответствовал тюрьме.) Сделайте authorized_key
и каталог, недоступный для записи для пользователя.
Когда пользователь в заключенной в тюрьму системе теперь использует этот ключ для подключения к хосту по SSH, он немедленно запускает завершение работы. Пользователь не сможет этого сделать. что-нибудь еще с ключом - каждый раз, когда они используют его для входа в систему, он просто запускает команду. Ключ можно использовать только из этой тюрьмы, поэтому вы не рискуете предоставить всему миру доступ для выключения вашего сервера, если они каким-то образом получат ключ в свои руки.
Джейлы специально запрещают команды выключения согласно странице руководства здесь .
Обычные команды выключения машины, такие как halt (8), reboot (8) и shutdown (8), не могут быть успешно использованы в тюрьме.
Дополнительно цитируется из Дизайн и реализация FreeBSD Операционная система ,
Процессам, запущенным в тюрьме, не разрешается выполнять операции, которые позволит им увидеть или повлиять на все, что происходит за пределами их тюрьмы. Это ограничение в значительной степени реализовано путем маскировки набора именованных системных привилегий. доступны для корневых процессов, запущенных в тюрьме. К ограниченным привилегиям относятся:
- получение информации о процессах за пределами тюрьмы,
- изменение переменных ядра,
- подключение или отключение файловых систем,
- изменение физических сетевых интерфейсов или конфигураций; и
- перезагрузка системы.
Итак, то, что вы хотите сделать, не должно быть вообще возможно в тюрьмах. Чтобы отключить тюрьму и сервер, на котором она находится, вам потребуется фактический привилегированный пользователь в хост-системе.