Вы можете полностью использовать протестируйте функциональность
, чтобы добиться желаемого. На странице руководства test
:
! expression True if expression is false.
expression1 -a expression2
True if both expression1 and expression2 are true.
expression1 -o expression2
True if either expression1 or expression2 are true.
(expression) True if expression is true.
Итак, ваше условие может выглядеть так:
if [ -f file1 -a -f file2 -a -f file3 ] ; then
# do stuff with the files
fi
Для отрицания используйте экранированные круглые скобки:
if [ ! \( -f file1 -a -f file2 -a -f file3 \) ] ; then
echo "Error: You done goofed."
exit 1
fi
# do stuff with the files
Гид, на который вы ссылаетесь, написан 5 лет назад. PAM больше не использует DES. Попробуйте использовать это для генерации хэша пароля:
echo pass|mkpasswd -s -m sha-512
Вы можете использовать опцию targetpw
в sudoers
, что заставит sudo запрашивать не ваш собственный пароль, а пароль пользователя, которому вы хотите выполнить команду как (, который в большинстве случаев root
). Затем вы можете использовать разные пароли для своего пользователя и учетной записи пользователя root
.
Используйте следующий фрагмент в файле sudoers, чтобы глобально включить это поведение (отредактируйте его с помощьюvisudo
):
Defaults targetpw
ALL ALL=(ALL) ALL
Вторая строка означает, что каждый пользователь в системе может использовать sudo, если он знает пароль целевого пользователя. Если вы опустите его, потребуется членство в настроенной группе и пароль цели. (Обратите внимание, что вы можете обойти требование группы, если у вас есть доступ к su
, так как это не соответствует этой конфигурации.)
Вы также можете использовать один из следующих двух вариантов, которые будут применять директиву targetpw
только к определенному пользователю или группе соответственно:
Defaults:username targetpw
username ALL=(ALL) ALL
Defaults:%groupname targetpw
%groupname ALL=(ALL) ALL
(Укажите , а не , ALL ALL=(ALL) ALL
, если вы используете один из них!)