Por que o Linux exige que um usuário seja root / usando o sudo / especificamente autorizado por montagem para montar algo? Parece que a decisão de permitir que um usuário monte algo deve basear-se em seus direitos de acesso ao volume de origem / compartilhamento de rede e ao ponto de montagem. Alguns usos para montagem não raiz são montar imagens do sistema de arquivos em uma direção de propriedade do usuário e montar um compartilhamento de rede em um diretório de propriedade do usuário. Parece que se o usuário tiver controle sobre os dois lados da equação de montagem, tudo deve ser legal.
Esclarecimento da restrição de acesso:
Eu acho que devo montar tudo o que o usuário teria acesso a um ponto de montagem do qual o usuário é proprietário.
Por exemplo, no meu computador, o / dev / sda1 pertence ao usuário root e ao disco do grupo com permissões brw-rw----
. Portanto, usuários não-root não podem mexer com / dev / sda1 e montar claramente não devem permitir que eles o montem. No entanto, se o usuário possui /home/my_user/my_imagefile.img e ponto de montagem / home / my_user / my_image / por que eles não podem montar esse arquivo de imagem nesse ponto de montagem com:
mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop
Como o kormac apontou, há um grande problema. Portanto, algumas restrições teriam que ser adicionadas para evitar que o suid fosse um problema, bem como potencialmente alguns outros problemas. Talvez uma maneira de fazer isso seja fazer o sistema operacional tratar todos os arquivos como pertencentes ao usuário que fez a montagem. No entanto, para simples leitura / gravação / execução, não vejo por que isso seria um problema.
Caso de uso:
Eu tenho uma conta em um laboratório em que meu espaço doméstico é restrito a 8 GB. Isso é minúsculo e muito, muito chato. Gostaria de montar um volume nfs do meu servidor pessoal para aumentar essencialmente a quantidade de espaço que tenho. No entanto, como o Linux não permite tais coisas, estou preso aos arquivos scp'ing para frente e para trás para ficar abaixo do limite de 8 GB.
fonte
sshfs
? Ele montará um diretório remoto, através dessh
, como você, sem a necessidade de acesso root. Ele só precisa da instalação do FUSE (sistema de arquivos no UserSpacE).sftp
é um pouco mais agradável de usar do quescp
.Respostas:
É uma restrição histórica e de segurança.
Historicamente, a maioria das unidades não era removível. Portanto, fazia sentido restringir a montagem a pessoas que tinham acesso físico legítimo, e elas provavelmente teriam acesso à conta raiz. As entradas fstab permitem que os administradores delegem a montagem a outros usuários para unidades removíveis.
Do ponto de vista da segurança, existem três problemas principais ao permitir que usuários arbitrários montem dispositivos de bloco ou imagens de sistema de arquivos arbitrários em locais arbitrários.
/etc
, com uma/etc/shadow
senha raiz que você saiba. Isso é corrigido permitindo que um usuário monte um sistema de arquivos apenas em um diretório que ele possui.nosuid
enodev
que estão implícitasuser
na entrada/etc/fstab
.Até agora, impor
user
quandomount
não é chamado pela raiz é suficiente. Mas, geralmente, a capacidade de criar um arquivo pertencente a outro usuário é problemática: o conteúdo desse arquivo corre o risco de ser atribuído pelo suposto proprietário, em vez do montador. Uma cópia casual de preservação de atributo por raiz para um sistema de arquivos diferente produziria um arquivo pertencente ao proprietário declarado, mas não envolvido. Alguns programas verificam se uma solicitação para usar um arquivo é legítima, verificando se o arquivo pertence a um usuário específico e isso não seria mais seguro (o programa também deve verificar se os diretórios no caminho de acesso pertencem a esse usuário; se a montagem arbitrária fosse permitida, eles também teriam que verificar se nenhum desses diretórios é um ponto de montagem em que a montagem foi criada nem pela raiz nem pelo usuário desejado).Para fins práticos, atualmente é possível montar um sistema de arquivos sem ser root, através do FUSE . Os drivers do FUSE são executados como o usuário de montagem, portanto não há risco de escalação de privilégios ao explorar um bug no código do kernel. Os sistemas de arquivos do FUSE podem apenas expor arquivos que o usuário tem permissão para criar, o que resolve o último problema acima.
fonte
Se um usuário tiver acesso direto de gravação a um dispositivo de bloco e puder montá-lo, ele poderá gravar um suid executável no dispositivo de bloco, montá-lo e executar esse arquivo e, assim, obter acesso root ao sistema. É por isso que a montagem é normalmente restrita à raiz.
Agora, o root pode permitir que usuários normais montem com restrições específicas, mas ele precisa garantir que, se o usuário tiver acesso de gravação ao dispositivo de bloco, a montagem desaprove suid e também devnodes, que têm um problema semelhante (o usuário pode criar um devnode que lhes dá acesso de gravação a um dispositivo importante ao qual eles não deveriam ter acesso de gravação).
fonte
Nem sempre exige super privs. De
man mount
fonte
mount()
chamada do sistema sempre requer raiz. Os utilitários suid podem se tornar root e permitir que usuários não root sejam montados, e se omount
comando estiver instalado suid, ele fará isso com base no sinalizador de usuário no fstab. Outros executáveis suid foram gravados para permitir a montagem dos usuários, comopmount
, o que permite que os usuários montem mídia externa e impõe as restrições apropriadas, como nosuid, nodev.Kormac e outros indicaram que este não é o dilema que você apresenta como; parece-me que isso se resume à filosofia de conceder explicitamente privilégios aos usuários versus um sistema pelo qual todos os usuários teriam o direito imutável de montar um sistema de arquivos.
Gilles aborda alguns dos problemas de segurança associados à montagem de sistemas de arquivos. Evitarei retroativamente uma discussão pró-ativa e tangencial sobre possíveis problemas técnicos relacionados a isso (ver comentários), mas acho justo que usuários não confiáveis não tenham o direito imutável de montar discos rígidos.
O problema com relação aos sistemas de arquivos virtuais e remotos (ou sistemas de arquivos remotos via sistemas de arquivos virtuais, como o FUSE) é menos significativo, mas isso não resolve a questão de segurança (embora o FUSE possa, e certamente resolveria o seu problema). Também é importante considerar que os dados nesses sistemas de arquivos quase sempre podem ser acessados sem a necessidade de montar um dispositivo, seja através da transferência de arquivos ou de ferramentas extraídas de imagens sem montagem, para que um sistema que não permita a montagem de algo seja necessário. não representa um problema insuperável no que diz respeito ao acesso a dados que você colocou estranhamente em um arquivo de imagem ou (mais compreensivelmente) deseja obter de um sistema remoto. Se você tiver uma situação em que esse não seja o caso, poderá valer a pena perguntar:
O que é exatamente isso que estou tentando fazer?
Onde estou tentando fazer isso?
Se a administração do sistema for justa, o item 2 explica por que o item 1 é impossível para você. Se a administração do sistema não é justa, isso é política . A solução para o problema "Meu administrador de sistemas não é justo" não é redesenhar o sistema operacional para que os administradores de sistemas em todos os lugares não possam restringir os usuários.
O sistema permite que o superusuário restrinja suas atividades, explicitamente ou por omissão ("Nós não fornecemos FUSE", etc). Privilégios são um mecanismo pelo qual isso é realizado. Pode não ser bom saber: "Você não precisa fazer isso", mas se for verdade ... que sera ... você não precisa fazer isso. Use ftp, etc. Se isso não for verdade, você deve incomodar os responsáveis.
fonte
FYI: Os kernels mais novos têm suporte para "namespace". Usuários comuns podem criar um espaço para nome e, dentro desse espaço para nome, se tornar
root
e fazer coisas divertidas, como montar sistemas de arquivos.Porém, ele não fornece permissões "reais" de superusuário - você só pode fazer o que já está autorizado a fazer (ou seja, você pode montar apenas dispositivos que você já pode ler).
http://lwn.net/Articles/531114/ Veja a seção 4.
fonte
root
dentro de um espaço para nome de usuário, mas não permite montar tipos normais de sistema de arquivos, mesmo que você possa ler e gravar o dispositivo de bloco. Veja o experimento 2 aqui: unix.stackexchange.com/questions/517317/…Como os dados no sistema de arquivos que eles pretendem montar podem comprometer a segurança do servidor ou até travá-lo (se intencionalmente construído dessa maneira).
fonte
owner
euser(s)
definidonosuid
. Você não iria querer alguém ser capaz de ignorar que facilmente com o que lhes permite remover manualmente asnosuid
No GNOME, o gvfs não requer root para montar o sistema de arquivos remoto (ftp ou ssh) e o gnome-mount também não precisa do root para montar o armazenamento externo (unidade USB, CD / DVD, etc.).
A maioria dos sistemas provavelmente não gostaria de ter o GNOME inteiro apenas para montagem remota; então, você pode usar lufs , sshfs ou ftpfs .
gvfs, lufs, sshfs e ftpfs usam o FUSE para permitir que usuários não root montem um sistema de arquivos virtual; e, diferentemente das montagens
-o user
, o FUSE não exige que o sysadmin organize montagens específicas. Contanto que você tenha o privilégio do diretório de montagem e de quaisquer recursos necessários para construir o sistema de arquivos, é possível criar a montagem do FUSE.Porque
mount
é principalmente / originalmente destinado ao sistema de arquivos local, que quase sempre envolve um hardware.fonte