sudo: cd: command not found


事件起因


今天在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 用戶 
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM