如果使用 sudo 指令建立文件,誰是文件擁有者?

如果使用 sudo 指令建立文件,誰是文件擁有者?

我使用我的用戶名登入ravbholua

ravbholua@ravbholua-Aspire-5315:~$ echo $LOGNAME ravbholua

我建立的文件名稱為a1

ravbholua@ravbholua-Aspire-5315:~$ echo>a1
ravbholua@ravbholua-Aspire-5315:~$ ll a1
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct  8 09:57 a1

正如所料,上述文件的ravbholua所有者是我 ()。

echo接下來我使用 sudo 和命令創建 a2 :

ravbholua@ravbholua-Aspire-5315:~$ sudo echo>a2
ravbholua@ravbholua-Aspire-5315:~$ ll a2
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct  8 09:57 a2

所有者只是我,即ravbholua

現在我再次使用 sudo 創建 a3 但使用vim命令:

ravbholua@ravbholua-Aspire-5315:~$ sudo vim a3
ravbholua@ravbholua-Aspire-5315:~$ ll a3
-rw-r--r-- 1 root root 10 Oct  8 09:57 a3

哦!怎麼現在主人變了。這不是我,而是root。為什麼和 會有這樣的echo變化vim!令人驚訝的是改變指令創建的文件的所有者如何更改。

答案1

第二個範例echo在 下運行sudo,但是重定向發生在原始外殼下。

sudo bash -c "echo > a4"

答案2

sudo只是一個命令。

所以對於你的第一個例子: sudo echo>a2

sudo是命令。雖然重定向與迴聲相抵觸,但這並不意味著任何事情。

例如: echo cat /etc/passwd > /tmp/foo 您不會在/tmp/foo 中取得/etc/passwd 的內容。你就會有cat /etc/passwd。 sudo 也不例外。 echo 部分只是 sudo 的參數。 sudo 確實使用它來執行操作,但 shell 不知道這一點。

這是 sudo 訪問與 root 訪問非常不同的方式之一。

sudo vim a3對於您使用sudovim a3作為 root運行的範例。而vim以root身分運行,因此檔案歸root所有。

相關內容