Montando uma pasta do Windows com permissões de gravação no Ubuntu

17

Aparentemente, a resposta está aqui: /superuser/251537/mount-specific-ntfs-directory-on-linux, no entanto, não está funcionando como o esperado.

Eu tenho um sistema de inicialização dupla com Windows 7 e Ubuntu 13.04 (atualizado a partir da 12.10) e quero acessar minhas pastas pessoais do Windows 7 para leitura e gravação. Segui as instruções de acordo com o link fornecido e meu /etc/fstabarquivo fica assim:

/dev/sda1 /media/windows ntfs ro,umask=0222,defaults 0 0
/media/windows/Users/MyUser/    /home/myuser/Windows    ntfs-3g rbind,user,umask=0222,defaults 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0

Quase funciona como esperado. Meu partição do Windows está em /media/windows/com permissões somente leitura e minha pasta pessoal do Windows está em ~/Windows. No entanto, essa pasta pessoal também é somente leitura.

Nota: estou configurando isso em um ambiente de várias sessões, portanto, preciso que ele funcione para minha sessão e para as sessões de outros usuários. Eu preciso que cada usuário possa acessar e poder escrever e ler suas pastas do Windows no Linux.

Carlos Eugenio Thompson Pinzón
fonte
Existe alguma maneira de alterar e testar as configurações sem ter que reiniciar todo o sistema. Até agora, tentei alterar o umask (para 0002), adicionar parâmetros uid e gid, etc. sem resultados positivos, mas cada alteração requer um desligamento do sistema.
Carlos Eugenio Thompson Pinzón
Eu havia concedido a recompensa de 100 a totti pela ideia ou pela montagem da partição /root/(que está funcionando). Minha solução atual usa as dicas fornecidas pelo falconer, ajThapa, totti e yilmi, nenhuma delas está funcionando conforme o esperado na pergunta original (as proteções não são suficientes), mas está funcionando (os usuários têm acesso rw aos dados). Todas essas respostas mencionadas foram votadas.
Carlos Eugenio Thompson Pinzón

Respostas:

6

A questão do superusuário vinculado acima é para montar a partição e o subdiretório no modo somente leitura . Você precisa apenas do subdiretório (pasta pessoal) para ser lido / gravado.

Primeiro verifique se o seu sistema pode montar a partição NTFS no modo de leitura e gravação

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows

Agora teste se o fs montado é gravável. Caso contrário, pare aqui e faça outra pergunta neste site.

O problema é que o subdiretório de uma partição montada em RO não pode estar no RW. Portanto, a solução é montar a partição do Windows no RW em um local oculto e inacessível. Então, vamos montá-lo em / root / win, que é inacessível para usuários não-root (sem sudo)

Como usuário root , siga as
etapas
1. Monte a partição do Windows no RW

mount -t ntfs-3g -o rw /dev/sda1 /root/win  

2. Ligue-o

mount --bind /root/win/Users/MyUser/  /home/myuser/Windows  

3. Vincule uma instância somente leitura da partição do Windows

mount --bind /root/win /media/windows  
mount -o remount,ro /media/windows

Agora tudo deve ficar bem. Além disso, você pode desmontar a partição do Windows, mas eu aviso em algum sistema que tornará o vinculado (@home) inacessível. O código éumount /root/win

Como alternativa, você pode montar a partição do Windows no RW em / media / windows (em vez de / root / win) e vincular imediatamente a montagem no mesmo ponto de montagem (/ media / windows) para que ninguém (nem mesmo a raiz) possa escrever no partição (mas na pasta do usuário).

totti
fonte
Funciona ? Qual o problema?
totti 22/12/13
A primeira parte, a montagem de rw no / media / windows parece funcionar, embora não relate as permissões em que posso tocar e editar os arquivos.
Carlos Eugenio Thompson Pinzón
Ao remontar, recebo o seguinte erro:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio Thompson Pinzón
Eu acho que é problema do seu sistema. Eu tenho isso testado com sucesso no ubuntu 12.10. Eu nunca vejo esse erro, mesmo no ubuntu 10.04. Você pode experimentá-lo em um sistema ativo (como parecia ter atualizado o sistema operacional).
totti 23/12/13
Agradeço +1 por mim também por uma solução elegante e uma explicação muito clara. Eu gosto especialmente do truque para montar a pasta do usuário para que uma (mesmo raiz) possa escrever em outra que não seja a pasta do usuário. Essa é realmente a melhor solução, pois nenhuma instância do sistema operacional, exceto a instância do Windows 8.1 à qual os arquivos do sistema pertencem, tem alguma empresa acessando esses arquivos do sistema. Dados compartilhados, no entanto, são uma história diferente.
Bill The Ape
5

