Permissions
Linux 如何處理在不同機器上創建的文件的權限?
據我所知,文件在 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 執行的副本。