Quais diretórios são graváveis em um sistema após o FHS?

3

Eu preciso garantir que, ao excluir um usuário específico de um sistema, todos os seus arquivos sejam removidos. A criação / exclusão de usuários acontecerá muito neste sistema, então eu quero reutilizar os UIDs e quero garantir que o novo usuário não tenha acesso a nenhum arquivo do usuário antigo.

Minha pergunta é dupla:

  1. Existe uma maneira geral e fácil de encontrar todos os arquivos pertencentes a um usuário específico? Ou é uma% my_de% minha única opção em todo o sistema?
  2. Se uma busca em todo o sistema for a única opção, então quais diretórios são geralmente graváveis por um usuário normal (suponha que uma distribuição siga FHS )
    • Seu diretório inicial
    • / tmp
    • ??

O usuário não tem search -uid n privileges, então ele só pode escrever em lugares que são graváveis em um sistema de arquivos Unix padrão.

    
por parasietje 20.03.2014 / 10:55

2 respostas

0

Eu fiz um pouco de pesquisa por conta própria. Fonte principal: link

História longa: não há nada que proíba um usuário de criar arquivos . No entanto, no padrão linux FHS, apenas alguns diretórios são graváveis por todos. Contanto que você use uma distribuição que siga esta convenção, você deve verificar apenas os seguintes diretórios (como mostrado por um teste em meu próprio sistema):

  • / dev / shm (montado por padrão em algumas distribuições)
  • Diretório inicial do usuário
  • / var / tmp
  • / var / run / screen / S-rubenf
  • / tmp
  • / mnt / usb-disk (montado com gid = users)

Fonte:

find -type d | 
  while read DIR; do 
    if touch $DIR/test_can_be_removed123 2>/dev/null; then 
      rm $DIR/test_can_be_removed123
      echo $DIR >> writable_directories
    fi
  done
    
por 05.06.2014 / 13:17
4

Se você estiver removendo uma conta, use userdel -r . Isso remove o diretório home do usuário junto com seu conteúdo. Além disso, o arquivo de spool de correio pertencente ao usuário é removido.

Eu não diria que nenhum diretório poderia conter objetos pertencentes ao usuário em questão. Isso é particularmente verdadeiro se o usuário tiver privilégios de SUDO.

Use find para procurar o UID da conta que você irá excluir; ou acabei de excluir:

find / -user <UID> -exec ls -ld {} +

em que o UID é substituído pelo valor real do UID em questão ou o nome de usuário, se você ainda não excluiu a conta;

ou, em geral, para UIDs que não são mais mapeados para nenhum nome:

find / -nouser -exec ls -ld {} +

Estes são portáteis entre vários tipos de Unix (HP-UX, AIX, etc.) e entre distribuições Linux. O% GNUfind permite que o -exec ls -ld {} + seja substituído por -ls .

    
por 20.03.2014 / 11:48