Duvido que a resposta do superusuário vinculado seja funcional. (Embora eu não possa experimentá-lo.) De man mount:

Observe que as opções de montagem do sistema de arquivos permanecerão as mesmas do ponto de montagem original e não poderão ser alteradas passando a opção -o junto com --bind / - rbind. As opções de montagem podem ser alteradas por um comando de remontagem separado, por exemplo:

mount --bind olddir newdir
mount -o remount,ro newdir

Também duvido que seja possível fazer --rbindparte de um sistema de arquivos com um driver de sistema de arquivos diferente (ntfs vs ntfs-3g).

Quando rbindo comando mount ignora todas as opções, nada se torna leitura / gravação. E como o driver ntfs do kernel não suporta gravações, obviamente a rwopção também não ajudará. Use o driver ntfs-3g.

Basicamente, o que você deve fazer é isso (em um terminal):

mount -t ntfs-3g -o ro /dev/sda1 /media/windows
mount --bind /media/windows/Users/MyUser/    /home/myuser/Windows
mount -o remount,rw /home/myuser/Windows

(Eu acho que isso --rbindtambém é desnecessário, --binddeve ser o suficiente.)

E com relação ao comentário sob a pergunta: é claro que você não precisa reiniciar o sistema para teste, basta usar o mountcomando como fiz acima. (E desmonte com o umountcomando.)

Depois de confirmar que isso funciona como pretendido, basta modificar a montagem e adicionar as opções desejadas: uid, gid, umask, etc.

falcoeiro
fonte
Bem, eu posso testar usando mount, no entanto, quando encontrar a configuração funcional, desejarei fazê-lo automaticamente, /etc/fstabpor qualquer outro meio. (Com a Ob Pergunta: como faço para traduzir mountcomandos em fstabparâmetros?)
Carlos Eugenio Thompson Pinzón
@ CarlosEugenioThompsonPinzón Esse fstabé apenas um arquivo que é analisado sequencialmente pelo mountcomando na inicialização. Mas acho que o Ubuntu não usa, mountmas mountallna inicialização, que pode não executar os comandos no fstab sequencialmente. Então, sim, colocar esses parâmetros de comando simplesmente para fstabnão funcionar. Mas você sempre pode colocar simplesmente os comandos de montagem de trabalho em um script de inicialização (por exemplo /etc/rc.local) ou fazer um trabalho inicial com eles. O mais importante no seu caso é descobrir um esquema de montagem funcional, tornando fácil a montagem automática na inicialização.
Falconer
@ CarlosEugenioThompsonPinzón Ops, perdi a última pergunta do seu comentário. Então, como os comandos mount se traduzem em fstab? Você pode procurar aquiman mount ou aqui . Breve história: primeiro campo: dispositivo a montar, segundo campo: ponto de montagem, terceiro campo: tipo fs (mais precisamente driver fs), quarto campo: opções de montagem, o outro campo é menos importante agora. Portanto, no comando mount, a string que escrevemos atrás -tfica no terceiro campo, a string que escrevemos atrás -oentra no quarto campo.
Falconer
3

Veja se isso ajuda ...

Se sda1já estiver montado /media/windows, você pode desmontá-lo com:

sudo umount /media/windows

Em seguida, crie o diretório windowsem /media/:

sudo mkdir /media/windows

Edite o /etc/fstabseguinte:

/dev/sda1  /media/windows ntfs-3g  rw,nodev,noexec,auto,nouser,async,locale=en_US.utf8,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/MyUser/  /home/myuser/Windows  ntfs-3g rbind,user,rw,nodev,noexec,auto,async,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/OtherUser/  /home/otheruser/Windows  rbind,user,rw,nodev,noexec,auto,async,uid=1001,gid=1001,umask=0002 0 0

( Nota : altere os valores uid e gid como para o usuário. Para obter o uid e gid de um usuário, você pode usar o comando id -u usernamee id -g usernameresp.)

