在 SMB 挂载的 NAS 存储中查找文件所有者

在 SMB 挂载的 NAS 存储中查找文件所有者

我和许多其他人都可以访问 NAS 存储服务器。每个人都有自己的 NAS 登录凭据,该凭据使用 SMB 安装。

现在,假设我的 Ubuntu PC 的用户名是“abc”,NAS 登录的用户名是“xyz”。从终端cd到 NAS 存储安装后,我决定检查文件列表并找出谁是所有者。

-rwx------ 1 abc abc 350 Dec  8 15:15 1.lst
drwx------ 1 abc abc   0 Dec 11 15:53 2

现在,我尝试在另一台计算机上使用用户名“def”执行相同的步骤。这是我得到的结果:

-rwx------ 1 def def 350 Dec  8 15:15 1.lst
drwx------ 1 def def   0 Dec 11 15:53 2

为什么显示的用户名是查看文件的人的用户名?我希望它显示创建文件的用户的姓名。如果我做错了,请帮助我找到网络共享硬盘中每个文件和文件夹的真正所有者。

答案1

您必须启用 unix 扩展才能查看文件的原始所有者。编辑服务器的 SMB 配置文件:

sudo nano /etc/samba/smb.conf

并将其添加到您的全局规则中:

unix extensions = yes

但请注意:虽然没有提到在文档中,这仅在强制使用 SMB1(NT1)时才有效,因此您还需要添加以下内容:

server min protocol = NT1

如果您安装了服务器,则需要强制使用 SMB1,如下所示:

sudo mkdir -p /mnt/smbserver/sharename
sudo mount -t cifs -o username=john,vers=1.0 //servername/sharename /mnt/smbserver/sharename

之后您将看到该文件的原始 Linux 所有者。

但也请注意:它仅传输 uid,而不传输用户的名称。如果文件所有者的 uid 为 1234,而您的 linux 客户端没有任何具有此 uid 的用户,则它将仅显示数字:

client$ ls -la /mnt/smbserver/sharename
total 4
drwxrwxrwx+ 1 root root     0 Sep 11 20:22 .
drwxr-xr-x  4 root root  4096 Nov 13 18:05 ..
drwxrwx---+ 1 1234 users    0 Okt 31 21:20 paper
drwxrwx---+ 1 1234 users    0 Okt 30 09:43 vanilla

如果你将客户端的用户名“test”链接到 uid 1234,它将显示“test”作为文件所有者:

client$ ls -la /mnt/smbserver/sharename
total 4
drwxrwxrwx+ 1 root root     0 Sep 11 20:22 .
drwxr-xr-x  4 root root  4096 Nov 13 18:05 ..
drwxrwx---+ 1 test users    0 Okt 31 21:20 paper
drwxrwx---+ 1 test users    0 Okt 30 09:43 vanilla

尽管服务器上的用户名可能有所不同:

smbserver$ ls -la /home/john/sharename
total 12
drwxrwxrwx 1 root root    34 Sep 11 22:22 ./
drwxrwxrwx 1 john users 4096 Nov 10 19:13 ../
drwxrwx--- 1 john users 4096 Nov 13 19:23 paper/
drwxrwx--- 1 john users 4096 Oct 30 11:43 vanilla/

因此最好的做法是在所有系统上具有相同的用户名和 uid。

相关内容