我按百度的sudo passwd root就一直更改密碼,但是輸了su然後輸密碼就切換了,搞不懂為什麼?


就據我2019年5月20日看到的問題來回答


下面開始一個一個說:

(首先聲明,在每行命令第一個出現的$或#字元不是命令的一部分,而是Shell的提示符,$表示當前是一般用戶,#表示當前是root用戶,如果要在自己的電腦上試的話,去掉$或#後面的命令才是要輸入的命令

$ sudo passwd root

上面這行命令的意思是作為sudoer修改root用戶的密碼


$ sudo command

上面這行命令的意思是作為sudoer以root的身份執行command,root身份僅在這次運行該command命令時有效,此條command命令之外的其他命令和此條command結束之後 ( 不包括由此條command調用的程序 ) 的其他命令將會恢復為原來的用戶執行


$ su username

上面這行命令的意思是切換到username用戶,切換之後計算機將認為坐在終端前的用戶換人了,所以類似一個重新登陸為其他用戶的過程(不同之處在於保留了之前的用戶登陸狀態),所以你會看到執行su username之後工作目錄變了,同時有可能會看到使用的shell變了,在主動 exitlogout前將一直以username的身份執行這期間的所有命令 ,exitlogout之後你將回到原來的用戶


$ passwd username ******

( 註:******代指密碼 )

上面這行命令的意思是將username的密碼改為******

  1. passwd yourself 就是更改自己的密碼,這顯然不需要什麼特殊許可權,可以直接執行,所以你可以沒事改著玩,當然哪天改忘了登不進計算機了就別來找我了;
  2. 但是,當你passwd other-user的時候,意味著你要改變別的用戶的密碼,這顯然是不可以的;
  3. 雖然改變別人的密碼理論上不可行,但是root用戶的特徵就是猥瑣愈猥:

這張照片非常典型,右一為真正的root用戶,左一為日常使用root而死活不改的用戶

4. 所以如果把自己的身份切換成root就可以做任何愛做的事了;

5. 因為改別人密碼這種下流的事 [公式] 任何愛做的事,那麼把自己切換成root當然可以切換別人密碼了。那麼怎麼把自己切換成root來執行一條命令呢?sudo passwd other-user *** (***可以是隨機生成的一堆不知所云的數字),你值得擁有;

6. 當然還有另一個辦法就是su root然後輸入root的密碼後執行 passwd other-ueser ***,但是用這個辦法如果忘了及時退出就會被運維管理員發現,然後就會被運維管理員追著用菜刀砍,所以如果只是執行一條命令的話使用sudo臨時切換一下就可以了;同理你也可以sudo su root,這樣只需要先輸入自己的密碼啟用sudoer許可權,然後以root的身份切換到root(我換我自己),就可以猥瑣欲猥了 ;


總結一下,

$ sudo command

表示一個sudoer臨時以root的身份執行一條叫做command的命令

$ su root
# command

表示先切換到root並不急著退出,然後以root來執行command命令

$ passwd

只是一個單純的改密碼程序,什麼都不加就是改自己的,加一個名字就是改那個名字的人的密碼

至於什麼是sudoer,可以自己先找找,順帶思考一下為什麼要添加sudoer這麼一個看起來「麻煩」的系統


不知道題主百度出來的是哪裡的教程,居然教人用sudo passwd root切換用戶,( root內心:我也很無奈啊,他把我密碼改來改去到底要幹什麼?)

而且這篇教程居然是是教初學者切換到root這種危險的用戶,一般情況下root用戶都是不使用的,甚至有的發行版的root用戶密碼是隨機生成的亂碼而且根本不提供,也就是說基本上是永久封存了root用戶(當然其實想用這個用戶很容易,但是發行版方的態度就是告訴你不要用),所以我很懷疑這誰寫的教程,到底想幹什麼,炸電腦玩?

如果是初學的話可以去查Wiki,搜索「發行版名稱+Wiki」有驚喜。不知道學什麼的話請抱一個目的學,給自己定一個任務,比如寫一段代碼把結果輸出到標準輸出,再用終端處理一下保存到文件,這個過程中與任務有關的資料就去找,與任務無關的內容先不要管(比如明明只是日常使用卻非要切換到root)


sudo是臨時執行某一條需要root許可權的指令,這條指令的執行者還是當前用戶本身,只是許可權上類似於擁有root許可權(實際上,某一個用戶通過sudo可以執行哪些指令也是在一個配置文件里(/etc/sudoers)配置的,並不是真的具有root的所有許可權,有很多是即使sudo也執行不了的(可能在那個配置文件里配成ALL就可以執行所有root才能執行的指令?))。而su是真正的切換用戶,將當前用戶切換到su指定的用戶(不指定的話默認為root),此時的角色是完全就是這個用戶,和直接通過這個用戶登錄效果是一樣的,如果退出新用戶可以使用logout或者exit或者ctrl+d。

對了,還有,sudo因為執行者還是當前用戶,所以輸入的密碼還是當前用戶的,sudo只是類似於一個提權操作。而su是切換新用戶,輸入的當然就是新用戶的密碼了。


passwd {user} 是修改用戶的密碼.

su - {user} 是切換用戶,su 默認切換的是root.

我想你大概想問的是這個。


百度真的害人不淺啊。。。

sudo passwd root 相當於是用root許可權改別人的密碼,相當醜陋

正確的做法應該是 sudo su,然後再 passwd root


看了半天才看懂你要說什麼,你是要切換為root吧。

切換為root直接:

$ su -

不過像常用的如ubuntu等發行版,在安裝時並未設置root密碼,進入桌面後,你只擁有一個普通用戶,不過這個普通用戶擁有sudo許可權而已。

使用sudo臨時許可權,使用普通用戶密碼可以直接切換為root:

$ sudo su -

進入root後使用passwd可以重置root密碼,當然也可以以普通用戶的身份使用sudo直接修改root密碼:

$ sudo passwd root

這個就是你提到的「一直更改密碼」什麼的,是需要輸入三次密碼的。

第一次是普通用戶的密碼,第二第三次是你重設的root密碼。


建議你先看看鳥哥私房菜,了解shell和kernal之間的關係和bash常見命令,有助於你比較好的入門,順便說一下passwd後接一個系統賬戶名稱,表示要修改它的登錄密碼。


建議找一本靠譜的書系統地學習,按照題主的目前的方法從百度上學,只怕這類問題會越來越多。


推薦閱讀:
相关文章