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,如需轉載請自行聯系原作者