GNU/Linux - Permissões em partição NTFS

4 de fev de 2018 - Paulo Dias


Oi pessoal.

Nesse artigo quero escrever sobre como habilitar permissões em uma partição NTFS compartilhada entre o GNU/Linux e o Windows.

É bem comum encontrar o ambiente onde o GNU/Linux e o Windows estão instalados na mesma máquina, usando uma terceira partição para arquivos comuns que precisam ser acessados a partir dos dois sistemas.

Como o Windows não oferece suporte nativo aos sistemas de arquivos do mundo Unix-like, a partição de arquivos geralmente é formatada em NTFS. Assim, tanto o GNU/Linux quanto o Windows conseguem ter acesso aos arquivos. Nas distribuições GNU/Linux os sistemas de arquivos mais comuns são as versões/upgrades do EXT( Exemplo: EXT4 ), mas é possível utilizar o drive NTFS-3G para suportar o sistema de arquivos NTFS.

Visto que o foco desse artigo é apenas configurar o uso de permissões em uma partição NTFS, vou iniciar supondo que a partição já está criada. Estou utilizando o Windows 10 e o Ubuntu 16.04, mas tudo deve funcionar normalmente com o Windows 7/8 e com outras distribuições do GNU/Linux.

Quando a partição é criada e configurada da forma padrão é possível ler e escrever nela a partir de qualquer um dos dois sistemas. Porém, não é possível utilizar permissões de arquivos e pastas no GNU/Linux, ou seja, os comandos chmod e chown não funcionam... Por exemplo, veja o que acontece com o arquivo teste:

 

paulo@paulo-notebook:~$ sudo mount /dev/sda7 /mnt/d 

paulo@paulo-notebook:~$ cd /mnt/d

paulo@paulo-notebook:/mnt/d$ > teste

paulo@paulo-notebook:/mnt/d$ ls -l teste 
-rwxrwxrwx 1 root root 0 Fev  4 21:39 teste

paulo@paulo-notebook:/mnt/d$ chmod 750 teste 

paulo@paulo-notebook:/mnt/d$ ls -l teste 
-rwxrwxrwx 1 root root 0 Fev  4 21:39 teste

paulo@paulo-notebook:/mnt/d$ chown paulo:paulo teste 

paulo@paulo-notebook:/mnt/d$ ls -l teste
-rwxrwxrwx 1 root root 0 Fev  4 21:39 teste

Perceba que mesmo usando os comandos chmod e chown nem as permissões, nem o dono e o grupo foram alterados. Isso acontece com qualquer arquivo dessa partição, por padrão todos arquivos serão do usuário root, com o grupo root e com todas as permissões ativadas( 777 ).

Para alterar esse comportamento é possível passar opções diferentes do defaults para montar a partição, por exemplo, o dono, o grupo e as permissões de montagem podem ser alteradas respectivamente pelas opções uid, gid e umask, assim:

 

paulo@paulo-notebook:~$ sudo umount /mnt/d

paulo@paulo-notebook:~$ sudo mount -o uid=paulo,gid=paulo,umask=022 /dev/sda7 /mnt/d 

paulo@paulo-notebook:~$ ls -l /mnt/d/teste
-rwxr-xr-x 1 paulo paulo 0 Fev  4 21:39 /mnt/d/teste

Obs.: A opção umask é utilizada para arquivos e pastas, mas podem ser utilizadas as opções fmask e dmask para configurar valores de umask diferentes para arquivos e pastas.

Essas opções são interessantes, mas os comandos chmod e chown ainda não podem ser utilizados porquê as permissões continuam sendo fixas.

Para realmente habilitar o uso de permissões é utilizada a opção de montagem permissions, dessa maneira:

 

paulo@paulo-notebook:~$ sudo umount /mnt/d

paulo@paulo-notebook:~$ sudo mount -o permissions /dev/sda7 /mnt/d 
Using default user mapping

paulo@paulo-notebook:~$ sudo su - 

root@paulo-notebook:~# ls -l /mnt/d/teste
-rwx------ 1 root root 0 Fev  4 21:39 /mnt/d/teste

root@paulo-notebook:~# chmod 755 /mnt/d/teste

