Eu configurei um servidor CentOS para ser um servidor SFTP que recebe arquivos de clientes de maneira segura. Então eu preciso ser capaz de acessar esses arquivos via SMB.
- A 'raiz' do meu SFTP está em / var / inbound /
- Em seguida, em / var / inbound / eu tenho um diretório para cada cliente (por exemplo, / var / inbound / customer1 /
- Então, para prender usuários, eu tenho um subdiretório chamado uploads em cada diretório do cliente (por exemplo, / var / inbound / customer1 / uploads /)
Consegui fazer com que as permissões funcionassem conforme o esperado e tudo está em ordem para dar suporte ao acesso do cliente ao SFTP. Um aspecto importante é que eu "prendi" os usuários em seus diretórios / var / inbound /.
Aqui está agora eu criei o diretório / var / inbound:
sudo mkdir /var/inbound
sudo chown root.root /var/inbound #root must be owner of directory
E aqui está como eu crio os subdiretórios para cada cliente:
sudo mkdir -p /var/inbound/[username]/uploads
sudo chown root /var/inbound/[username]
sudo chmod go-w /var/inbound/[username]
sudo chown [username]: /var/inbound/[username]/uploads
sudo chmod 770 /var/inbound/[username]/uploads
NOTE: Both the /var/inbound/[username]/ and
/var/inbound/[username]/uploads/ directories need a special set of
permissions. Perform the following commands, replacing [username] with
the user in question.
Agora eu vou poupá-lo da configuração SSH / SFTP restante. Mas é suficiente dizer que posso fazer com que os usuários sejam presos em seus próprios diretórios, e que eu desabilitei o acesso SSH / console usando SCPONLY.
Agora, onde as coisas se complicam ...
Agora preciso dar acesso SMB a uma conta específica (vamos chamá-lo fileaccess ) para o diretório / var / inbound /, que será acessível a partir de um host do Windows Server. Eu consigo ver o diretório / var / inbound como um compartilhamento do Windows, incluindo seus subdiretórios. No entanto, não consigo ver alguns arquivos e não tenho acesso de gravação aos arquivos para os quais devo ter acesso.
$ ls -l /var/inbound
total 0
drwxr-xr-x. 3 root root 20 Jan 5 11:53 testuser
$ ls -l /var/inbound/testuser
total 0
drwxrwxr-x. 2 testuser sftponly 53 Jan 5 12:26 uploads
Agora aqui está o diretório que eu quero acessar com a conta filaccess :
$ ls -la /var/inbound/testuser/uploads/
total 12
drwxrwx---. 2 testuser sftponly 53 Jan 5 15:12 .
drwxr-xr-x. 3 root root 20 Jan 5 11:53 ..
-rw-r--r--. 1 fileaccess sftponly 30 Jan 5 12:26 test2.txt
-rw-r--r--. 1 testuser sftponly 26 Jan 5 12:25 test3.txt
-rw-rw-r--. 1 dmgmadmin dmgmadmin 14 Jan 5 11:53 test.txt
Quando me conecto via SMB com a conta filaccess , só consigo ver o test.txt, mas não consigo abrir o arquivo (acesso negado).
Aqui está o meu smb.conf. Como você pode ver, tentei uma série de opções diferentes:
[global]
workgroup = <MYDOMAINNAMEGOESHERE>
security = user
passdb backend = tdbsam
[inbound]
comment = Incoming files (as %u)
path = /var/inbound/
valid users = fileaccess
guest ok = No
read only = No
writeable = Yes
browseable = Yes
create mask = 0640
directory mask = 0750
NOTA: Embora eu tenha um domínio, essa máquina do CentOS não faz parte dela. Ele tem uma entrada no meu DNS do Windows AD e está configurado para usar o servidor DNS - mas isso é o fim. Eu quero que esta máquina seja isolada. Portanto, as tentativas de se conectar a esse servidor são feitas com contas CentOS locais.
Estou particularmente preocupado que isso possa ser um problema de acesso ao sistema de arquivos Linux e que as alterações necessárias possam entrar em conflito com as permissões de SFTP necessárias (por exemplo, o SFTP exige que os diretórios / var / inbound sejam de propriedade root).
Gostaria de saber se existe uma maneira de impor no SMB.conf os direitos de acesso para a conta em questão, para que a conta tenha permissões de navegação / leitura / direito. Eu tentei todos os tipos de opções de configuração em smb.conf (Eu tenho lido o manual para smb.conf aqui ).