1. 程式人生 > >Linux學習總結(六)-su命令 sudo 命令 限制root遠程登錄

Linux學習總結(六)-su命令 sudo 命令 限制root遠程登錄

su - rest 一次 com 註冊 情況 保存配置文件 所有權 是把

root 用戶擁有至高無上的權利,那麽我們運維人員是不是直接在root用戶下處理所有問題呢?答案是否定的,權力越大,責任越大,人是會犯錯的,因此我們要在不影響我們的工作情況下,盡量限制我們的權力,以免誤操作引發災難

一 su 命令 ---賬戶之間的切換

普通用戶切root用戶或者普通用戶之間的切換都需要對方輸入對方賬戶登錄密碼,root用戶進普通用戶不需要密碼驗證,這也是權力的體現。
命令格式:

su username
su - username

如果不帶用戶名,默認root用戶
不帶 - 的切換是只是在自己家裏調用權力,環境變量沒有變化。
帶 - 直接進入到對方家裏,反客為主,使用權力, 當前用戶環境變量初始化為對方用戶環境變量 。請看下面例子

技術分享圖片

二 sudo ----獲取root權利執行命令

su 命令雖然讓普通用戶輕松切到root用戶下接管root用戶的工作,但是需要root用戶授權密碼,我們知道普通用於不止一個,因此root密碼多次下發,一旦不小心泄露,就很不安全。我們有沒有不長期下發root密碼的辦法,還能讓普通用戶幹活呢,當然有,sudo 就是來解決這個難題的

            sudo 用法 ----- sudo + 要執行的命令

sudo ----在自己賬戶下拿到root權力去幹活,每幹一次活需要驗證當前身份,也就是要輸入當前賬戶密碼,前提是該賬戶已經被事先授權。sudo與su的關系我可以這樣舉個例子, 假如你是宰相想行使皇帝的權力,su的辦法是跑到皇帝跟前索要到權力,su-的辦法是篡位自己當皇帝,sudo是皇帝給你發個金牌令箭,讓你行使權力。

技術分享圖片
看上面例子 ,我想借助sudo 來修改我自己test賬戶的密碼,我輸入自己密碼後提示 test 賬戶沒有在sudoers 這個文件裏,意思是需要在該文件裏註冊備案,才能獲取權力,下面我們修改配置文件,添加test賬戶

                        命令visudo---可以查看sudo配置文件

技術分享圖片
備註:一定要用visudo去打開文件,不要用vi,因為此文件特別重要,vi無法顯示語法錯誤,visudo可以顯示語法錯誤。中間括號的ALL表示授權的用戶,末尾的ALL表示授權的命令
在 root ALL=(ALL) ALL下一行加一行即可,我們再次嘗試修改密碼,請看結果:
技術分享圖片
提示我們先輸入自己賬戶密碼,然後就可以改密碼了

處於當前登錄狀態,該身份驗證只需要一次,你再次用sudo命令就不需要輸密碼了
下面我舉個案例,我們的需求是把Linux服務器設置成這個樣子:只允許使用普通賬戶登陸,而普通賬戶登錄後,可以不輸入密碼就能sudo切換到root賬戶。
編輯剛才的配置文件 /etc/sudoers 修改兩個地方
技術分享圖片
把sudo權力的下發組 wheel 這行前面的#刪掉 ,讓這行代碼執行,其次在文件尾行假如下面三行:

技術分享圖片
三行的意思是:第一行 給三個普通賬號設置一個組別名,讓權力按組下發。 第二行給/bin/su 取別名SU。第三行 免密碼登錄。
保存配置文件後,使用test, test1, lv 三個賬戶登陸Linux後,執行命令 sudo su - 切換到root賬戶,獲取root賬戶的所有權利,結果如下:
技術分享圖片
那麽最後一個問題,如何限制不讓root直接登錄呢,可以用用工具生成一個非常復雜的隨即字符串密碼,這樣自己也記不住了,那萬一要用呢,當然還有辦法,用kapss保存密碼工具,把密碼管理起來

總結:
sudo的工作過程如下:

  • 1 當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限
  • 2 確認用戶具有可執行sudo的權限後,讓用戶輸入用戶自己的密碼確認
  • 3 若密碼輸入成功,則開始執行sudo後續的命令
  • 4 root執行sudo時不需要輸入密碼(eudoers文件中有配置root ALL=(ALL) ALL這樣一條規則)
  • 5 若欲切換的身份與執行者的身份相同,也不需要輸入密碼

    三 限制ssh遠程登錄

    /etc/ssh/sshd_config為sshd服務的皮質文件,默認root賬戶可以通過ssh遠程登錄linux。要實現不允許登錄,修改配置文件即可
    在文件中查找到#PermitRootLogin yes,將yes該為no,保存退出,然後重啟sshd服

                    systemctl  restart sshd.service

Linux學習總結(六)-su命令 sudo 命令 限制root遠程登錄