Opção "usuário" trabalho para montagem, não para umount

7

Estou experimentando opções de montagem para um programa que estou escrevendo. Estou executando o Linux Mageia 2.

Eu adicionei a seguinte linha a /etc/fstab

/dev/sr0 /mem  auto user,noauto, 0 0

e removi todas as outras entradas referentes a /dev/sr0 , que é o dispositivo da minha unidade de DVD.

Então, agindo como usuário normal, posso com sucesso

$ mount /dev/sr0

mas eu recebo uma mensagem de erro ("Somente root pode ...") para

$ umount /dev/sr0

É claro que o dispositivo não está ocupado: não faço nada entre montar e desmontar.

Adicionado após a resolução : Se você estiver interessado apenas em resolver esse problema, pode pular o restante da pergunta e ir diretamente para a resposta aceita. O resto da questão é sobre o meu trabalho para encontrar uma solução ou documentar melhor o problema. No entanto, há uma seção post-mortem no final da pergunta que complementa a resposta com minhas próprias observações.

Propriedade dos arquivos:

$ ls -ld /mem /dev/sr0
brw-rw----+  1 root cdrom 11, 0 mai   14 01:01 /dev/sr0
drwxr-xr-x  12 root root   4096 janv. 21 22:34 /mem/

E eu sou um membro do grupo "cdrom"

Eu tenho o mesmo problema ao montar uma imagem do sistema de arquivos com um dispositivo de loop.

No entanto, tudo funciona bem quando eu substituo "user" pela opção "users", o que parece indicar que o sistema está confuso ao lembrar quem montou o sistema de arquivos.

A primeira resposta de Rahul Patil não traz mais discernimento, uma vez que é essencialmente equivalente ao que usei, se meu entendimento do procedimento de desmontagem estiver correto. No entanto, levo-me a pensar mais sobre este processo (por conseguinte, um upvote) e para obter mais detalhes. Isso foi ainda mais apoiado pelo comentário de Hauke Laging. Pelo que entendi, sumariamente, o comando umount leva seu argumento (um dispositivo ou um ponto de montagem) e tenta identificar entradas aplicáveis em /etc/mtab e, em seguida, verifica com /etc/fstab se ele pode executar a solicitação.

De acordo com a página man do mount (8) , o nome do usuário de montagem [deve ser] escrito para o mtab para que ele possa desmontar o sistema de arquivos novamente. Quando eu verifico /etc/mtab após a montagem, não há tal informação escrita que eu possa encontrar. Eu não sei como é suposto ser armazenado e como deve ser.

Por isso, o problema é realmente com mount em vez de com umount .

Para ter certeza absoluta de que o problema não é que outra /etc/fstab entry seja usada para montagem (o que explicaria a ignorância da opção "user"), Excluí todas as outras entradas em /etc/fstab , mantendo apenas a linha única no início da minha pergunta. Então eu repeti a sequência do mount-humount, infelizmente com o mesmo resultado.

$ grep sr0 /etc/mtab
/dev/sr0 /mem udf ro,nosuid,nodev,noexec,relatime,utf8 0 0

$ mount | grep sr0
/dev/sr0 on /mem type udf (ro,nosuid,nodev,noexec,relatime,utf8)

O Hauke Laging pediu ls -l /etc/mtab , o que eu acho que foi um erro e que ele estava realmente pedindo por cat /etc/mtab . Mas eu fiz mesmo assim ...

$ ls -l /etc/mtab
lrwxrwxrwx 1 root root 12 juin  25  2012 /etc/mtab -> /proc/mounts
$ ls -l /proc/mounts
lrwxrwxrwx 1 root root 11 mai   19 13:21 /proc/mounts -> self/mounts
$ ls -l /proc/self/mounts
-r--r--r-- 1 myself mygroup 0 mai   19 13:22 /proc/self/mounts

Esta última informação me surpreendeu. Embora eu seja essencialmente o único usuário nesse computador, não vejo razão para que esse arquivo pertença a mim ou a qualquer outro usuário que não seja o próprio root. Muito obrigado Hauke, mas por que você fez essa pergunta?

Na verdade, o arquivo não pertence a mim. Eu acho que deve ser um arquivo virtual. Repeti o pedido como utilizador "amigo" e depois como "raiz":

$ ls -l /proc/self/mounts
-r--r--r-- 1 friend users 0 mai   19 14:10 /proc/self/mounts

# ls -l /proc/self/mounts
-r--r--r-- 1 root root 0 mai   19 14:10 /proc/self/mounts

Eu gostaria de receber qualquer sugestão sobre qual poderia ser o problema ou para experimentos.

Obrigado

Post-mortem : aqui estão algumas observações finais depois que o problema foi resolvido pela Hauke Laging.

Eu segui na web a liderança da explicação de Hauke.

Aparentemente, este é um problema antigo. Isso é explicado em um documento antigo de outubro de 2000 , mencionando alguns problemas com outras opções, mas não user . Espero que alguns dos problemas de confiabilidade do kernel estejam corrigidos agora.

O problema é mencionado brevemente na seção de bugs da mount man page mas não com detalhes suficientes, especialmente em relação a configurações alternativas e efeitos nas opções.

No entanto, a perda na página do manual é a seguinte:

When the proc filesystem is mounted (say at /proc), the files
/etc/mtab and /proc/mounts have very similar contents. **The
former has somewhat more information, such as the mount options
used**, but is not necessarily up-to-date (cf. the -n option
below). It is possible to replace /etc/mtab by a symbolic link to
/proc/mounts, and especially when you have very large numbers of
mounts things will be much faster with that symlink, but **some
information is lost that way, and in particular using the "user"
option will fail**.

Certamente teria sido útil ter uma sugestão sobre isso, onde a opção user é descrita, que é o primeiro lugar que eu procurei.

    
por babou 19.05.2013 / 02:56

2 respostas

4

O problema é que seu /etc/mtab não é um arquivo, mas um link simbólico para /proc/mounts . Isso tem vantagens, mas também a desvantagem de que user não funciona. Você já adivinhou certo o motivo para isso: "o sistema fica confuso ao lembrar quem montou o sistema de arquivos". Esta informação é gravada em mtab , mas não pode ser escrita no seu caso. O kernel não se importa (nem mesmo sabe) sobre montagens de usuários (este é um recurso de espaço do usuário). Assim, esta informação não está contida em /proc/mounts .

Faça isso:

cd /etc
cp mtab mtab.file
rm mtab
mv mtab.file mtab

umount como o usuário deve trabalhar depois de ter montado o volume novamente.

    
por 21.05.2013 / 01:47
1

em vez do nome do dispositivo ( /dev/sr0 ) tente usar o ponto de montagem (no seu caso, o ponto de montagem é /mem )

Então é só usar para montar:

mount /mem

Para desmontar o uso:

umount /mem

Eu testei e trabalhei no meu lado, o SO é o CentOS 5.8

    
por 19.05.2013 / 07:30