天天看點

day13-權限管理su/sudo及限制root使用者登入

3.7:su指令:(切換後無時間限制)

1.1、su指令是來切換使用者:變更為其他使用者的身份:變更時需要輸入使用者名及密碼:

文法: su  [ - ]  使用者名

“-”加上後:表示同時切換到使用者的環境變量下,如下:

“-”不加:不切換使用者的環境的變量:半切換:

[root@localhost ~]# su yuanhh        #半切換到yuanhh使用者:

[yuanhh@localhost root]$ pwd         #檢視目前使用者的所屬目錄還是root.

/root

[yuanhh@localhost root]$ su root      #當普通使用者切換至root使用者,則需要輸入密碼:

密碼:

[root@localhost ~]# pwd              #切換到root後。

[root@localhost ~]# su - yuanhh      #全切換到yuanhh使用者:

上一次登入:四 11月  2 01:10:33 CST 2017pts/0 上

[yuanhh@localhost ~]$ pwd           #則使用者的所屬目錄則變成了使用者的家目錄。

/home/yuanhh

注:普通使用者是無法檢視root使用者的檔案:

1.2、在root使用者登入的時候,以某個使用者的身份去執行某一條指令,并且不登入使用者:

[root@localhost ~]# su - -c "touch /tmp/zzz" yuanhh #以yuanhh使用者的身份來執行。

[root@localhost ~]# ls -ld /tmp/zzz    #用ls指令來檢視:則屬于yuanhh這個使用者:

-rw-rw-r-- 1 yuanhh yuanhh 0 11月  2 01:22 /tmp/zzz

注:su - yuanhh -c "ls /tmp/"

1.3、在建立使用者的同時,未建立使用者的家目錄,則需要手動建立家目錄,并且拷貝環境變量:

[root@localhost ~]# useradd -M user3    #建立使用者user3,不建立使用者的家目錄:

[root@localhost ~]# su - user3          #切換到使用者user3下:

su: 警告:無法更改到 /home/user3 目錄: 沒有那個檔案或目錄  #提示家目錄不存在,無法切換:

[root@localhost~]#mkdir /home/user3;chown user3:user3 /home/user3  #建立家目錄并更改權限,很重要,否則無法使用:

[root@localhost ~]# ls -a /etc/skel/.bash  #此目錄的.bash開頭的為系統預設的環境變量:

.bash_logout   .bash_profile  .bashrc

[root@localhost ~]# cp /etc/skel/.bash* /home/user3   #拷貝至家目錄yuanhh目錄下:

[root@localhost ~]# chown -R user3:user3 /home/user3  #更改user3家目錄下檔案級聯:

[root@localhost ~]# su - user3         #切換user3.

[user3@localhost~]$ pwd                #所屬組正常:

/home/user3

3.8:sudo指令:  隻有超級使用者root可以使用:(切換後有時間限制)

1.1:文法:su  [ 選項 ] 參數

選項如下:

-b:在背景執行指令;

-h:顯示幫助;

-H:将HOME環境變量設為新身份的HOME環境變量;

-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;

-l:列出目前使用者可執行與無法執行的指令;

-p:改變詢問密碼的提示符号;

-s:執行指定的shell;

-u<使用者>:以指定的使用者作為新的身份。若不加上此參數,則預設以root作為新的身份;

-v:延長密碼有效期限5分鐘;

-V :顯示版本資訊

1.2:sudo指令:讓其他使用者來執行指令,預設使用者為root,使用時需輸入密碼,5分鐘後逾時重新輸入密碼:

由于sudo的配置檔案為sudoers比較重要,不建議直接編輯,可以用visudo(可檢測文法錯誤)來操作,如下:

[root@localhost ~]# visudo        #編輯visudo

## The COMMANDS section may have other options added to it.

##

## Allow root to run any commands anywhere   #核心的配置檔案:修改此處即可:

##授權的使用者     授權用戶端IP=(賦予它系統中哪些使用者)      賦予哪些指令給他使用。

 root                ALL=(ALL)               ALL(絕對路徑)     

yuanhh               ALL=(ALL)           /usr/bin/ls,/usr/bin/cp,/usr/bin/cat   

#注:指令要使用絕對路徑,否則會報錯,如下:                         

>>> /etc/sudoers: 文法錯誤 near line 93 <<<

現在做什麼?

