Shell

如果文件是使用 sudo 命令創建的,那麼文件所有者是誰?

  • October 8, 2013

我使用我的使用者名登錄ravbholua

ravbholua@ravbholua-Aspire-5315:~ $ echo $ 登錄名 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)作為所有者。

接下來我使用 sudo 和echo命令創建 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

哦!樓主怎麼變了。不是我,而是根。為什麼會有這樣的變化echovim!令人驚訝的是,隨著命令的更改,已創建文件的所有者如何更改。

第二個範例在echo下執行sudo,但重定向發生在原始 shell 下。

sudo bash -c "echo > a4"

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 a3sudovim a3以 root 身份執行的範例。vim 以 root 身份執行,因此該文件歸 root 所有。

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