find ".ts", но не ".d.ts"

Невозможно ограничить это с помощью ssh. Возможно, для этого можно использовать selinux или iptables. Тем не менее, существует альтернативная стратегия, которая может соответствовать или не соответствовать вашим потребностям. Используйте привязку к сокетам UNIX. Это должно быть доступно, начиная с версии openssh 6.8.

При использовании сокетов у вас есть ACL файловой системы (, хотя сокеты учитывают, что они могут *зависеть от nix ), и вы можете использовать его, чтобы предотвратить привязку одного пользователя к другому сокету. Однако это никоим образом не предотвращает привязку к портам, поэтому в зависимости от вашего варианта использования это может не помочь, но, возможно, порты не имеют значения, если вы можете постоянно использовать только сокеты.

При обработке сокетов UNIX висячих файлов сокетов могут возникнуть проблемы, поскольку обратные издатели пытаются повторно подключиться. У меня есть еще вопрос (и ответ )на эту проблему. Короче говоря, вы, вероятно, также захотите использоватьStreamLocalBindUnlink yes:

Как очистить сокет обратного туннеля SSH после закрытия соединения?

22
18.12.2019, 11:08
3 ответа

Вы можете получить желаемый результат, отфильтровав только имена файлов, отменив тест для файлов, которые вам не нужны:

find src -type f -name \*.ts ! -name \*.d.ts
29
27.01.2020, 19:42

Я не думаю, что egrepподдерживает этот синтаксис (ваше выражение является Perl-совместимым регулярным выражением ). Но вам не нужно использовать регулярные выражения в вашем примере, просто используйте несколько тестов -nameи применяйте отрицание !по мере необходимости:

find src -type f -name '*.ts' ! -name '*.d.ts'
70
27.01.2020, 19:42

Простой (возможно, менее эффективный )подход может заключаться в отфильтровывании строки «не хочу» -.

find -name "*.ts" | egrep -v "\.d\.ts$"
6
27.01.2020, 19:42

Теги

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