選項有:

  重新編輯 sudoers 檔案(e)

  退出,不儲存對 sudoers 檔案的更改(x)

  退出并将更改儲存到 sudoers 檔案(危險!)(Q)

以上資訊表示:授予yuanhh使用者(任何地方的主機IP),系統中所有使用者的權限,可以用ls,cp,cat等指令:

測試如下:

[root@localhost ~]# su - yuanhh     #第一次用su全切換到yuanhh下。

[yuanhh@localhost ~]$ ls /root/     #檢視時權限不足:

ls: 無法打開目錄/root/: 權限不夠

[yuanhh@localhost ~]$ sudo /usr/bin/ls /root/     #

[sudo] yuanhh 的密碼:    #第一次使用時需要輸入密碼:此處為yuanhh的使用者密碼:

txt  1.txt.bak  2.txt.bak  anaconda-ks.cfg  yuanhh  重要事宜.txt

1.3:如果不想讓普通使用者使用時輸入密碼:可以修改如下:

[root@localhost ~]# visudo      #編輯

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

yuanhh  ALL=(ALL)     /usr/bin/ls,/usr/bin/cp,/usr/bin/cat

user3   ALL=(ALL)    NOPASSWD: /usr/bin/ls,/usr/bin/cp,/usr/bin/cat

#加上"NOPASSWD:" 則下次使用時不需要輸入密碼:                        

[root@localhost ~]# su - user3

[user3@localhost ~]$ sudo ls /root/

1.4:在配置檔案裡面三個非常重要的配置檔案分别是 

Host Alias :通過主機名别名稱來限制: 

User Alias :通過使用者名别名稱限制:

Command Alias :通過指令别名來限制。

編輯visudo:添加如下内容:

Cmnd_Alias YUANHH_CMD = /usr/bin/ls, /usr/bin/cat

修改使用者的配置:

yuanhh  ALL=(ALL)     YUANHH_CMD

測試:

[root@localhost ~]# su - yuanhh

[yuanhh@localhost ~]$ sudo ls /root/

[sudo] yuanhh 的密碼:

3.9:限制root使用者的登入:

注:該方法隻适用于來root使用者的登入:

思路如下:

1、首先修改sshd的配置檔案,限制root使用者登入系統:

2、給普通使用者sudo授權,通過讓普通使用者臨時擁有root的權限來執行:

3、通過普通使用者直接sudo  su  - root下即可:

注:當時普通使用者sudo到root使用者下,必須要知道root使用者的密碼我們可以通NOPASSWD設定,如下

1、需要修改配置檔案:/etc/ssh/sshd_config     #限制root使用者登入

vi /etc/ssh/sshd_config

PermitRootLogin yes       #将yes修改為no,

systemctl restart sshd.service     #重新開機服務即可:

#修改後則不允許root使用者登入,隻能先登入普通使用者,然後su過來。

2、修改visudo檔案:

[root@localhost ~]# visudo

# User_Alias ADMINS = jsmith, mikem 

User_Alias YUANHHS = yuanhh, user1      #通過使用者名别名來添加多個使用者:

yuanhh  ALL=(ALL)      YUANHH_CMD

YUANHHS ALL=(ALL)      NOPASSWD: /usr/bin/su   #讓普通使用者無密碼使用su指令:

測試:此時會發現root使用者無法登入,登入普通使用者,并跳轉到root使用者來測試。

[yuanhh@localhost ~]$ sudo su - root

[root@localhost ~]#

[root@localhost ~]# pwd

[root@localhost ~]# id

uid=0(root) gid=0(root) 組=0(root)

測試結果如上:

附記:以下内容網上查找整理:

擴充

sudo與su比較 http://www.apelearn.com/bbs/thread-7467-1-1.html 

sudo配置檔案樣例  www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

sudo -i 也可以登入到root嗎? http://www.apelearn.com/bbs/thread-6899-1-1.html

2、sudo -i: 為了頻繁的執行某些隻有超級使用者才能執行的權限,而不用每次輸入密碼,可以使用該指令。提示輸入密碼時該密碼為目前賬戶的密碼。沒有時間限制。執行該指令後提示符變為“#”而不是“$”。想退回普通賬戶時可以執行“exit”或“logout” 。

3、

sudo su - 約等于 sudo -i

sudo -s 完全等于 sudo /bin/bash 約等于 sudo su

本文轉自 芬野 51CTO部落格,原文連結:http://blog.51cto.com/yuanhaohao/1978280,如需轉載請自行聯系原作者