我和许多其他人都可以访问 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。