Verifique se apenas o root pode editar um script antes de executá-lo

2

Eu tenho um script que precisa ser executado como root. Ele também tem um arquivo de configuração que é lido usando a fonte:

source conf.sh

Gostaria de verificar se o usuário normal não pode editar conf.sh e, portanto, obter acesso root.

Posso verificar quem é o proprietário do arquivo e qual grupo de permissões e outros têm:

if [[ "$(stat -c "%a" conf.sh | egrep ".2.|.3.|.6.|.7.|..2|..3|..6|..7")" != "" ]] || [[ "$(stat -c "%u" conf.sh)" != "0" ]]; then
    #don't execute the file"
fi

Estou sentindo falta de alguma coisa aqui? Existem melhores práticas?

    
por Ruslan 23.04.2014 / 14:22

1 resposta

3

Eu faria isso com avaliação aritmética:

if [[ $(stat -c '%u' conf.sh) -ne 0 -o \
      $(( $(stat -c '%a' conf.sh) & 0044)) -ne 0 ]]; then
    # file's owner is not root or file is writable by group or world
fi
    
por 23.04.2014 / 14:33