montando compartilhamentos de janelas no linux enquanto mantém permissões de janelas

3

Eu tenho um compartilhamento do windows em um servidor windows2003 (WINJOE) que eu quero fazer backup em uma máquina Linux (LINUXJOE) que esteja devidamente associada ao domínio. Meu objetivo é fazer o backup das pastas compartilhadas do WINJOE para o LINUXJOE, mantendo as permissões / proprietários do Windows. Depois de ler a literatura relevante, tenho a impressão de que isso não é possível ...

De qualquer forma, em um mundo ideal, gostaria de montar um compartilhamento de ganhos (como somente leitura), por exemplo, \\ WINJOE \ important_folder, no LINUXJOE e execute o rsync de lá para o diretório de backup.

O que eu tenho até agora:

\\ WINJOE \ important_folder - > pasta compartilhada para backup | LINUXJOE: / mnt / important - > ponto de montagem de \\ WINJOE \ important_folder on LINUXJOE
LINUXJOE: / backup / $ DATE-important - > diretório de destino de backup

No momento eu consigo logar usando minha conta de domínio do windows no LINUXJOE, e se eu criar arquivos no sistema de arquivos do LINUXJOE, eles mostram o dono como usuários do domínio "somewinuser", então o mapeamento de usuários do windows para linux funciona ok . Quando montei \\ WINJOE \ important_folder usando o seguinte comando:

linuxjoe# mount.cifs //WINJOE/important_folder /mnt/important \
-o ro,user=backitup,dom=TODOMAIN,cifsacl,nounix  --verbose

Eu recebo:

ls -latrh

linuxjoe# ls -latrh /mnt/important
total 518M
-r-xr-xr-x 0 root root         518M Sep 28 01:19 test.mkv
-rwxr-xr-x 0 root root            0 Oct 25 19:04 testlalala
-rwxr-xr-x 0 root root            0 Oct 25 19:05 testkoko
drwxrwxrwx 1 root domain users    0 Oct 25 19:05 .
drwxr-xr-x 5 root root         4.0K Oct 29 16:29 ..


getcifsacl

linuxjoe# getcifsacl /mnt/important/test.mkv
REVISION:0x1
CONTROL:0x8404
OWNER:BUILTIN\Administrators
GROUP:TODOMAIN\Domain Users
ACL:Everyone:ALLOWED/I/FULL
ACL:NT AUTHORITY\SYSTEM:ALLOWED/I/FULL
ACL:BUILTIN\Administrators:ALLOWED/I/FULL
ACL:TODOMAIN\lukeskywalker:ALLOWED/I/FULL

rsyncing:

linuxjoe# rsync -apvXAgo /mnt/important/koko.mkv  /root/test/

linuxjoe# ls -latrh  /root/test/
total 518M
-rwxrwxrwx 1 root domain users 518M Sep 28 01:19 test.mkv
drwx------ 8 root root         4.0K Oct 29 18:29 ..
drwxr-xr-x 2 root root         4.0K Oct 29 18:29 .

É possível, de alguma forma, visualizar o proprietário adequado de arquivos em compartilhamentos do Windows e manter esse proprietário junto com todos os atributos de segurança do Windows quando eu rsync de um compartilhamento do Windows para minha caixa de backup linux?

smb.conf

[global]
workgroup = TODOMAIN
realm=SOMEOFFICE.SOMEWHERE.GR
server string = %h server
wins support = no
security = ads
encrypt passwords = yes
obey pam restrictions = yes
template shell = /bin/bash
template homedir = /home/%D/%U
password server=winjoe.someoffice.somewhere.gr
domain master = no
local master = no
prefered master = no

idmap config * : backend = rid
idmap config * : range = 5000-3000000000
idmap config * : base_rid = 0

idmap config TODOMAIN : backend = rid
idmap config TODOMAIN : range = 5000-3000000000
idmap cache time = 900
algorithmic rid base = 5000
client schannel = no
disable spoolss=yes

winbind separator=+
winbind use default domain=yes
winbind nested groups=yes
winbind enum users=yes
winbind enum groups=yes
winbind cache time= 300
winbind refresh tickets = yes

inherit acls = Yes
map acl inherit = Yes
acl group control = yes
    
por manjiki 29.10.2013 / 17:39

2 respostas

1

Infelizmente, as ACLs do Linux e as ACLs do Windows são muito diferentes. Quando você acessa um sistema de arquivos do Linux a partir do Windows via Samba, o Samba consegue mapear as ACLs do Linux mais simples para as ACLs do Windows sem perder muita informação. Para isso funcionar você já precisa de muitas das opções que você tem no seu smb.conf.

O inverso é muito mais difícil e provavelmente até impossível, especialmente porque uma montagem do Linux tem uma semântica diferente de um compartilhamento mapeado do Windows. E a montagem acontece com um driver de kernel que não implementa as ACLs. A única maneira que temos é obter as informações com programas adicionais como o getcifsacl.

As ferramentas normais do Linux, como o rsync, não sabem nada sobre as ACLs do Windows e não podem armazená-las. Se você precisar restaurar essas ACLs, precisará salvá-las com getcifsacl e restaurar com setcifsacl. Como esses comandos só funcionam em arquivos únicos, infelizmente, e o setcifsacl não pode trabalhar diretamente com a saída do getcifsacl, você precisará de um conjunto sofisticado de scripts para fazer o backup / restauração dessas ACLs. Uma pesquisa rápida não mostrou nenhuma solução existente.

Uma maneira de contornar isso seria deixar o Windows fazer o backup e usar um compartilhamento Linux como armazenamento para arquivos de backup (não arquivos individuais).

    
por 29.10.2013 / 19:23
-1

Que tal criar um arquivo grande no diretório samba e montá-lo como loop? É assim que funciona, com base no ótimo artigo link

dd if=/dev/zero of=/mnt/windows/BigFile bs=1M count=1 seek=150000

mount.cifs //WINJOE/important_folder /mnt/important \
-o lfs,user=backitup,dom=TODOMAIN,cifsacl,nounix  --verbose

Por padrão, a montagem do Samba tem uma limitação de tamanho de arquivo de 2 GB (ou 4 GB, não tenho certeza). É por isso que a opção " lfs " é usada na montagem, para permitir arquivos maiores.

mount -o loop /mnt/important/BigFile /mnt/backup

losetup /dev/loop0 /mnt/windows/BigFile

opcionalmente, usando criptografia: losetup -e aes256

mkfs.ext4 /dev/loop0
mount /dev/loop0 /mnt/important/BigFile
cd /mnt/important/BigFile
rsync -avz --exclude /proc --exclude /sys root@server:/ ./            
    
por 13.02.2014 / 13:43