sudo: cd: command not found
阿新 • • 發佈:2017-10-08
中文 交互式 解決辦法 net num and shell 什麽 man
事件起因
今天在aws ubutun上忽然發現的一個問題,執行sudo cd
時出現
sudo: cd: command not found
原因
shell
shell是一個命令解析器
所謂shell是一個交互式的應用程序。
shell執行外部命令的 時候,是通過fork/exec叉一個子進程,然後執行這個程序。
sudo
sudo 是一種程序,用於提升用戶的權限,在linux中輸入sudo就是調用sudo這個程序提升權限
sudo的意思是,以別人的權限叉起一個進程,並運行程序。
cd
cd是shell的內部命令。
也就是說,是直接由shell運行的,不叉子進程。
你在當前進程裏當然不能提升進程的權限(其實也可以,不過得編程的時候寫到代碼裏,然後再編譯,而我們的 shell沒有這個功能,否則豈不是太危險了?黑客.sh
解決辦法
但是有一些目錄我們普通用戶是沒有權限進入該目錄的,比如/root
對目錄來說
x
可執行權限就是用戶擁有進入該目錄、復制其中文件的權限
那麽我們該怎麽辦呢,
一個有限的辦法就是為該目錄增加當前用戶的可執行權限,但是對我們來說這樣並不是很安全
那麽還有沒有解決辦法呢,當然有,Linux下沒有什麽問題是解決不了的,那就是獲取root權限或者文件夾所屬用戶的權限
使用su
命令即可獲取用戶的權限,但是root權限怎麽獲取呢,sudo已經不行了
那就是sudo su
或者sudo -sH
默認缺省為獲取root
用戶
sudo: cd: command not found