Это вопрос, на который сложно ответить. То, что большинство людей называют «оболочкой», является чтением -оценкой -циклом печати , и поэтому даже интерпретатор Python является оболочкой, при условии, что вы запускаете Python в интерактивном режиме. Однако это будет означать, что nologin не является настоящей оболочкой! Так что же такое оболочка?
С технической точки зрения любая программа может быть использована в качестве оболочки. На самом деле, вот несколько моих фотографий с необычными снарядами:
Однако это не то, что вы ожидаете от работы в качестве оболочки. Обычно вам нужно запустить одну из оболочек в /etc/shells
. Например, мой содержит:
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen
и ни один из снарядов, о которых я упоминал ранее! Так почему же они бегут?
Проще говоря, да, но только локально. Если вы посмотрите на справочную страницу shells
с man shells
, вы обнаружите, что /etc/shells
в основном используется такими программами, как демоны FTP. Вот почему вы не видите оболочку nologin
в /etc/shells
:. Она предотвращает вход на FTP и другие не -демоны входа в систему, поскольку не находится там, в то же время предотвращая локальный вход в систему, будучи простой printf("This account is currently not available");
программой, а не РЕПЛ.
Итак, отвечая на ваш вопрос :Существует только один тип оболочки, и это исполняемый файл. Если вы можете запустить программу, это оболочка.
Правила брандмауэра обрабатываются сверху вниз. Поместите специальные правила вверху, а общие правила (охватывают -все правила )внизу. Что бы вы ни делали с 172.16.0.111:443
, его правило должно идти вверху (перед тремя опубликованными вами правилами)
iptables -I INPUT --src 172.16.0.111 -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT --src 172.16.0.111 ACCEPT
iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Примечание. :Возможно, вы захотите ужесточить правило #2, указав номер исходного или целевого порта.