Возникла та же проблема.
Оказывается, проблема решается добавлением параметра disable_interactive
рядом с pam_mount.so
в файлы конфигурации ( /etc/pam.d/common- {auth , сессия}
).
Он идет сразу после pam_mount.so
, а параметры разделяются пробелами (из имени файла , поэтому
и между каждыми двумя параметрами).
Когда код pam_mount.so
запускается при входе в систему, он получает пароль из верхней части стека и использует этот пароль для расшифровки вашего тома.
Когда вы выполняете su
из корневого сеанса, пароль не требуется, и поэтому pam_mount.so
не получит никакого пароля. Таким образом, без параметра disable_interactive
он попытается получить пароль.
К счастью, как видно из https://sourceforge.net/p/pam-mount/pam-mount/ci/master/tree/src/pam_mount.c , строка 493, pam_mount
попытается продолжить работу даже без пароля, что хорошо, потому что пароль не нужен, если том уже разблокирован и смонтирован.
Опция -exec
для find
требует чистых исполняемых файлов, в то время какalias
-es являются функцией оболочки, что означает, что они существуют только тогда, когда вы находитесь внутри оболочки.
Вы можете запустить любую команду в оболочке, запустив -exec
bash -c command
. Однако, чтобы псевдонимы принимались, оболочка должна запускаться в интерактивном режиме.
Вы можете обмануть интерактивность, выполнив bash -ic sha256
, но поскольку вы поместили свое определение псевдонима в .bash_profile
, вам также нужно будет обмануть его как «оболочку входа в систему», а также как интерактивную, потому что этот файл читаются так называемыми -«оболочками входа в систему». То есть вы должны выполнить bash -lic sha256
. Но это медленнее и немного загрязняет журнал сеансов.
Поэтому я бы посоветовал вам лучше поместить определение вашего псевдонима в .bashrc
файл (, просто создать его, если его еще нет ), чтобы вместо этого ваш псевдоним мог использоваться более простым bash -i
из bash -li
.
Это сделало бы всю вашу команду похожей на:
find./ -iname *.doc -exec bash -ic 'sha256 "$1"' -- {} \;
Если вам действительно необходимо сохранить определение псевдонима в .bash_profile
, сделайте свою команду как:
find./ -iname *.doc -exec bash -lic 'sha256 "$1"' -- {} \;
Нет, ваш псевдоним происходит от bash. find
ожидает исполняемый файл в вашей PATH
переменной окружения. (если вы наберете which <cmd | alias>
и ничего не получите, find будет жаловаться)