Erro de permissão negada ao criar arquivo usando arquivo de script

Erro de permissão negada ao criar arquivo usando arquivo de script

Eu criei um arquivo de script chamadolista_negra.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 que estou criandosom.lista negra.confarquivo, /etc/modprobe.dmas recebi /etc/modprobe.d/sound.blacklist.conf: Permission deniedum erro.

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 posso criar um arquivo no /etc/modprobe.ddiretório do meuArquivo de script.

Responder1

Eu pessoalmente usaria tee, que você pode executar como root para anexar aos arquivos:

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

Mas isso pode não ser esperado no meio de um roteiro. Se você estiver fazendo coisas que exigem privilégios de root, pode - e não estou dizendo isso com certeza - fazer mais sentido deixar apenas o root executar o script colando isto próximo ao topo do script:

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

Responder2

Experimente este comando,

sudo sh -c "echo 'blacklist snd_hda_intel' >  /etc/modprobe.d/sound.blacklist.conf"

Responder3

Você também deve incluir o redirecionamento de saída sudo.

A maneira mais fácil, para mim, de fazer isso é não colocar osudodentro do seu script, mas para executá-lo usandosudo.

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

Osudoação é apenas executar <command> <params>, o redirecionamento da saída( >) acontece fora dosudonesse caso.

informação relacionada