“sudo bash” ignorando a permissão somente leitura do arquivo .bash_history

2

Este problema está em um 12.04 atualizado e parece ter começado recentemente.

Eu tenho meu arquivo .bash_history definido como somente leitura. Ultimamente tenho notado que apesar disso o arquivo está sendo modificado! Aqui está o cenário. Em um novo terminal, aqui está o final do arquivo:

$ tail -5 .bash_history 
mkdir -p ttt ; gs -dNOPAUSE -sDEVICE=png16m -r180 -sOutputFile=ttt/p%03d.png *.pdf
rsync -av /home/u1204 /media/SEAGATE/u1204 
gnote.late.reminders|GREP_COLOR='1;32' egrep -i "is overdue"
pvr_iplayer -x -HD /home/u1204/Documents/pvr/tv-hd ; pvr_iplayer -x -STD /home/u1204/Documents/pvr/tv-std
exit

abrir um shell com privilégios elevados

 $ sudo bash [sudo] 
 password for u1204: 

 # ls -l ~/.bash_history
 -r-------- 1 u1204 u1204 1266 Feb 23 19:52 /home/u1204/.bash_history

então .bash_history ainda é definitivamente somente leitura. Faça algo e saia do shell escalonado:

# echo "written to history file"
written to history file

# exit
exit

E voilà, o arquivo de histórico foi modificado!

$ ls -l ~/.bash_history
-r-------- 1 u1204 u1204 1324 Feb 23 20:10 /home/u1204/.bash_history

Abra outro terminal para confirmar:

$ tail -5 .bash_history 
pvr_iplayer -x -HD /home/u1204/Documents/pvr/tv-hd ; pvr_iplayer -x -STD /home/u1204/Documents/pvr/tv-std
exit
ls -l ~/.bash_history
echo "written to history file"
exit

Tenho certeza de que não costumava fazer isso (pelo menos em 10.04).

De qualquer forma, isso não pode ser um comportamento correto, pode?

    
por Thorsen 23.02.2013 / 22:02

4 respostas

4

O Root tem leitura / gravação universal para tudo. Período.

Os proponentes do Windows gostam de reivindicar seu sistema de autenticação porque ele não tem uma conta "deus" e até mesmo administradores locais podem ser explicitamente negados.

Você não pode negar ao root qualquer acesso a qualquer coisa no sistema local.

Depois de alguns comentários, fiquei pensando que você poderia estar procurando uma maneira de não escrever para a história do bash. Você poderia fazer isso assim: link

Colocando o HISTFILE indefinido em seu bashrc para aqueles que não querem seguir o link.

    
por RobotHumans 23.02.2013 / 22:29
4

Sim, você pode negar o acesso de forma definitiva.

chattr +i
    
por emmcee 23.02.2013 / 23:16
0

@Thor

  

Tenho certeza de que ele não costumava fazer isso (pelo menos em 10.04).

Realmente faz.

O que eu acho que acontece é que se você usa sudo , você ainda consegue manter sua identidade mas com privilégios elevados, se você usou sudo su - por outro lado, você teria se tornado o "raiz real". daí a diferença.

    
por catalesia 23.02.2013 / 22:24
0

RO não é nada que um programa não possa anular, desde que você seja root ou proprietário do arquivo. Portanto, a maneira correta não é definir o arquivo como r--, mas executar

não definido HISTFILE

Para "sudo -s" isto deve funcionar (o ambiente é copiado, exatamente a razão pela qual o .bash_history do seu usuário é usado), para "sudo -i" (como "su -") você está usando / root /. bash_history de qualquer maneira. Se você não quer fazer isso, você precisa desanexar o HISTFILE no .bashrc / .bash_profile da sua raiz.

btw: como já mencionado, a maneira correta de obter um shell de root é sudo -s / sudo -i. "sudo su" ou "sudo bash" funciona, mas é uma maneira bastante impura de fazê-lo.

    
por user135220 24.02.2013 / 16:28