obtendo o dono da pasta com o comando if [closed]

1

eu quero ser capaz de impedir que as pessoas acidentalmente excluam arquivos críticos do sistema no meu script, alguém sabe como usar a declaração para descobrir se o proprietário da pasta?

    
por Erik Gousaid 11.03.2016 / 13:04

2 respostas

2
find . -prune -user "$(id -u)"

Imprimirá . se o diretório atual pertencer a você.

Você pode fazer:

find . -prune -user "$(id -u)" -exec some command \;

Ou:

if [ -n "$(find . -prune -user "$(id -u)")" ]; then
  some command
fi

Para executar some command apenas se o diretório atual pertencer a você.

Para recuperar o ID do proprietário do diretório atual, POSIXly, você pode fazer:

ownerid=$(LC_ALL=C ls -lnd . | awk '{print $3}')

Ou com zsh ' stat builtin:

stat -H stat . && ownerid=$stat[uid]

Ou com o GNU find :

ownerid=$(find . -prune -printf %U)

Ou com o GNU stat :

ownerid=$(stat -c %u .)

Ou com o BSD stat :

ownerid=$(stat -f %u .)

Depois de ter esse $ownerid , você pode compará-lo com o ID de usuário efetivo do processo do seu shell, que pode obter com "$(id -u)" . Geralmente, é melhor trabalhar com IDs de usuário do que nomes de usuário, pois podem ter mais de um nome de usuário por ID de usuário no banco de dados da conta (e isso evita ter que consultar o banco de dados do usuário).

    
por 11.03.2016 / 13:14
1

Espere, o que? Para evitar que as pessoas excluam arquivos críticos do sistema, não permita que eles efetuem login como root e não façam o script setuid.

Se você estiver tentando ajudar as pessoas a gerenciar arquivos que não pertencem a eles, saiba mais sobre permissões de grupo e use uma configuração adequada. (Eu não posso dizer mais desde que eu não sei o que você está fazendo.)

Se os direitos de root forem realmente necessários (para permitir que usuários regulares gerenciem logs do sistema, por exemplo), use uma abordagem de "lista branca": Seu script deve gerenciar apenas arquivos que correspondam a critérios específicos. Caso contrário, quem sabe que recurso importante você esquecerá de proteger?

    
por 11.03.2016 / 13:44