Root obtém permissão negada ao executar comandos do script, mas não do shell

0

Eu tenho um script simples que estou usando para sincronizar um ambiente de teste para alguns desenvolvedores. Ele não precisa ser mais complexo do que apenas fazer um dump do mysql, verificar o hash sobre o SSH e, em seguida, se for alterado, mover o dump para o novo ambiente e desfazê-lo.

Eu o reescrevi para obscurecer informações confidenciais, mas aqui está a essência desse script que escrevi até o ponto em que estou tendo o problema:

#!/bin/bash

mysqldump -h localhost testDB > dbPath/testdb.sql

hash1=$(md5sum dbPath/testdb.sql) | awk '{print $1}'

echo $hash1

Ao executar o script:

sudo ./testScript.sh

Eu vejo o mysqldump criado com as permissões -rw-r - r-- 1 raiz raiz que parece correto para mim, no entanto, como o script continua com o hash md5, eu entendo isso:

./testScript.sh: line 5: dbPath/testdb.sql: Permission denied

Quando eu executo o comando md5sum do shell (não no script), ele funciona bem, até mesmo do meu usuário normal sem usar o sudo. Quando eu mudo para root e executo o comando a partir do shell, ele funciona corretamente. Quando executo o script em qualquer capacidade (da minha conta de usuário, do sudo da minha conta de usuário ou diretamente da raiz), recebo o erro de permissão negada na linha md5sum.

Eu acho que em algum lugar as permissões da minha conta de usuário estavam perdendo, em vez das permissões do root serem usadas, exceto pelo fato de que o script não pode ser executado pelo root do shell do root sem também receber um erro de permissão negada, e até onde eu posso dizer, root não deve ter permissão negada a nada. Como teste, eu joguei um whoami antes e depois do comando md5sum e ambos os comandos geram o root como usuário ao executar com o sudo ou com o root.

Root e minha conta de usuário claramente têm permissão para executar o md5sum no arquivo; como é o fato de que isso está sendo executado a partir de um script que faz uma mudança nas habilidades da minha ou da raiz para executar comandos ou manipular o arquivo?

O ambiente é o RHEL 6.

    
por SSS 29.01.2018 / 01:24

1 resposta

1

O problema subjacente é o erro de análise nesta linha:

hash1=$(md5sum dbPath/testdb.sql) | awk '{print $1}'

que deve quase certamente ser

hash1=$(md5sum dbPath/testdb.sql | awk '{print $1}')

Você pode verificar se há erros como este no link

    
por 29.01.2018 / 01:36