Eu suspeito que você simplesmente não tenha acesso a eles pelo usuário que está executando este script. Veja as posses do arquivo:
$ ls -l /var/log/{dmesg,syslog,message}
ls: cannot access /var/log/message: No such file or directory
-rw-r----- 1 root adm 86384 Mar 9 11:12 /var/log/dmesg
-rw-r----- 1 syslog adm 18553 Mar 25 13:25 /var/log/syslog
Você pode ler esses arquivos se tiver um usuário no grupo adm
, mas não conseguir escrever. O primeiro usuário em um sistema normalmente é um membro do grupo adm
, mas se as suas ~/Desktop
cópias estiverem vazias, sugiro que seu usuário não seja (verifique com o comando groups
). Você tem algumas opções.
-
Você pode consultar adicionando permissões de ACL ao seu usuário. Eles são separados das permissões padrão e adicionar acesso explícito de leitura / gravação ao usuário não afeta nada. O que é legal.
sudo apt-get install acl sudo setfacl -m u:$USER:rw /var/log/{dmesg,syslog,message}
Isso pode precisar de uma reinicialização. Você pode até precisar alterar seu fstab . Eu não tenho, mas as ACLs parecem funcionar bem aqui, então estou assumindo que não é mais necessário.
-
Você pode alterar as permissões do unix no arquivo. A maneira mais segura de fazer isso seria adicionar o usuário ao grupo
adm
e ativar a gravação do grupo nesses arquivos:sudo usermod -a -G adm $USER sudo chmod g+w /var/log/{dmesg,syslog,message}
Você precisará sair e entrar novamente para ver o efeito.
-
Ou você pode deixar qualquer um ler e gravar esses arquivos. Isso pode ser um risco de segurança, então eu não estou dando código ... Mas honestamente, enquanto possível, você provavelmente não quer isso.
-
A outra opção é simplesmente executar o script como root com
sudo ./scriptname
. A desvantagem disso é que qualquer coisa que esse script faça será feita como root. Isso inclui a criação de novos arquivos (que>>
pode se o arquivo já não existir) e isso pode ser um problema para o usuário.
E se isso não é curiosidade acadêmica e você está realmente tentando fazer algum trabalho da melhor maneira possível, existem ferramentas que fazem essas coisas para você, mas melhor. Você realmente quer olhar para logrotate
. Este tutorial do Oceano Digital é o mais limpo que posso encontrar rapidamente.