Impossível gravar arquivos com credenciais raiz

0

Estou tentando lançar um pequeno script que corrige um bug nos ícones do iceweasel.

Aqui está o script. Você pode encontrá-lo como uma solução no relatório de erros

for n in 16 32 48; do inkscape -z -w $n -h $n -e 
/usr/share/iceweasel/browser/chrome/icons/default/default${n}.png 
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

for n in 16 32 48 64 128; do inkscape -z -w $n -h $n -e 
/usr/share/icons/hicolor/${n}x${n}/apps/iceweasel.png 
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

Eu criei um arquivo tempiceweasel.sh com as poucas linhas acima. Eu dei permissão de execução:

# chmod +x tempiceweasel.sh
# ls -la tempiceweasel.sh
-rwxr-xr-x 1 user user 349 mars   9 16:33 tempiceweasel.sh

Quando iniciei o script, tenho erros de permissão:

# ./scripts/tempiceweasel.sh
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default16.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default32.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default48.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/16x16/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/32x32/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/48x48/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/64x64/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/128x128/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée

Parece que não tenho o direito de escrever arquivos nesses diretórios. Eu não entendo porque; Estou executando como root e as permissões desses arquivos são todas como abaixo:

-rw-r--r-- 1 root root   93 févr. 14 14:25 default16.png
-rw-r--r-- 1 root root  325 févr. 14 14:25 default32.png
-rw-r--r-- 1 root root 1845 févr. 14 14:25 default48.png

Alguma idéia de por que não consigo escrever esses arquivos?

    
por ppr 09.03.2016 / 17:01

1 resposta

4

Os comandos copiados e colados deveriam ser comandos de linha única. Em vez disso, eles foram divididos em três linhas cada. Então, cada comando é o mesmo que você fez:

# for n in 16 32 48; do inkscape -z -w $n -h $n -e
# /usr/share/iceweasel/browser/chrome/icons/default/default${n}.png 
# /usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

Então, basicamente, em cada etapa do loop, ele está tentando executar o inkscape, então está tentando executar o arquivo de imagem como um executável , então ele está tentando fazer o mesmo para o svg Arquivo. A razão pela qual você tem erros sobre as permissões é, obviamente, que as imagens não têm permissão de execução. O "nada a fazer" veio do inkscape, que faltava seus parâmetros.

As três linhas devem estar todas na mesma linha. Ou a maneira mais apropriada de escrever isso, já que você está escrevendo um script de shell em vez de um único comando, seria:

for n in 16 32 48
do
    inkscape -z -w $n -h $n -e \
        /usr/share/iceweasel/browser/chrome/icons/default/default${n}.png \
        /usr/share/icons/hicolor/scalable/apps/iceweasel.svg
done

Observe as barras invertidas no final das linhas - elas significam que a linha a seguir é uma continuação da linha atual. O mesmo se aplica ao segundo loop.

    
por 09.03.2016 / 17:12