Evitar acesso acidental de baixo nível (formatação) do disco do sistema por raiz?

1

É possível evitar a montagem acidental e / ou reformatação de um disco ou partição pelo usuário root durante a operação normal de um sistema?

Por exemplo, isso aconteceu comigo há algum tempo:

  • Em operação normal, tenho /dev/sda1 montado como / e /dev/sdb1 montado como /var/disk2 .
  • Em um determinado dia, reescrevi um thumbdrive ( /dev/sdc ) com diferentes imagens do LiveCD três ou quatro vezes ao tentar reparar outro computador.
  • Uma dessas vezes eu desmontei /dev/sdb1 em vez de /dev/sdc1 e substituí sdb1 com um novo sistema de arquivos, por engano.

Normalmente você precisa ser root para fazer qualquer coisa com acesso a sistemas de arquivos de baixo nível em qualquer dispositivo de armazenamento.

O que eu gostaria é de poder me livrar de /dev/sda e /dev/sdb sempre que eu executar o sistema operacional ao vivo a partir de /dev/sda1 (em vez de ter iniciado a partir de um LiveCD que eu nunca quer colocar limites.)

Atualização em resposta a loevborg (obrigado): Acho que realmente preciso de acesso irrestrito completo a /dev/sdc (ou qualquer outro dispositivo que possa aparecer quando eu conecto um dispositivo de bloco USB ) como um usuário não-root. Isso é possível - apagar, criar um sistema de arquivos, montar - como não-raiz se eu definir permissões em algum lugar ou me adicionar ao grupo correto?

    
por Brendan Kidwell 02.05.2011 / 20:08

2 respostas

2

Em vez de fazer tudo como root, você pode usar permissões de arquivo. Os arquivos /dev/sd* podem ser vistos como arquivos regulares que podem receber permissões de arquivos.

  • Você efetuou login como ubuntu , que é membro do grupo ubuntu
  • Você precisa poder gravar em /dev/sdc1
  • Você precisa ler /dev/sdb1 , mas não pode escrevê-la
  • Por padrão, as permissões nos arquivos /dev/sd* estão definidas como 660 ( rw-rw---- ), de propriedade de root com o grupo root

Solução: forneça ao grupo ubuntu permissões de gravação para /dev/sdc1 e leia para /dev/sdb1 :

sudo chmod 640 /dev/sdb1
sudo chgrp ubuntu /dev/sdc1 /dev/sdb1

A partir de agora, você pode substituir com segurança seus discos por uma imagem como usuário não-root ( ubuntu ), com o sistema impedindo que você grave acidentalmente no disco errado. Não se esqueça de alterar as permissões / grupo novamente quando o disco for reinserido no sistema.

Eu achei este comportamento útil ao recuperar dados de um disco (operação somente leitura) sem ter que se preocupar que um comando escreve nele.

Informações adicionais: /dev/sdc é um disco. /dev/sdc1 , /dev/sdc2 , ... são partições nesse disco. As permissões não são herdadas, portanto, mesmo que você possa ler diretamente de /dev/sdc , isso não significa que você pode ler /dev/sdc1 . Se os seus discos estiverem marcados, você pode evitar erros verificando se /dev/sdc1 é realmente seu disco USB exibindo uma lista de dispositivos de etiqueta:

ls -lA /dev/disk/by-label
    
por Lekensteyn 02.05.2011 / 21:11
3

Isso não é possível. Por definição, "root" é o usuário que tem permissão para fazer tudo. Pense nisso. Se houvesse algo que a raiz não era permitida, não estaria na raiz da hierarquia de privilégios.

Provavelmente você poderia introduzir verificações manuais, mas provavelmente não seria mais seguro do que apenas garantir que você não faria nada estúpido ao usar o "sudo".

    
por loevborg 02.05.2011 / 20:30