Como posso buscar metadados de arquivos na pasta montada cifs?

0

Em nossa empresa, temos uma pasta compartilhada do Windows. Se eu acessá-lo a partir do Windows, posso abrir o menu Propriedades de um arquivo e encontrar seus metadados : quem o criou, os últimos tempos de acesso e assim por diante.

No linux eu tenho esta pasta montada com mount -t cifs . Eu quero escrever um script que pegue algumas estatísticas sobre o uso da pasta.

Existe alguma maneira de acessar esses metadados do linux?

UPD: não posso usar getfacl , stat ou ls -la para minha tarefa, porque todos eles me fornecem apenas o nome de usuário linux local sob o qual esta pasta está montada, bot não nomes do servidor de domínio do Windows.

UPD2: montei o compartilhamento com um comando: sudo mount -t cifs //data/Shared /mnt/Shared -o uid=1000,gid=1000,user=<my_windows_account_name>,dom=<my_domain>,pass=<my_windows_password> , onde uid = 1000 e gid = 1000 são uid e gid da minha conta linux.

    
por krvkir 05.10.2018 / 18:44

2 respostas

1

Você está usando

mount -t cifs //data/Shared /mnt/Shared -o uid=1000,gid=1000,user=<my_windows_account_name>,dom=<my_domain>,pass=

O que isso informa ao sistema local é duplo:

  1. Autenticar para o servidor remoto com as credenciais especificadas como tupla {usuário, domínio, senha}
  2. Fake todos os acessos de / para o compartilhamento remoto como se fossem da conta de usuário com o UID 1000 e o GID 1000

Você precisa continuar usando o número 1, embora eu recomende strongmente que você mova as credenciais do usuário para um arquivo seguro que possa ser lido apenas pelo usuário root e pelo usuário local que representa as credenciais da conta. Veja man mount.cifs para os detalhes

# As root...
cat >/usr/local/etc/Shared.cifs <<'X'
username=my_windows_account_name
domain=my_domain
password=my_windows_password
X
chmod u=rw,go= /usr/local/etc/Shared.cifs
chown my_unix_account_name:root /usr/local/etc/Shared.cifs

# Then mount becomes
mount -t cifs //data/Shared /mnt/Shared -o credentials=/usr/local/etc/Share.cifs,noperm

No entanto, você precisa parar de usar # 2 e, em vez disso, ter seu cliente local entendendo os nomes usados no contexto do AD. Isso é demais para aqui, mas os essenciais são estes

  • Instale realmd e as samba dependencies
  • Verifique se os servidores DNS são os servidores de domínio do AD (ou equivalentes locais)
  • Execute realm discover para encontrar e verificar se você consegue ver o domínio AD correto
  • Executar realm join {domain} para ingressar no domínio

Provavelmente, você desejará agora negar logins de outros usuários do AD para o sistema local. Os comandos a serem revisados são variações de realm deny -all e realm permit --groups 'domain admins' , juntamente com AllowUsers e AllowGroups in /etc/ssh/sshd_config . Se você não for um administrador de domínio, precisará alterá-lo de acordo. As páginas do manual são muito boas.

Você pode testar se a união foi bem-sucedida com comandos como esses

net ads testjoin
getent password my_windows_account_name    # As above
getent group "domain admins"               # An example group that will exist
    
por 08.10.2018 / 14:48
0

O comando stat pode apresentar registros de data e hora de arquivos / diretórios, propriedade e alguns outros metadados de uma maneira que seja passível de script: consulte man 1 stat para obter mais informações.

Para permissões, especialmente para ACLs, getfacl é o comando que você precisa. Para diversos outros atributos, há getfattr .

Se você quiser saber quantos dados estão em um diretório específico, incluindo todos os seus subdiretórios, você precisará do comando du .

    
por 05.10.2018 / 19:45