Como posso criar e editar arquivos de um compartilhamento de arquivos do Windows no Linux (CentOS)?

0

Eu tenho uma unidade compartilhada do Windows que montei na minha máquina do CentOS 7 usando as instruções da Red Hat que eu Agora gostaria de criar e editar arquivos. No entanto, devo ser elevado para criar e editar arquivos em qualquer pasta na unidade. Eu tentei usar chmod para permitir que todos os usuários acessem, mas sem sucesso, e até tentei desmontar / remontar a unidade.

Como posso obter acesso não elevado à unidade?

(Eu estou criando esses arquivos usando o Matlab, e o Matlab não pode ser executado via sudo , então simplesmente permanecer elevado não é uma opção).

Impressão de terminal

[millironx@mymachine ~]$ sudo umount /mnt
[millironx@mymachine ~]$ sudo mount -t cifs -o username=millironx,password=mypassword,domain=AD //files.example.com/shared /mnt
[millironx@mymachine ~]$ cd /mnt/matlab-program
[millironx@mymachine matlab-program]$ touch testfile
touch: cannot touch 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo chmod +rwx /mnt/matlab-program
[millironx@mymachine matlab-program]$ touch testfile
touch: cannot touch 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo touch testfile
[millironx@mymachine matlab-program]$ ls
testfile
[millironx@mymachine matlab-program]$ rm testfile
rm: remove write-protected regular empty file 'testfile'? y
rm: cannot remove 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo rm testfile
[millironx@mymachine matlab-program]$ sudo matlab
sudo: matlab: command not found
    
por Milliron X 12.07.2018 / 20:26

1 resposta

1

Você precisa da opção uid= e talvez gid= mount. Consulte man 8 mount.cifs :

uid=arg
sets the uid that will own all files or directories on the mounted filesystem when the server does not provide ownership information. It may be specified as either a username or a numeric uid. When not specified, the default is uid 0. The mount.cifs helper must be at version 1.10 or higher to support specifying the uid in non-numeric form. See the section on File And Directory Ownership And Permissions below for more information.

gid=arg
sets the gid that will own all files or directories on the mounted filesystem when the server does not provide ownership information. It may be specified as either a groupname or a numeric gid. When not specified, the default is gid 0. The mount.cifs helper must be at version 1.10 or higher to support specifying the gid in non-numeric form. See the section on File And Directory Ownership And Permissions below for more information.

[…]

File And Directory Ownership And Permissions
The core CIFS protocol does not provide unix ownership information or mode for files and directories. Because of this, files and directories will generally appear to be owned by whatever values the uid= or gid= options are set, and will have permissions set to the default file_mode and dir_mode for the mount. Attempting to change these values via chmod/chown will return success but have no effect. […]

Esta seção também menciona um cenário em que "o cliente e o servidor negociam extensões unix" e um cenário em que "também é possível emulá-los localmente no servidor", etc.

No seu caso, uid= e gid= simples devem ser suficientes. Observe que eles especificam o usuário e o grupo Unix, uid= e username= são diferentes e, em geral, podem ter valores diferentes.

sudo mount -t cifs -o uid=millironx,gid=users,username=millironx,password=mypassword,domain=AD //files.example.com/shared /mnt

Você também pode encontrar esta pergunta útil.

    
por 12.07.2018 / 20:45