Você está tentando executar /usr/bin/[
, mas não deu permissão ao usuário. Existem duas maneiras de fazer isso.
O primeiro é permitir que o usuário execute /usr/bin/[
(que é o test
programa). Isso permitiria ao usuário realizar qualquer tipo de teste em qualquer arquivo. Você também pode usar test
em vez de [
, o que pode ser mais óbvio sobre o que está acontecendo.
USER1 ALL=(USER2) /bin/mkdir, /usr/bin/git, /bin/echo, /usr/bin/[, /usr/bin/test
E, em seguida, execute:
sudo -u USER2 [ -f /path/to/file ] && echo "1"
ou
sudo -u USER2 test -f /path/to/file && echo "1"
A segunda opção é escrever um script wrapper e permitir que o usuário execute isso. Por exemplo, com o seguinte em /usr/local/bin/exists
:
#!/bin/sh
set -e
[ -f "$1" ]
E isso em /etc/sudoers
:
USER1 ALL=(USER2) /bin/mkdir, /usr/bin/git, /bin/echo, /usr/local/bin/exists
O usuário pode executar:
sudo -u USER2 /usr/local/bin/exists /path/to/file && echo "1"