zcompile
— это встроенная оболочка zsh
, доступная только внутри оболочки, find
— отдельная команда из оболочки, поэтому она не может работать.
zsh
шарики могут легко заменить find
здесь:
set -o extendedglob # for ^, best in ~/.zshrc
for file (./**/^*.zwc(N.)) zcompile $file
(здесь опущены скрытые файлы и файлы в скрытых каталогах, что, вероятно, предпочтительнее; если нет, добавьте квалификатор D
glob ).
Если вы хотите использовать find
, вам нужно, чтобы find
выводил список, а оболочка извлекала этот список, чтобы передать его встроенной zcompile
. Что-то вроде:
find. ! -name "*.zwc" -type f -print0 |
while IFS= read -rd '' file; do
zcompile $file
done
Или вам нужно find
запустить оболочку zsh
для запуска ее zcompile
на найденных файлах:
find. ! -name "*.zwc" -type f -exec zsh -c '
for file do
zcompile $file
done' zsh {} +
(обратите внимание, что некоторые find
реализации (, включая GNU find
), имеют ограничение, которого нет у zsh
глобусов, заключающееся в том, что их *
не будут соответствовать последовательности байтов, которые не образуют допустимых символов. в текущей локали ).
Я использую это на своих компьютерах Mac:
/etc/pam.d/sshd
# sshd: auth account password session
auth binding /usr/local/opt/google-authenticator-libpam/lib/security/pam_google_authenticator.so
auth optional pam_krb5.so use_kcminit
auth optional pam_ntlm.so try_first_pass
auth optional pam_mount.so try_first_pass
auth required pam_opendirectory.so try_first_pass
account required pam_nologin.so
account required pam_sacl.so sacl_service=ssh
account required pam_opendirectory.so
password required pam_opendirectory.so
session required pam_launchd.so
session optional pam_mount.so
/etc/ssh/sshd_config
LogLevel VERBOSE
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
AuthenticationMethods publickey,keyboard-interactive:pam
ChallengeResponseAuthentication yes
UsePAM yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/libexec/sftp-server
Match Address fc00::/7,10.0.1.0/24
PasswordAuthentication no
AuthenticationMethods publickey
Таким образом, для обеспечения 2fa требуются только соединения, поступающие из-за пределов локальной сети, локальные соединения основаны только на Pubkey.