Exclui um usuário e todos os arquivos pertencentes a esse usuário

11

Eu usei deluser sem o parâmetro --remove-all-files :

$ deluser 'user'

Existe uma maneira diferente de rm -r /home/user para remover todos os arquivos pertencentes a um usuário agora (já que eu já executei o deluser)?

    
por pl1nk 31.05.2012 / 13:36

3 respostas

19

Você terá que encontrar manualmente os arquivos, o que provavelmente seria o que o deluser faria.

Por favor, note que --remove-all-files não é igual a rm -r /home/user . O último apenas remove o homedir (que pode incluir arquivos não pertencentes a esse usuário, embora não sejam usuais), o primeiro remove todos os arquivos de propriedade daquele usuário do sistema. Pelo menos se a página do manual for confiável .

O GNU find tem um teste -user , portanto, você pode fazer find / -user xxx para localizar todos os arquivos de propriedade do usuário xxx . xxx seria o nome do usuário e pode (e, nesse caso, terá que ter que, como o usuário não existe mais) ser o ID numérico do usuário. find também tem uma opção -delete , então

find / -user xxx -delete

Deve fazê-lo, embora eu não tenha testado o comando com todas as opções ao mesmo tempo.

EDIT: ID numérica: A razão pela qual eu disse que você tem que usar um ID numérico é porque, como você já deletou o usuário, a entrada dele em /etc/passwd foi deletada (tinha, ao longo com outras coisas, o ID do usuário, juntamente com seu nome de usuário).

Então, se você não removeu o seu homedir, uma das maneiras mais fáceis é apenas consultar o ID do proprietário do homedir:

stat -c %u /home/user/

( stat é uma ferramenta para ler dados do sistema de arquivos. -c %u informa stat como escrever sua saída, aqui estou pedindo para simplesmente gerar o ID do usuário)

Se você gosta de one-liners, você pode até encadear os dois comandos:

find / -user $(stat -c %u /home/user/) -delete

(Claro que você pode preferir executá-lo primeiro sem -delete para ter certeza de que não há nada que você queira manter, e para pegar qualquer erro que tenha cometido ao escrever o resto do comando. Erros ao fazer operações de exclusão recursivas em / não são para cardíacos.)

    
por njsg 31.05.2012 / 13:48
5

Outra opção seria adicionar novamente o usuário com adduser , especificando o UID antigo e, em seguida, executar deluser novamente, desta vez com o sinalizador --remove-all-files .

Suponha, por exemplo, que o usuário tenha o nome de usuário alice e o UID 1001 :

sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice
    
por Eliah Kagan 07.06.2012 / 19:20
3

O gnu find tem as opções -nouser e -nogroup, procure em man find . Com estas opções você pode encontrar todos os arquivos em seu (s) sistema (s) de arquivos que não possuem usuário correspondente em / etc / passwd. Se você não criou um novo usuário com os uids antigos de seus usuários excluídos, é possível encontrar esses arquivos órfãos.

No entanto, você pode encontrar mais arquivos, não apenas aqueles que pertenciam ao que você excluiu.

    
por ohno 31.05.2012 / 14:13