su(switch user)命令的作用:切換用戶,一般是普通用戶與root用戶之間的切換。例:>su #輸入su命令Password: #提示輸入密碼 相關命令:su - 與sudo 一、Linux下su命令與su - 命令有什麼區別? su是切換到其他用戶,但是不切換環境變數(比如說那些expo ...
su(switch user)命令的作用:切換用戶,一般是普通用戶與root用戶之間的切換。
例:
>su #輸入su命令
Password: #提示輸入密碼
相關命令:su - 與sudo
一、Linux下su命令與su - 命令有什麼區別?
su是切換到其他用戶,但是不切換環境變數(比如說那些export命令查看一下,就知道兩個命令的區別了)
su - 是完整的切換到一個用戶環境
所以建議大家切換用戶的時候,儘量使用 su - root,否則可能發現某些命令執行不了
從超級用戶root變成普通用戶,輸入exit命令即可
二、Linux下su和sudo的區別
由於su(或是su - root)切換到超級許可權用戶root後,許可權無限制,可以使用root的所有許可權
如果多個普通用戶同時切換到root用戶對系統進行操作,可能會出現不同人對同一個文件進行不同操作,那很不安全
最好是有針對性的放開許可權,明確哪些工作是由哪個用戶進行操作,並且約定其使用哪個命令來完成與其相關的工作,此時sudo命令可以解決該問題
通過sudo,我們能把某些root賬號擁有的許可權針對性的賦權給普通用戶,並且不需要普通用戶知道root密碼
所以sudo 相對於許可權無限制性的su來說,還是比較安全的,因此sudo被稱為受限制的su或授權許可的su
sudo 執行命令的流程是當前用戶切換到root(或其它指定切換到的用戶),然後以root(或其它指定的切換到的用戶)身份執行命令
執行完成後,直接退回到當前用戶。而這些的前提是要通過修改配置文件/etc/sudoers來進行授權
三、配置sudo必須用超級用戶使用visudo編輯/etc/sudoers文件,之所以用visudo編輯有兩個原因:
一是它能夠防止兩個用戶同時修改它;二是它也能進行有限的語法檢查
若在sudoers文件中寫入以下一行:
tomcat ALL=(ALL) ALL
第一個ALL是指網路中的主機,我們後面把它改成了主機名,它指明tomcat可以在此主機上執行後面的命令;(可以通過hostname命令來查看本臺linux機器的主機名)
第二個括弧里的ALL是指目標用戶,也就是以誰的身份去執行命令;
最後一個ALL指命令名。
寫入以上語句後,表示tomcat和root擁有一樣的許可權,什麼命令都可以使用,這樣子的話,對於系統來說太不安全了,
讓tomcat用戶可以執行某些命令(例:ifconfig和ls),在sudoers文件中寫入以下一行:
tomcat hostname= /sbin/ifconfig, /bin/ls
在crt上輸入命令查看:
[tomcat@localhost ~]$ sudo ls /root
PassWord:
此時的問題是:登錄後,每次使用sudo還要輸入密碼。若是使用sudo命令時不想輸入密碼,這樣修改配置文件:
tomcat localhost=NOPASSWD: /bin/cat, /bin/ls
再次用sudo cat或是sudo ls命令時,就不會提示輸入密碼了
引用自天道酬勤的博客