1. 程式人生 > >sudo命令用其他身份來執行命令,限制root遠端登入詳解

sudo命令用其他身份來執行命令,限制root遠端登入詳解

一,命令sudo

  1. 命令語法
    sudo(選項)(引數)

  2. 命令描述
    sudo命令用來以其他身份來執行命令,預設的身份為root。
    使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。

  3. 命令選項
    -b:在後臺執行指令;
    -H:將HOME環境變數設為新身份的HOME環境變數;
    -k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;
    -l:列出目前使用者可執行與無法執行的指令;
    -p:改變詢問密碼的提示符號;
    -s:執行指定的shell;
    -u<使用者>:以指定的使用者作為新的身份。若不加上此引數,則預設以root作為新的身份;
    -v:延長密碼有效期限5分鐘;

  4. 命令示例

配置sudo必須通過編輯/etc/sudoers檔案,而且只有超級使用者才可以修改它,還必須使用visudo編輯。之所以使用visudo有兩個原因,一是它能夠防止兩個使用者同時修改它;二是它也能進行有限的語法檢查。所以,即使只有你一個超級使用者,你也最好用visudo來檢查一下語法。

設定sudo方法

  1. 在命令列輸入 #visudo //visudo預設的是在vi裡開啟sudo配置檔案。
  2. 進入配置檔案大概在90列左右可以看到下面的命令(小技巧:在vi編輯器裡使用 set nu //檢視行數)
90 ## Allow root to run any commands anywhere   // 翻譯: 允許root使用者在任何地方執行所有的命令    
91
root ALL=(ALL) ALL 92 user1 ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat //自己編寫的

命令說明:

  1. 92列自己編寫的,這條命令的作用是:讓user使用者擁有sudo特權。

  2. 命令從左到右,第一段user1為一個使用者,指定讓哪個使用者有sudo特權;

  3. 第二段ALL=(ALL)比較難理解,左邊的ALL指的是所有的主機,右邊的ALL指的是獲取哪個使用者的身份,

  4. 第二段幾乎都不用配置;

  5. 第三段設定可以使用sudo的命令有哪些,這裡我選擇的是ls,mv,cat命令,注意這裡編輯的時候要寫絕對路徑。也可以寫ALL表示可以使用全部命令。也可以在第三段的最前面加上 #NOPASSWD: ,這樣在使用sudo的時候就不用輸入密碼了。

  6. 編輯完成之後,#wq儲存退出。

  7. 當你在visudo中編輯錯誤的時候wq後會提醒你例如:

visudo: >>>/etc/sudoers: syntax error 在行 92 附近 <<

此時我們有三種選擇:鍵入“e”是重新編輯,鍵入“x”是不儲存退出,鍵入“Q”是退出並儲存。如果真選擇Q,那麼sudo將不會再執行,直到錯誤被糾正。

上面步驟正常的情況下,切換到user1的使用者下,使用sudo命令# sudo /usr/bin/ls /root
此條命令的意思是 在user1的使用者下用sudo許可權ls檢視/root目錄,當然可以使用cat,mv命令。

二,限制root遠端登入

注: 該方法只適用於通過ssh遠端登入Linux的時候。

限制root遠端登入的方法

/etc/ssh/sshd_config為sshd服務的配置檔案,預設允許root賬戶通過ssh遠端登入Linux。要想不允許root使用者遠端登入到Linux,具體方法為: 修改配置檔案vi /etc/ssh/sshd_config,在檔案中查詢#PermitRootLogin yes並修改為PermitRootLogin no,即不允許root遠端登入。儲存配置檔案後,需要重啟sshd服務。

#systemctl restart sshd.service  //重啟sshd服務。

實戰

禁止root使用者遠端登入,只允許普通使用者登入。普通使用者如果想要得到root使用者的許可權,如下詳解

  • 思路: 在普通使用者下,想要得到root使用者的許可權,使用su命令時,沒有root的密碼是切換不到root使用者下的。這時候可以把su放到sudo命令列表裡,之後在普通使用者下使用命令 #sudo su -root 就能得到root使用者的許可權了。

實現步驟:

  • 在root使用者下 ,編輯visudo為使用者新增Alias
     16 ## User Aliases     
     17 ## These aren't often necessary, as you can use regular groups    
     18 ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname    
     19 ## rather than USERALIAS    
     20 # User_Alias ADMINS = jsmith, mikem    
     21 User_Alias AMINGS=user1  //手動新增的。為使用者新增Alias    
  • 設定規則
     90 ## Allow root to run any commands anywhere  
     91 root    ALL=(ALL)       ALL    
     92 user1   ALL=(ALL)       /usr/bin/ls, /usr/bin/mv, /usr/bin/cat          
     93 AMINGS  ALL=(ALL)       NOPASSWD: /usr/bin/su  //NOPASSWD代表執行/usr/bin/su的時候不需要輸入密碼。 
  • 儲存退出

  • 切換到user1使用者下,用sudo登入到root使用者下

[root@localhost ~]# su - user1   
上一次登入:三 111 17:03:48 CST 2017pts/0 上    
[user1@localhost ~]$ sudo su - root   
上一次登入:三 111 18:26:00 CST 2017pts/0 上   
[root@localhost ~]# whoami   //檢視當前使用者
root   

相關推薦

sudo命令其他身份執行命令限制root遠端登入

一,命令sudo 命令語法 sudo(選項)(引數) 命令描述 sudo命令用來以其他身份來執行命令,預設的身份為root。 使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。 命令選項 -b:

su命令sudo命令限制root遠端登入

一、su命令 1. su -     切換使用者 1. [[email protected] ~]# su - lx01     上一次登入:二 12月 26 13:29:04 CST 2017pts/0 上 2. [[email protected]

命令列的方式執行7z壓縮和解壓縮

我在研究怎樣使用7z,以及7z的極限壓縮(把檔案壓縮到最小size)。 從官網下載軟體安裝包。安裝完畢後,安裝目錄裡面有一個 7-zip.chm 幫助檔案,可以瞭解7z的詳細的使用說明。 用命令列來執行7z的極限壓縮,就是如下的命令: C:\01_MyApp\7-Zip

crontab 中的指定特定的使用者身份執行相關的命令或者指令碼

設定cron有兩種方法 ( 當啟動linux時,它執行為一個後臺程序。它每分鐘檢查一次相應的配置檔案來了解是否有事件需要得到執行。 有兩組cron配置檔案。一組由一個全域性配置檔案(/etc/crontab)來控制,另一組基於個別使用者使用crontab命令所建立的配置

linux 下如何通過ssh到其他機器然後執行命令

在Linux下經常寫shell指令碼,當然少不了需要在各臺機器上執行命令了。 假如現在我要在10.2.226.201上寫shell並且執行這個shell指令碼。可是這個指令碼需要在10.2.226.202和10.2.226.203上執行一下命令。如何實現呢? 摸索了幾種方法

怎樣批處理執行多個exe文件

asc pri line views bat文件 tro ext sta each 怎樣用批處理來運行多個exe文件 @echo off start *****.exe start *****.exe start *****.exe star

usermod命令,戶密碼管理 ,mkpasswd命令

linuxusermod命令用戶密碼管理mkpasswd命令usermod命令更改用戶屬性usermod -u 111 username 改UIDusermod -g 123 username 改GIDusermod -d /home/abcde username 指定家目錄usermod -s /sbi

usermod命令 戶密碼管理 mkpasswd命令

ado /etc/ 被鎖 特殊 用戶 新的 usermod postfix 兩個感嘆號 usermod命令 [root@lizhipeng01 ~]# id lizhipenguid=1000(lizhipeng) gid=1000(lizhipeng) groups=10

usermod命令戶密碼管理mkpasswd命令

linux3.4usermod[root@MOMOCO-02 ~]# tail -n5 /etc/passwd【更改用戶uid】postfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/

SharePoint:如何根據身份自動控制Portal的Logo顯示

func alt 企業 ava 統一 分享 希望 分享圖片 nag 隨著智能化辦公的啟動,很多企業都邁向了數字化轉型的行列,由於越來越多大企業客戶希望有統一的Portal來做企業交流和協作的統一窗口,那麽就為SharePoint管理員帶來了普遍困擾:用戶登錄Portal時,

hadoop streaming 執行mapreduce的指令碼

2013-02-01 周海漢/文 2013.2.1 http://abloz.com tom white的《hadoop the_definitive_guide 3nd edition》附錄C裡面講到用streaming

全網最詳細的一個超級好命令列工具【Cmder】的下載與安裝(圖文

    不多說,直接上乾貨!         下載的時候,有兩個版本,分別是mini與full版;唯一的差別在於有沒有內建msysgit工具,這是Git for Windows的標準配備;全安裝版 cmder 自帶了 msysgit, 壓縮包 23M, 除了 git 本身這個命令之外, 裡面

adb shell 命令獲取手機中的執行資源記憶體CPUdump資訊等等

剛剛開始寫,不會格式,不弄標題 僅僅記錄給自己看看 1,在工作中遇到的關於獲取android 手機系統的命令和資源 關於ROM的【只讀儲存,表示系統的佔用空間和使用情況,使用者無法直接訪問的,跟/storage在同一儲存塊的不同分割槽裡】 System Sizeadb s

Linux使用scp命令進行檔案遠端拷貝

前言 scp是 secure copy的縮寫, scp是Linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。Linux的scp命令可以在Linux伺服器之間複製檔案和目錄。 使用語法: scp  [引數] [源路徑] @IP:/目標路徑 scp 引數如下: -1: 強制sc

shell: 檔案顯示命令cat、more、less、tail、touch、od

cat命令 cat命令連線檔案並列印到標準輸出裝置上。cat經常用來顯示檔案的內容,類似於下的TYPE命令。 一般格式:cat [選項] 檔案 說明:該命令有兩項功能,其一是用來顯示檔案的內容,它依次讀取由引數file所 指明的檔案,將它們的內容輸出到標準輸出上;其二是連線

ElasticSearch叢集狀態檢視命令大全 && 刨根問底 | Elasticsearch 5.X叢集多節點角色配置深入

Elasticsearch中資訊很多,同時ES也有很多資訊檢視命令,可以幫助開發者快速查詢Elasticsearch的相關資訊。 _cat $ curl localhost:9200/_cat =^.^= /_cat/allocation /_c

oracle: 淺談orapwd命令及解決遠端登入ORA-01031: insufficient privileges問題

1、先看下命令說明:orapwd Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

PHP實現執行定時任務的幾種思路

編輯 exists sched ebs conn 多系統 環境 提高效率 pac HP本身是沒有定時功能的,PHP也不能多線程。PHP的定時任務功能必須通過和其他工具結合才能實現,例如WordPress內置了wp-

su、sudo限制root遠程登錄

改變 人的 oot 絕對路徑 是我 登錄 tmp onf 權限 su:切換用戶的命令,在root用戶下,可以用這個命令來切換。[root@localhost ~]# su - aming上一次登錄:日 1月 21 20:36:34 CST 2018pts/0 上[aming

LINUX 6——安裝samba【匿名戶】訪問文件共享傳輸服務(新手

用戶訪問 密碼 water 修改配置 RoCE ima ngs 軟件包 末行模式 LINUX 6——安裝samba匿名用戶訪問文件共享傳輸服務 ----------------------------------------安裝環境---------------------