количество папок в (рекурсивном) каталоге

Выполнение SSH на альтернативном порте больше не рассчитывает как безопасность. Это только добавляет небольшой бит мрака и добавленный шаг сложности для Ваших пользователей. Это добавляет нулевые препятствия для людей, обращающихся к повреждению Ваша сеть, кто использует автоматизированные сканеры портов и не заботится о том, на каком порте это работает.

Если Вы хотите поддержать безопасность в системе, это позволяет удаленный основанный на Интернете входящий SSH, управляйте своими пользователями в sshd_config как @Anthon обозначенный, и затем также реализуют безопасность непосредственно в PAM.

Создайте две группы, lusers и rusers. Добавьте удаленных мобильных пользователей к rusers группа. Используйте pam_succeed_if.so модуль PAM, чтобы разрешить доступ тем пользователям. Добавьте строки к своей конфигурации pam для ssh:

account     sufficient  pam_succeed_if.so user ingroup lusers
account     sufficient  pam_succeed_if.so user ingroup rusers

Некоторые pam_succeed_if.so модули могут потребовать, чтобы Вы использовали немного отличающийся синтаксис, как group = lusers.

Затем не только sshd ограничение пользователей, которые могут соединиться, но в случае ошибки в sshd, у Вас все еще есть защита, которую предлагают основанные на PAM ограничения.

Один дополнительный шаг для удаленных пользователей должен вызвать использование ssh_keys с паролями. Так, локальные пользователи могут войти в систему с ключами или паролями, но у удаленных пользователей должен быть ключ, и если Вы создаете ключи для них, можно удостовериться, что ключ имеет пароль партнеры. Таким образом ограничивая доступ к местоположениям, которые на самом деле обладают ключом SSH и паролем. И ограничение векторов потенциальной атаки, если пароль пользователя является compomised.

В sshd_config:

измените 2 настройки:

ChallengeResponseAuthentication yes

и

PasswordAuthentication yes

кому:

ChallengeResponseAuthentication no

и

PasswordAuthentication no

Так, значение по умолчанию должно теперь позволить только ключевую аутентификацию. Затем для локальных пользователей Вы можете пользователь match установка конфигурации для изменения значения по умолчанию для локальных пользователей. Принятие Вашей локальной частной сети является 192.168.1.0/24, добавьте к sshd_config:

Match Address 192.168.1.0/24
PasswordAuthentication yes

Теперь, локальные пользователи могут соединиться с паролями или ключами, и удаленные пользователи будут вынуждены использовать ключи. Вам решать создать ключи с паролями.

Как дополнительное преимущество, только необходимо управлять синглом sshd_config, и только необходимо выполнить ssh на единственном порте, который упрощает собственное управление.


редактирование 21.01.2017 - Ограничение использования authorized_keys файлы.

Если Вы хотите удостовериться, что пользователи не могут просто сам генерировать ssh ключ и использовать его с authorized_keys файл для входа в систему можно управлять, это путем установки определенного местоположения для sshd будет искать авторизованные ключи.

В /etc/ssh/sshd_config, изменение:

AuthorizedKeysFile  %h/ssh/authorized_keys

к чему-то как:

AuthorizedKeysFile  /etc/.ssh/authorized_keys/%u

Указывая на управляемый каталог, что у пользователей нет полномочий записать в средства, что они не могут генерировать свой собственный ключ и использовать его для работы вокруг правил, которые Вы поместили на месте.

5
01.11.2018, 02:02
5 ответов

Это найдет количество не скрытых каталогов в текущем рабочем каталоге:

ls -l | grep "^d" | wc -l

Редактирование:

Чтобы сделать этот рекурсивный, используйте опцию -R , чтобы LS -L :

ls -lR | grep "^d" | wc -l
9
27.01.2020, 20:31

вы пробовали дерево команда?

tree -d /path/to/maindir| awk END{print}
1
27.01.2020, 20:31

в земле GNU:

find . -mindepth 1 -maxdepth 1 -type d -printf . | wc -c

в другом месте

find . -type d ! -name . -printf . -prune | wc -c

в Bash:

shopt -s dotglob
count=0
for dir in *; do
  test -d "$dir" || continue
  test . = "$dir" && continue
  test .. = "$dir" && continue
  ((count++))
done
echo $count
5
27.01.2020, 20:31

ECHO $ ​​(($ (Find -Type d | WC -L) - 1)) - это один из способов (вычитает 1 от WC -L для удаления тока dir). Вы можете настроить варианты найти , чтобы найти разные вещи.

ECHO $ ​​(($ ($ find -type d -not -Path »* / \. * '| WC -L) - 1)) - исключить скрытых дирижений

, как я Упомянутые в комментариях, сердце этого выражения на самом деле Найти -type d , который находит все каталоги.

Примечание. Это также находит все подпапки - вы можете контролировать глубину, используя флаг -MaxDepth .

2
27.01.2020, 20:31

find. -type d -not -path '.' -printf 0 | wc -c ;

Рекурсивно найти все каталоги (-введите d )в текущем каталоге (find. )это не (. каталог )и вывести 0 для каждого найденного каталога. Затем wc -cподсчитывает количество символов (0 )из предыдущего вывода команды.

0
27.01.2020, 20:31

Теги

Похожие вопросы