据我所知,文件在 Linux 上的所有权取决于文件所有者的 UID。
如果不同机器上的用户与服务器上的用户具有相同的 UID,然后文件被复制到服务器上,会发生什么情况?谁拥有该文件?
如果另一台机器上的用户的 UID与服务器上的任何用户都不相同,然后将文件复制到服务器,会发生什么情况?谁拥有该文件?
我创建了几个用户和一个组。然后复制粘贴:
$ sudo adduser --gecos "" --disabled-password --no-create-home user1
$ sudo adduser --gecos "" --disabled-password --no-create-home user2
$ sudo adduser --gecos "" --disabled-password --no-create-home user3
$ sudo adduser --gecos "" --disabled-password --no-create-home user4
$ sudo addgroup userstart
$ sudo gpasswd -M user1,user2,user3,user4 userstart
$ sudo chown :userstart /home/blueray/Desktop/Permissions
$ sudo runuser -u user1 -- cp /home/blueray/Desktop/Permissions/test.html /home/blueray/Desktop/Permissions/test-copy.html
$ ls -la /home/blueray/Desktop/Permissions
total 72
drwxrwxr-x 2 blueray userstart 4096 Feb 8 11:57 .
drwxr-xr-x 3 blueray blueray 4096 Feb 8 11:55 ..
-rw-r--r-- 1 user1 user1 31017 Feb 8 11:57 test-copy.html
-rw-rw-r-- 1 blueray blueray 31017 Feb 6 05:50 test.html
复制文件的用户似乎拥有该文件。总是这样吗?
一般来说,非特权用户无法创建与自己的 UID 不同所有权的文件,因此当他复制文件时,目标中的新文件将始终由运行 cp 命令的用户的 UID 拥有。
这仅适用于非特权用户(非root)复制文件的情况,无论他是从远程计算机还是从本地计算机复制文件,以及文件的原始所有者是谁.
如果某个用户将文件复制到远程机器上,该文件将属于该用户在远程机器上的 UID。例如,假设您
foo
在机器 A 上有一个用户的 UID 为 100,而在机器 B 上还有一个用户foo
的 UID 为 101。如果用户foo
将文件从机器 A 复制到机器 B(无论是谁该文件的原始所有者以及复制方法是什么),它将在同一用户下的机器 B 上创建,但其 UID 在机器 B - 101 上。同样,这不适用于由 root 运行的副本。