Permissão negada erro ao criar arquivo usando o arquivo de script

0

Eu criei um arquivo de script chamado black_list.sh .

#!/bin/bash

default_card='head -1 /proc/asound/modules'
echo $default_card

if [ ! -e /etc/modprobe.d/sound.blacklist.conf ] && [[ "$default_card" =~ "snd_hda_intel" ]]; then
        echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf ---> not working            
else
        echo "Default sound card(snd_hda_intel) is already added in black list";
fi

deste arquivo de script Estou criando o arquivo sound.blacklist.conf em /etc/modprobe.d , mas tenho /etc/modprobe.d/sound.blacklist.conf: Permission denied error.

Então tentei

echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf

mas também não funcionou, então como criar um arquivo no diretório /etc/modprobe.d do meu arquivo de script .

    
por r15 10.06.2014 / 12:19

3 respostas

2

Eu pessoalmente usaria tee que você pode rodar como root para anexar arquivos:

echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf

Mas isso pode não ser esperado na metade de um script. Se você está fazendo coisas que exigem privilégios de root, pode - e eu não estou dizendo isso com certeza - fazer mais sentido apenas deixar o root rodar o script colocando isto perto do topo do script:

if [[ $EUID -ne 0 ]]; then
  echo "Only root can run this. Run again with sudo" 2>&1
  exit 1
fi
    
por Oli 10.06.2014 / 12:27
1

Experimente este comando

sudo sh -c "echo 'blacklist snd_hda_intel' >  /etc/modprobe.d/sound.blacklist.conf"
    
por Avinash Raj 10.06.2014 / 12:22
1

Você precisa colocar o redirecionamento de saída no sudo também.

A maneira mais fácil, para mim, de fazer isso é não colocar o sudo dentro do seu script, mas executar o script usando o sudo .

Para entender seu problema, se você tiver o seguinte comando:     $ sudo "" > / etc / file

A ação sudo é apenas executar <command> <params> , o redirecionamento da saída ( > ) acontece fora do sudo neste caso.

    
por Benoit 10.06.2014 / 12:41