chowning cada usuário doméstico para si mesmo recursivamente

0

Ok, tenho cerca de 100 diretórios na minha pasta pessoal, todos pertencentes ao próprio usuário doméstico. Às vezes eu tenho que substituir manualmente alguns arquivos como root, então as permissões são perturbadas e alguns arquivos não são mais de propriedade daquele usuário. Para corrigir isso, eu sempre tenho que usar o seguinte comando dentro do diretório home:

chown -R user:user user/

Agora estou vendo alguns atalhos porque não posso fazer isso para todos os 100 usuários que estão por aí.

Eu estou querendo saber o que seria feito por:

chown -R *:* *
    
por Gilles 18.07.2013 / 12:38

2 respostas

2

A resposta completa seria

1) Abra um arquivo como vi chown_homedirs

2) Coloque o próximo código

#!/bin/bash

cd /home &&    
for h in *
  do 
    chown -R "$h:$h" "$h"; 
  done

3) Salve o arquivo

4) chmod +x chown_homedirs

5) execute ./chown_homedirs

NOTA: Se os diretórios do usuário contiverem espaços, você sempre precisará citar a expansão. Se você não citar a expansão, as coisas podem falhar e levar a resultados inesperados.

    
por 18.07.2013 / 12:59
0

Você pode usar o status para obter a propriedade do usuário e do grupo de um arquivo e usá-los para atualizar os arquivos algo como

#!/bin/bash
cd /home
for file in *
do
    user=$(stat -c %U "$file")
    group=$(stat -c %G "$file")
    echo chown -R "$user":"$group" "$file"
done

Isso lida com a situação em que o diretório owner / group / não é o mesmo. Obviamente, remova o eco se ele for bem testado para você.

    
por 18.07.2013 / 13:01