6.13 3.7-3.9
su命令用於切換用戶
[root@hyc-01-01 ~]# whoami 查看當前用戶
root
[root@hyc-01-01 ~]# su - hyc2
[hyc2@hyc-01-01 ~]$ id 查看當前用戶
uid=1006(hyc2) gid=1001(hyc1) 組=1001(hyc1) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
su和su-的區別:
都可以切換用戶;
su只會切換登錄的用戶,切換時不會加載被切換用戶的配置文件、環境變量等內容;
su-會直接切換到用戶家目錄下加載被切換用戶的配置文件、環境變量等內容;
su - –c 指定以某個用戶的身份執行某個命令
[root@hyc-01-01 ~]# whoami
root
[root@hyc-01-01 ~]# su - -c "touch /tmp/ldp" hyc
[root@hyc-01-01 ~]# ls -l /tmp/ldp
-rw-rw-r--. 1 hyc hyc 0 6月 13 20:54 /tmp/ldp ldp文件的屬主和屬組為hyc
[root@hyc-01-01 ~]# tail -7 /etc/passwd
hyc:x:1000:1000::/home/hyc:/bin/bash
hyc1:x:1001:1001::/home/hyc1:/bin/bash
hyc2:x:1006:1001::/home/hyc2:/bin/bash
hyc3:x:1007:1005::/home/hyc111:/sbin/nologin
hyc4:x:1008:1008::/home/hyc4:/bin/bash
hyc5:x:1014:1001::/home/abc:/sbin/nologin
hyc6:x:1015:1015::/home/hyc6:/bin/bash
[root@hyc-01-01 ~]# date
2018年 06月 13日 星期三 21:00:22 CST
從root切換到普通用戶不需要密碼,從一個普通用戶切換到另一個普通用戶需要密碼
[root@hyc-01-01 ~]# whoami
root
[root@hyc-01-01 ~]# su - hyc
上一次登錄:三 6月 13 21:01:10 CST 2018pts/1 上
[hyc@hyc-01-01 ~]$ whoami
hyc
[hyc@hyc-01-01 ~]$ su - hyc1
密碼:
上一次登錄:五 6月 8 01:09:00 CST 2018pts/0 上
最後一次失敗的登錄:三 6月 13 21:01:33 CST 2018pts/1 上
最有一次成功登錄後有 2 次失敗的登錄嘗試。
[root@hyc-01-01 ~]# ls /home home目錄不存在用戶hyc4的家目錄
3.txt- hyc hyc1 hyc111 hyc2 hyc5 hyc6 hyc7
[root@hyc-01-01 ~]# tail -7 /etc/passwd
hyc:x:1000:1000::/home/hyc:/bin/bash
hyc1:x:1001:1001::/home/hyc1:/bin/bash
hyc2:x:1006:1001::/home/hyc2:/bin/bash
hyc3:x:1007:1005::/home/hyc111:/sbin/nologin
hyc4:x:1008:1008::/home/hyc4:/bin/bash
hyc5:x:1014:1001::/home/abc:/sbin/nologin
hyc6:x:1015:1015::/home/hyc6:/bin/bash
[root@hyc-01-01 ~]# su - hyc4 導致切換時無法加載用戶hyc4的配置文件
su: 警告:無法更改到 /home/hyc4 目錄: 沒有那個文件或目錄
-bash-4.2$
解決辦法:
用戶缺少家目錄
[root@hyc-01-01 ~]# mkdir /home/hyc4 創建hyc4家目錄
[root@hyc-01-01 ~]# chown hyc4:hyc4 /home/hyc4 修改目錄權限
[root@hyc-01-01 ~]# su - hyc4
上一次登錄:三 6月 13 21:07:57 CST 2018pts/1 上
-bash-4.2$ 由於缺少配置文件導致依然無法正常登錄
[root@hyc-01-01 ~]# ls -al /etc/skel/ 該目錄下為用戶家目錄配置文件模板
總用量 24
drwxr-xr-x. 2 root root 62 5月 25 04:49 .
drwxr-xr-x. 74 root root 8192 6月 13 21:07 ..
-rw-r--r--. 1 root root 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 root root 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 root root 231 8月 3 2017 .bashrc
[root@hyc-01-01 ~]# cp /etc/skel/.bash* /home/hyc4 復制模板到hyc4家目錄下
[root@hyc-01-01 ~]# chown -R hyc4:hyc4 !$
chown -R hyc4:hyc4 /home/hyc4 連帶修改hyc4目錄下所有文件的屬主和屬組
[root@hyc-01-01 ~]# su - hyc4
上一次登錄:三 6月 13 21:13:04 CST 2018pts/1 上
[hyc4@hyc-01-01 ~]$ 切換正常
普通用戶顯示$,root用戶顯示#
3.8 sudo命令
可以讓普通用戶臨時擁有某個用戶(包括root)的權限
[root@hyc-01-01 ~]# visudo
visudo專門用於編輯/etc/sudoers.tmp文件,可以幫助檢測語法錯誤;
若使用vi命令無法檢測語法錯誤;
…
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL 允許root用戶在任何地方以任何用戶的身份執行任何命令
93 hyc ALL=(root) ls,mv,cat 允許hyc用戶在任何地方以root身份執行ls、mv、cat
…
第二段的ALL通常不修改,這個ALL的=後面的括號中寫需要獲得哪個用戶的身份,可以寫ALL表示任何用戶;
第三段可以寫多個或一個命令表示執行的命令,寫ALL則為執行任何命令;
正常保存退出出現提示:
>>> /etc/sudoers: 語法錯誤 near line 93 <<<
現在做什麽? 此處回車出現以下信息
選項有:
重新編輯 sudoers 文件(e)
退出,不保存對 sudoers 文件的更改(x)
退出並將更改保存到 sudoers 文件(危險!)(Q)
現在做什麽? 按e重新編輯
…
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 hyc ALL=(root) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
…
最後一段命令需要寫絕對路徑;
命令間用逗號和空格分開;
[hyc@hyc-01-01 ~]$ ls /root 普通用戶無權限查看root家目錄
ls: 無法打開目錄/root: 權限不夠
[hyc@hyc-01-01 ~]$ sudo /usr/bin/ls /root/ 使用戶hyc以root身份執行ls命令
我們信任您已經從系統管理員那裏了解了日常註意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(後果和風險)。
#3) 權力越大,責任越大。
[sudo] hyc 的密碼: 第一次用sudo執行命令時都要輸入當前用戶的密碼
111 222 3.txt anaconda-ks.cfg.1 hyc2 ls2 test.txt 新建文本文檔.txt
[hyc@hyc-01-01 ~]$ sudo /usr/bin/ls /root/
111 222 3.txt anaconda-ks.cfg.1 hyc2 ls2 test.txt 新建文本文檔.txt
[root@hyc-01-01 ~]# visudo
…
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 hyc ALL=(root) NOPASSWD:/usr/bin/ls, /usr/bin/mv, /usr/bin/cat
…
在最後一段最前面加NOPASSWD:則首次使用sudo時將不提示輸入密碼
[root@hyc-01-01 ~]# su - hyc
上一次登錄:三 6月 13 22:11:03 CST 2018pts/1 上
[hyc@hyc-01-01 ~]$ sudo ls /root 此處未提示密碼
111 222 3.txt anaconda-ks.cfg.1 hyc2 ls2 test.txt 新建文本文檔.txt
[root@hyc-01-01 ~]# visudo
…
# Host_Alias FILESERVERS = fs1, fs2 為主機做別名
# Host_Alias MAILSERVERS = smtp, smtp2
…
# User_Alias ADMINS = jsmith, mikem 為用戶做別名
…
…
27 # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dh client, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /s bin/iwconfig, /sbin/mii-tool
28 Cmnd_Alias HYC_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
…
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 hyc ALL=(root) HYC_CMD
…
此處命令別名需要大寫
[root@hyc-01-01 ~]# su - hyc
上一次登錄:三 6月 13 22:20:46 CST 2018pts/1 上
[hyc@hyc-01-01 ~]$ sudo ls /root 修改別名成功
[sudo] hyc 的密碼:
111 222 3.txt anaconda-ks.cfg.1 hyc2 ls2 test.txt 新建文本文檔.txt
3.9 限制root遠程登錄
用戶無法直接遠程到root,但可以執行su命令切換到root
設置用戶可以以任何用戶的身份使用su命令方便從普通用戶切換到root
[root@hyc-01-01 ~]# visudo
…
User_Alias HYCS = hyc, hyc1
…
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hyc ALL=(root) HYC_CMD
HYCS ALL=(ALL) NOPASSWD:/usr/bin/su
[root@hyc-01-01 ~]# su - hyc
上一次登錄:三 6月 13 23:30:41 CST 2018pts/1 上
[hyc@hyc-01-01 ~]$ sudo su – 在使用su時直接獲得root權限執行
上一次登錄:三 6月 13 23:36:33 CST 2018pts/1 上
限制root用戶遠程登錄
[root@hyc-01-01 ~]# vi /etc/ssh/sshd_config
…
38 #PermitRootLogin no
…
[root@hyc-01-01 ~]# systemctl restart sshd.service 修改配置後重啟服務
此時會發現root用戶無法遠程登錄
[hyc@hyc-01-01 ~]$ su – root 用普通用戶登錄後切換到root下,發現需要密碼但不知道密碼,導致無法切換
密碼:
su: 鑒定故障
[hyc@hyc-01-01 ~]$
[hyc@hyc-01-01 ~]$ sudo su – root 使用sudo命令以root身份切換root不需要密碼
上一次登錄:三 6月 13 23:56:40 CST 2018tty1 上
最後一次失敗的登錄:三 6月 13 23:57:48 CST 2018pts/0 上
最有一次成功登錄後有 1 次失敗的登錄嘗試。
用戶執行su – root時獲得了root權限,所以切換root不需要密碼
6.13 3.7-3.9