linux系統(centos)下su和sudo命令的區別


linux系統(centos)下su和sudo命令的區別

區別

我們在日常使用過程中,這2個命令很多時候能達到相同的效果,對細節區別十分模糊,這里進行簡單的解釋和區分。希望大家能夠正確使用這2個命令,使用過程中,也知其原因。

  • su命令:用於切換當前用戶身份到其他用戶身份,變更時須輸入所要變更的用戶帳號與密碼。
  • sudo命令:臨時用來以其他用戶的身份來執行命令。普通用戶需要在/etc/sudoer文件里面配置才能使用sudo命令。

su命令基本使用

基本參數:

-c<指令>或--command=<指令>:執行完指定的指令后,即恢復原來的身份;
-f或——fast:適用於csh與tsch,使shell不用去讀取啟動文件;
-l或——login:改變身份時,也同時變更工作目錄,以及HOME,SHELL,USER,logname。此外,也會變更PATH變量;
-m,-p或--preserve-environment:變更身份時,不要變更環境變量;
-s<shell>或--shell=<shell>:指定要執行的shell;
--help:顯示幫助;
--version;顯示版本信息。

常見的使用場景:

  1. 切換用戶。普通用戶登錄后,不加任何參數,默認是切換到root用戶。

    su  #默認切換到其他用戶,需要輸入其他用戶的密碼。
    
    su zdsoft #切換到zdsoft用戶,不會加載zdsoft用戶的個人環境配置文件,不會進入zdsoft用戶的home目錄。
              #root用戶切換到其他用戶不需要輸入密碼
    
    su - zdsoft #切換到zdsoft用戶,加載zdsoft用戶個人環境配置文件,並進入到zdsoft的home目錄。
    
  2. 臨時切換,執行某命令后,立馬退出來。

    su root -c 'ls -l'  #切換到root命令,執行ls -l命令后退回來 
    

sudo命令基本使用

備注:sudo明確臨時切換身份來執行命令,可以在/etc/sudoer文件里面配置免密。在生產環境中,系統管理員管理系統時,建議不要使用root命令直接ssh遠程登錄,也不要直接使用root操作系統變更。而是使用一個運維專用的普通賬號。絕大情況下使用這個普通賬號進行系統管理(部署服務,上線應用,查看日志等等)。特殊情況下需要root用戶,那就應該為這個普通賬號配置sudo權限。

/etc/sudoer文件里面,也可以配置,限制某用戶用sudo時,只能執行特定的幾個命令。

基本參數:

-b:在后台執行指令;
-h:顯示幫助;
-H:將HOME環境變量設為新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鍾;
-V :顯示版本信息。

常用使用場景:

  1. 使用某用戶的名義執行命令。

    sudo -u zdsoft touch test.txt #使用zdsoft用戶身份執行touch命令。
    			                        #若不加上此參數,則預設以root作為新的身份;
    
  2. 永久切換到root下面,這種情況就和su很像。

    sudo -i #切換root用戶,並不退出來。
    				#-i就是登錄的參數
    
  3. 提權

sudo su #該命令和sudo -i能達到一樣的效果。但是sudo su需要當前登錄用戶有sudo權限,輸入的密碼為當前用戶密碼。
sudo -i #


免責聲明!

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



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