据我所知,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
复制该文件的用户似乎拥有该文件。总是这样吗?
答案1
一般来说,非特权用户不能创建与自己的UID不同的所有权的文件,因此当他复制文件时,目标中的新文件将总是由运行 cp 命令的用户的 UID 拥有。
这只适用于非特权用户(非root)复制文件的情况,无论他是从远程计算机还是从本地计算机复制文件,以及文件的原始所有者是谁,都没有关系。
如果某个用户将文件复制到远程机器,该文件将属于远程计算机上该用户的 UID。例如,假设您foo
在机器 A 上有一个 UID 100 的用户,在机器 B 上也有一个用户foo
,但 UID 101。如果用户foo
将文件从机器 A 复制到机器 B(并且谁是机器 B 并不重要)文件的原始所有者以及复制的方法是什么),它将在计算机 B 上的同一用户下创建,但其 UID 在计算机 B - 101 上。同样,这不适用于由 root 运行的副本。