這看起來似乎有點奇怪,但在這裏我可以看出來。在不需要sudo的情況下在我的shell腳本中創建文件
我正在編寫一個shell腳本,它構成一個文件系統,該文件系統將被壓縮回檔案中,並且它需要一些文件被root用戶擁有。這整個事情將很快自動化,但現在這是一個問題,因爲如果我使用sudo,我需要輸入密碼。
由於文件是在我自己的主目錄下創建的,我可以完全訪問它,所以我想也許我可以將它們的所有權更改爲root用戶。那可能嗎?
如果我通常嘗試,我會得到「操作不允許」。也許有另一種選擇?
這看起來似乎有點奇怪,但在這裏我可以看出來。在不需要sudo的情況下在我的shell腳本中創建文件
我正在編寫一個shell腳本,它構成一個文件系統,該文件系統將被壓縮回檔案中,並且它需要一些文件被root用戶擁有。這整個事情將很快自動化,但現在這是一個問題,因爲如果我使用sudo,我需要輸入密碼。
由於文件是在我自己的主目錄下創建的,我可以完全訪問它,所以我想也許我可以將它們的所有權更改爲root用戶。那可能嗎?
如果我通常嘗試,我會得到「操作不允許」。也許有另一種選擇?
您可以使用fakeroot來做你想做的事。這是一個庫,它使程序認爲它們以root用戶身份運行,當它們不在。 IIRC,dpkg
使用它來允許非root用戶構建.deb
包含根擁有文件的軟件包。
看看這個shell腳本:
#!/bin/bash
mkdir image
touch image/user-owned
touch image/root-owned
chown renato.renato image/user-owned
chown root.root image/root-owned
tar cf image.tar image
通常情況下,我只能夠創建這個tar歸檔的根。不過,如果我使用fakeroot的:
$ fakeroot ./create-image.sh
$ tar tvf image.tar
drwxr-xr-x root/root 0 2014-04-09 01:09 image/
-rw-r--r-- root/root 0 2014-04-09 01:09 image/root-owned
-rw-r--r-- renato/renato 0 2014-04-09 01:09 image/user-owned
但是,磁盤上的文件仍是用戶自備,所以沒有安全隱患的位置:
$ ls -l image/
total 0
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 root-owned
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 user-owned
啊,現在你正在談點什麼...我很久以前就記得這個命令。這就是爲什麼我問這個問題,因爲我認爲這樣的工具存在。 – Matt
你可以用'su'或'sudo',但這是關於它的結束。您不能以普通用戶身份創建屬於其他人的文件,至少所有的「root」。您最好的選擇可能是修改歸檔工具以更改歸檔文件中記錄的權限。 –
你是root用戶還是sudoers? – MLSC
hmm。也許我可以用schroot來做 – Matt