/ etc / shadow e / etc / passwd privilege - por que é gravável

0
sghk1> id
uid=0(root) gid=0(root)

sghk1> ls -l /etc/shadow
-r--------   1 root     sys         4045 Aug 24 15:52 /etc/shadow

sghk1> ls -l /usr/bin/passwd
-r-sr-sr-x   1 root     sys        26764 Jan 11  2012 /usr/bin/passwd

Quando tento editar o vi e o arquivo, e: wq, ele solicita o seguinte

"/etc/shadow" File is read only

Por que é que quando eu chamo / usr / bin / passwd, o arquivo é gravável / modificável pelo executável, mas quando tento editar manualmente como root, não consigo

    
por Noob 24.08.2015 / 10:44

3 respostas

2

Como root , você pode fazer "qualquer coisa", mas programas como vi farão verificações para avisá-lo. vim (que é o que você provavelmente está usando) permitirá gravar em um arquivo somente leitura usando :w! (um ponto de exclamação).

O programa passwd foi projetado para atualizar /etc/shadow e usará qualquer combinação de chmod , write , etc., necessária sem se preocupar em avisar o usuário.

Como um usuário comum (não executando como root ), é claro, vi ( m ) não pode atualizar /etc/shadow . O programa /usr/bin/passwd funciona porque usa o recurso setuid (o "s" quando você faz ls -l /usr/bin/passwd ).

    
por 24.08.2015 / 10:54
2

O arquivo que você referenciou ( /etc/shadow ) não mostra o sinalizador gravável em seu permissões . Por padrão, vi ou vim não grava em um arquivo que não possui o sinalizador gravável, nem como raiz nem como proprietário do arquivo, a menos que você substitua seu comportamento por um ponto de exclamação.

Você pode usar :w! para gravar no arquivo, ignorando o fato de que o sinalizador gravável está faltando.

    
por 24.08.2015 / 10:56
0

Veja as permissões que você tem no arquivo, root é o proprietário e a própria raiz só tem permissão de leitura. Para alterá-lo, você deve fazer "chmod u + w / etc / shadow" como root e ele dará "você mesmo" a permissão de gravação.

    
por 24.08.2015 / 11:00