root@paulo-notebook:~# ls -l /mnt/d/teste
-rwxr-xr-x 1 root root 0 Fev  4 21:39 /mnt/d/teste

root@paulo-notebook:~# umount /mnt/d

root@paulo-notebook:~# mount -o permissions /dev/sda7 /mnt/d 
Using default user mapping

root@paulo-notebook:~# ls -l /mnt/d/teste
-rwxr-xr-x 1 root root 0 Fev  4 21:39 /mnt/d/teste

root@paulo-notebook:~# chown paulo:paulo /mnt/d/teste

root@paulo-notebook:~# ls -l /mnt/d/teste
-rwxr-xr-x 1 paulo paulo 0 Fev  4 21:39 /mnt/d/teste

root@paulo-notebook:~# umount /mnt/d

root@paulo-notebook:~# mount -o permissions /dev/sda7 /mnt/d 
Using default user mapping

root@paulo-notebook:~# ls -l /mnt/d/teste
-rwxr-xr-x 1 paulo paulo 0 Fev  4 21:39 /mnt/d/teste

A opção permissions permite utilizar os comandos chmod e chown de forma adequada. Além disso, a opção permissions também habilita a compatibilidade entre as permissões do GNU/Linux com as permissões do Windows.

Veja que após o comando mount foi exibida a mensagem "Using default user mapping", isso acontece porquê o arquivo responsável pelo mapeamento entre os usuários do GNU/Linux e do Windows não foi encontrado. Por padrão, o arquivo de mapeamento deve ficar na raiz da partição em .NTFS-3G/UserMapping com o conteúdo semelhante a esse:


# id_usuario_gnulinux:id_grupo_gnulinux:sid_usuario_windows
0:0:S-1-5-21-494949499-1616161616-1717171717-500
1000:1000:S-1-5-21-494949499-1616161616-1717171717-1001

Para criar o mapeamento pode ser o usado o comando ntfs-3g.usermap no GNU/Linux, dessa forma:

 

paulo@paulo-notebook:~$ sudo umount /dev/sda7

paulo@paulo-notebook:~$ sudo ntfs-3g.usermap /dev/sda7

paulo@paulo-notebook:~$ sudo mount /dev/sda7 /mnt/d

paulo@paulo-notebook:~$ sudo mkdir /mnt/d/.NTFS-3G/

paulo@paulo-notebook:~$ sudo mv UserMapping /mnt/d/.NTFS-3G/

Também é possível criar o mapeamento coletando as informações dos usuário de forma manual, usando os comandos getent passwd no GNU/Linux e wmic useraccount get name,sid no Windows.

Com o mapeamento criado, quando a partição for montada novamente a mensagem "Using default user mapping" não deve ser exibida.



paulo@paulo-notebook:~$ sudo umount /mnt/d 

paulo@paulo-notebook:~$ sudo mount -o permissions /dev/sda7 /mnt/d

Assim, as permissões vão funcionar normalmente no GNU/Linux e serão adaptadas quando a partição for acessada pelo Windows. O contrário também vai acontecer, permissões configuradas no Windows serão adaptadas para as permissões do GNU/Linux.

Obs.: Como o sistema de permissões usado no Windows( ACL ) é mais especifico que o sistema padrão do GNU/Linux( POSIX ), algumas permissões podem ser generalizadas.

A configuração da partição no fstab para montagem automatica pode ser feita, assim:


/dev/sda7 /mnt/d          ntfs-3g    permissions 0       0

Ou usando o UUID da partição:


UUID=10C333333333331A /mnt/d          ntfs-3g    permissions 0       0

Obs.: Para identificar o UUID da partição pode ser o usado o comando blkid

Seguem alguns links para quem quiser saber mais sobre o assunto:

https://www.tuxera.com/community/ntfs-3g-advanced/ownership-and-permissions/

https://wiki.archlinux.org/index.php/NTFS-3G

https://manpages.debian.org/jessie/ntfs-3g/mount.ntfs-3g.8.en.html

https://macmagazine.com.br/2012/03/19/seguranca-no-mundo-apple-permissoes-de-acesso-posix-e-acl/

http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/


Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux