2016-05-05 89 views
-1

簡單的問題:我有一個用戶在我的系統上稱爲「用戶」。此用戶具有sudo權限。爲什麼我不能瀏覽到sudoer.d目錄呢?不能更改爲sudoers.d目錄

是因爲cd是內置命令嗎?

[[email protected] etc]$ ls -al | grep sudoers.d 
drwxr-x---. 2 root root 4096 Apr 4 18:09 sudoers.d 
[[email protected] etc]$ sudo cd sudoers.d 
[[email protected] etc]$ pwd 
/etc 
[[email protected] etc]$ sudo ls -la sudoers.d/ 
total 12 
drwxr-x---. 2 root root 4096 Apr 4 18:09 . 
drwxr-xr-x. 79 root root 4096 May 5 05:20 .. 
-r--r-----. 1 root root 33 Apr 4 18:09 vagrant 
[[email protected] etc]$ sudo vim sudoers.d/vagrant 
[[email protected] etc]$ 

非常感謝。

+0

你需要'+ x'權限'cd'到一個目錄... – anishsane

+0

'須藤cd'是毫無意義的。 'cd'是shell內建的。 'sudo'是一個外部命令。 – anishsane

+1

當您嘗試sudo cd時,您應該會收到錯誤,因爲它是內置的... – 123

回答

2

發生這種情況是因爲sudo只是執行您使用提升的權限傳遞給它的命令可執行文件,並轉發剩餘的參數。由於cd是shell內置的,sudo不會找到要執行的文件,這會導致錯誤。

如果您希望與提升的權限執行交互shell,使用sudo su

+1

'你的cd命令改變了這個子shell的工作目錄,不,它不是 – 123

+1

真,更新回答 –

+0

@GézaTörök:「sudo找不到要執行的文件,這會導致錯誤。 當我做「sudo cd sudoers.d」時,我沒有收到任何錯誤,如上所示。 – miticoluis

0

sudo打開一個新的shell。該shell更改其工作目錄。然後它退出。原始shell的工作目錄從不改變,也不會改變。

+0

'這個shell改變了它的工作目錄.'不,除非出於某種奇怪的原因,你沒有使用內置的cd。 – 123

+0

@ 123:至少在我的系統中,bash包含與某些內部命令(包括「cd」)相同名稱的外部二進制文件。不管做什麼......都沒有檢查過。 –

+0

你使用什麼發行版? – 123