su和sudo的用法

su命令

切換到其餘用戶
格式:

su - [用戶名]
su - user2
linux

[root@jinkai01 ~]# su - user2
上一次登陸:一 8月 3 16:14:57 CST 2020pts/0 上
[user2@jinkai01 ~]$ pwd
/home/user2vim

su - -c "touch /tmp/aming.111"  username(用戶名)
能夠不用切換到 其餘用戶下 就能夠指定某個用戶建立文件
服務器

注意:加-保證完整的切換到user2的家目錄下,不加-則切換到user2帳號,可是當前目錄倒是以前用戶的家目錄;ssh

sudo命令

讓普通用戶使用指定用戶的身份去執行一條命令(ls,mv,cat)
讓user2使用root的身份去執行一條命令
visudo命令
此命令實際上編輯的是/etc/sudoers文件
在sudo文件中給指定用戶賦予其餘用戶的身份
此命令在語句有錯誤的條件下退出會提示你錯誤;
好比user2使用root身份
在文檔中找到這一行,並在下面添加相同格式一行;ide

Allow root to run any commands anywhere
root ALL=(ALL) ALL測試

(ALL)授予括號內用戶的權限 第三個ALL 指定具體的命令
或者賦予具體的命令(必須使用絕對路徑,逗號前加空格)rest

Allow root to run any commands anywhere
root ALL=(ALL) ALL
user2 ALL=(ALL) /usr/bin/ls,/usr/bin/mv,/usr/bin/catcode

保存退出
使用sudo測試
文檔

[user2@jinkai01 ~]$ ls /root/
ls: 沒法打開目錄/root/: 權限不夠
[user2@jinkai01 ~]$ sudo ls /root/it

咱們信任您已經從系統管理員那裏瞭解了平常注意事項。
總結起來無外乎這三點:

#1) 尊重別人的隱私。
#2) 輸入前要先考慮(後果和風險)。
#3) 權力越大,責任越大。

[sudo] user2 的密碼:
1.txt 2 aa.txt abc anaconda-ks.cfg a.txt b.txt

咱們會發現可使用ls 查看/root/目錄,已經有權限,但第一次須要輸入密碼

也有方法讓使用命令時不輸入密碼

Allow root to run any commands anywhere
root ALL=(ALL) ALL
user2 ALL=(ALL) NOPASSWD: /usr/bin/ls,/usr/bin/mv,/usr/bin/cat

把須要添加sudo特權的用戶能夠統一加到 wheel組裏,這就不用天天增長一個用戶設置一行

Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

只容許使用普通帳戶登陸,而普通帳戶登陸後,能夠不輸入密碼就能用sudo切換到root帳戶。
配置方法,輸入以下命令:

#visudo
而後在文件的最後加入以下3行:
User_Alias USER_SU =linuxprobe,user1,user2
Cmnd_Alias SU = /usr/bin/su
USER_SU ALL=(ALL) NOPASSWD: SU

第一行設定了一個user別名,其實這個USER_SU至關因而linuxprobe,user1和user2三個帳戶;
第二行設定了一個命令別名,SU至關於/usr/bin/su;
第三行前面介紹過。保存配置文件後,使用linuxprobe,user1和user2這3個帳戶登陸Linux。執行命令sudo su -切換到root帳戶,獲取root帳戶的全部權利,以下所示

[root@jinkai01 ~]# su - user1
上一次登陸:四 8月 6 16:47:55 CST 2020從 192.168.111.1pts/1 上
[user1@jinkai01 ~]$ sudo su -
上一次登陸:四 8月 6 16:54:07 CST 2020從 192.168.111.1pts/0 上
[root@jinkai01 ~]# whoami
root

限制root遠程登陸

條件:限制root沒法遠程登陸,不透露root密碼;
思路:限制root沒法遠程登陸,意味着不少命令沒法使用;那麼咱們可使用su切換到root須要密碼;咱們能夠經過sudo中加一條使用命令時不輸入密碼

也就是使用su命令切換到root下不須要使用密碼;這樣限制了root沒法遠程登陸,可是咱們能夠經過sudo 中的visudo文件來實現免密碼切換到root用戶下;
也就是visudo命令下編輯加入一條
user1 ALL=(ALL) NOPASSWD: /usr/bin/su

Allow root to run any commands anywhere
root ALL=(ALL) ALL
user1 ALL=(ALL) NOPASSWD:/usr/bin/su

測試:在user1用戶下使用su - root切換須要密碼,而使用sudo su -root後 不用密碼就能夠切換到root帳號;

[root@jinkai01 ~]# su - user1
上一次登陸:一 8月 3 16:08:34 CST 2020pts/0 上
[user1@jinkai01 ~]$ su - root
密碼:
[user1@jinkai01 ~]$ sudo su - root
上一次登陸:四 8月 6 15:10:46 CST 2020從 192.168.111.1pts/1 上
[root@jinkai01 ~]# ls /root/
1.txt 2 aa.txt abc anaconda-ks.cfg a.txt b.txt

限制root遠程登陸

編輯文件/etc/ssh/sshd_config

[root@jinkai01 ~]# vim /etc/ssh/sshd_config
將文檔中的
#PermitRootLogin yes
改成
PermitRootLogin no

**必定要去除#,#表明是註釋的意思;
改完文件後記得重啓sshd服務

[root@jinkai01 ~]# systemctl restart sshd

從新登陸測試發現服務器拒絕使用root遠程登陸**

使用user1正常登陸成功,而後使用sudo su - root命令成功切換到root用戶下

Last login: Thu Aug 6 16:28:45 2020[user1@jinkai01 ~]$ sudo su - root上一次登陸:四 8月 6 16:29:04 CST 2020pts/1 上最後一次失敗的登陸:四 8月 6 16:32:23 CST 2020從 192.168.111.1ssh:notty 上最有一次成功登陸後有 1 次失敗的登陸嘗試。[root@jinkai01 ~]#

相關文章
相關標籤/搜索