SSHFS :Отказано в доступе при открытии каталога из приложения даже с параметром «разрешить _другое»

=cmd— это оператор расширения имени файла в zsh, который расширяется до пути cmd(, разрешенного поиском$PATH). Если такая команда не найдена, это приводит к фатальной ошибке, например, когда глобусы не совпадают.

Итак, ==здесь, в аргументе этой команды [, просит оболочку найти команду =в $PATH, а zshговорит вам, что такой =нигде нет.

$ echo =ls
/bin/ls
$ echo ==
zsh: = not found
$ install -m 755 /dev/null ~/bin/=
$ echo ==
/home/stephane/bin/=

Здесь либо используйте стандартный синтаксис для команды [:

[ "$_user" = root ]

Или процитируйте=:

[ "$_user" '==' root ]

Вам также понадобятся кавычки для сопоставления регулярных выражений:

[ "$_user" '=~' '^ro+t$' ]

В любом случае вы захотите процитировать $_user, иначе вы получите какую-нибудь запутанную ошибку, когда $_userпусто или не задано (и, что еще хуже, включая уязвимость ввода произвольной команды в Korn -, например оболочки. кромеzsh(напримерbash)).

Вы также можете отключить эту функцию, отключив параметр equals(set +o equals), который не очень полезен в сценариях.

Или используйте конструкциюksh-стиля [[...]]:

[[ $_user = root ]]
[[ $_user == root ]]
[[ $_user =~ '^ro+t$' ]]

Или caseконструкция:

case $_user in
  (root)...
esac

([[ = ]], [[ == ]]и caseвыполняют сопоставление с шаблоном (подстановочный знак, а не регулярное выражение))

Обратите внимание, что это условное выражение, нет необходимости устранять неоднозначность между оператором присваивания и оператором равенства, поэтому нет необходимости в операторе ==.

0
06.07.2020, 21:20
1 ответ

Похоже, приложения snap не позволяют легко отключить защиту AppArmor. К счастью, у Spotify для Linux была вторая версия пакета Debian, в которой не было такой проблемы. Технически не решено, но достаточно решено для меня!

0
18.03.2021, 23:21

Теги

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