Agora você pode montá-los com o comando:

sudo mount -a

Agora vá para os diretórios religados e veja se você pode editar o arquivo. E você deveria estar pronto.

preciso
fonte
Ok, tenho permissões rw /media/windows(não relatadas ls, mas posso editar arquivos) como root, no entanto, nos diretórios locais que preciso sudo, para modificar os arquivos.
Carlos Eugenio Thompson Pinzón
... e agora todos os diretórios montados pertencem a mim (usuário 1000), de /media/windowsa /home/someotheruser/Windows.
Carlos Eugenio Thompson Pinzón
Acho que agora você e outros usuários podem fazer e salvar trabalhos nos respectivos. pontos de montagem no $ HOME dos usuários ... se o restante dos usuários ainda não puder ter acesso RW, adicione-os ao seu grupo (provavelmente com o gid 1000)
preciso
Atualmente, tenho um grupo ao qual todos os usuários locais estão conectados e concedo permissões de gravação para esse grupo. Isso resolve o “cada usuário tem acesso rw aos seus próprios dados”, mas a partição inteira e os dados de outros usuários não estão protegidos.
Carlos Eugenio Thompson Pinzón
3

Faça todos os seus testes antes de editar seu arquivo de configuração do fstab.

Bem, você provavelmente sabe que o sistema de arquivos NTFS é automaticamente montado em somente leitura se o sistema de arquivos estiver sinalizado como sujo. O que você deve fazer primeiro antes de tentar qualquer uma das respostas é montar o disco no Windows e executar o chkdsk antes de tentar montá-lo novamente.

Além disso, se a montagem em rw ainda falhar, tente montar com diferentes opções de tipo de montagem, como sudo mount -t ntfsousudo mount -t ntfs-3g

Depois que o fs estiver montado no rw, você poderá fazer o seguinte:

mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/ mount -o remount,ro /home/SHAREDDIRECTORY/

ou

sudo gksu nautilusou sudo gksu dolphinpara abrir um explorador com direitos su

yilmi
fonte
Obrigado pelo chkdsk. Havia realmente algumas corrupções na partição NTFS, e agora eu posso escrever na unidade montada com sudo.
Carlos Eugenio Thompson Pinzón
2

Por que não tentar montá-lo com o atributo de leitura e gravação rw :?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, padrões 0 0

user189541
fonte
Vou verificar, no entanto, preferiria ter toda a partição somente leitura e apenas algumas pastas específicas como leitura e gravação.
Carlos Eugenio Thompson Pinzón
Não funcionou. A partição e as pastas ainda são somente leitura. A única diferença é que chmod e chown não falham ao relatar um erro somente leitura: eles simplesmente não operam.
Carlos Eugenio Thompson Pinzón
2

Não tenho muita certeza, no entanto, você pode tentar isso por favor. Após a montagem do inversor, dê o seguinte comando no terminal

sudo gksu nautilus

digite sua senha administrativa e, na janela gráfica que é aberta, você poderá clicar na unidade e alterar as permissões de leitura / gravação.

Deixe-me saber se isso funciona. Há ajuda disponível para uso do nautilus com interface gráfica com privilégios de root.

KSR
fonte
Isso permitiria o acesso aos arquivos e eles poderiam ser copiado fora também, mas as permissões somente leitura não pode ser mudado, como sistemas de arquivos não-Unix são montados como somente leitura ...
Wilf
1

Eu recomendaria o uso do sudo chmod.666 ~ / Windows

https://help.ubuntu.com/community/FilePermissions

user1553176
fonte
1
Não posso alterar a permissão ou o proprietário (mesmo com sudo). Ele rejeita o comando dizendo que o sistema é somente leitura. Nem mesmo em /media/windows/que é toda a partição (e que não seria o comportamento esperado)
Carlos Eugenio Thompson Pinzón
Provavelmente estou errado, mas às vezes o sudo não tem permissões que o root teria. Tente executar o sudo su e o chmod
virtualxtc
0

A maneira mais fácil de montar o Windows como leitura e gravação é simplesmente reiniciá-lo ou desligar completamente. A partição NTFS hiberna quando o "desligamento rápido" é usado. Este princípio é abordado em mais detalhes neste link.


fonte