Permissions

Linux 如何處理在不同機器上創建的文件的權限?

  • February 8, 2022

據我所知,文件在 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 上還有一個fooUID 為 101 的使用者。如果使用者foo將文件從機器 A 複製到機器 B(無論是誰該文件的原始所有者以及複製方法是什麼),它將在同一使用者下的機器 B 上創建,但其 UID 在機器 B - 101 上。同樣,這不適用於由 root 執行的副本。

引用自:https://unix.stackexchange.com/questions/689744