su命令介紹
sum命令,它是用來切換用戶的 快捷鍵ctrl+d,退出當前用戶
su命令用法
su - username 完全切換當前用戶
[root@localhost ~]# whoami
root
[root@localhost ~]# su - hanfeng
[hanfeng@localhost ~]$ whoami
hanfeng
[hanfeng@localhost ~]$ pwd
/home/hanfeng
[hanfeng@localhost ~]$ ls -la
總用量 16
drwx------. 2 hanfeng ha1 83 11月 1 15:07 .
drwxr-xr-x. 4 root root 34 10月 31 15:38 ..
-rw-------. 1 hanfeng ha1 21 11月 1 15:18 .bash_history
-rw-r--r--. 1 hanfeng ha1 18 8月 3 2016 .bash_logout
-rw-r--r--. 1 hanfeng ha1 193 8月 3 2016 .bash_profile
-rw-r--r--. 1 hanfeng ha1 231 8月 3 2016 .bashrc
[hanfeng@localhost ~]$ 登出
[root@localhost ~]#
其中這個 - ,目的就是徹底的切換用戶,使用自己的配置、環(huán)境變量等
.bash開頭的文件都是用戶的配置文件
- su username 看到用戶已經切換,但不是徹底的切換過來,因為還在/root用戶下
[root@localhost ~]# su hanfeng
[hanfeng@localhost root]$ whoami
hanfeng
[hanfeng@localhost root]$ pwd
/root
[hanfeng@localhost root]$ exit
[root@localhost ~]#
su - -c用法
su - -c “命令” 用戶名:是不進入這個賬戶,但是以這個賬戶的身份執(zhí)行命令
[root@localhost ~]# su - -c "touch /tmp/han.111" hanfeng
[root@localhost ~]# ls -lt /tmp/ |head
總用量 0
-rw-r--r--. 1 hanfeng ha1 0 11月 1 15:45 han.111
drwx------. 3 root root 17 11月 1 10:21 systemd-private-5909416742444897abc72857986169b4-vmtoolsd.service-klBF7K
[root@localhost ~]# id hanfeng
uid=1000(hanfeng) gid=1001(ha1) 組=1001(ha1),1002(user3)
[root@localhost ~]#
這里會看到文件的屬組是ha1,因為hanfeng用戶的屬組就是ha1
su命令切換用戶后,再切換到另一個用戶下
只要輸入再次切換用戶的密碼即可登錄
[root@localhost ~]# su - hanfeng
上一次登錄:三 11月 1 16:09:37 CST 2017pts/0 上
[hanfeng@localhost ~]$ su - user5
密碼:
最后一次失敗的登錄:三 11月 1 16:10:09 CST 2017pts/0 上
最有一次成功登錄后有 1 次失敗的登錄嘗試。
[user5@localhost ~]$ ls -la
總用量 12
drwx------. 2 user5 user5 62 11月 1 16:07 .
drwxr-xr-x. 5 root root 47 11月 1 16:07 ..
-rw-r--r--. 1 user5 user5 18 8月 3 2016 .bash_logout
-rw-r--r--. 1 user5 user5 193 8月 3 2016 .bash_profile
-rw-r--r--. 1 user5 user5 231 8月 3 2016 .bashrc
[user5@localhost ~]$ 登出
[hanfeng@localhost ~]$ 登出
[root@localhost ~]#
/etc/skel文件
useradd -M 不要自動建立用戶的登入目錄,就是說創(chuàng)建的用戶沒有配置文件 /etc/skel是存放模板配置文件
[root@localhost ~]# useradd -M ll
[root@localhost ~]# su - ll
su: 警告:無法更改到 /home/ll 目錄: 沒有那個文件或目錄
-bash-4.2$
-bash-4.2$ 登出
[root@localhost ~]# mkdir /home/ll
[root@localhost ~]# chown ll:ll /home/ll/
[root@localhost ~]# su - ll
上一次登錄:三 11月 1 16:20:29 CST 2017pts/0 上
-bash-4.2$ pwd
/home/ll
-bash-4.2$ ls -la
總用量 0
drwxr-xr-x. 2 ll ll 6 11月 1 16:28 .
drwxr-xr-x. 6 root root 57 11月 1 16:28 ..
-bash-4.2$ 登出
[root@localhost ~]# cp /etc/skel/.bash* /home/ll/
[root@localhost ~]# chown -R ll:ll !$
chown -R ll:ll /home/ll/
[root@localhost ~]# su - ll
上一次登錄:三 11月 1 16:55:28 CST 2017pts/0 上
[ll@localhost ~]$ 登出
[root@localhost ~]#
普通用戶也可以 su - 到root用戶下,只需要root用戶的密碼
[root@hf-01 ~]# su - hanfeng
上一次登錄:五 10月 27 05:14:42 CST 2017pts/1 上
[hanfeng@hf-01 ~]$ su -
密碼:
上一次登錄:四 11月 2 01:26:08 CST 2017從 192.168.74.1pts/0 上
[root@hf-01 ~]# whoami
root
[root@hf-01 ~]# 登出
[hanfeng@hf-01 ~]$ 登出
[root@hf-01 ~]# 登出
[root@hf-01 ~]#
3.8 sudo命令
sudo命令介紹
sudo命令,可以不切換用戶就可以獲取其他用戶的權限來執(zhí)行相關命令。(通常情況就是,給普通用戶授權root用戶的身份)
visudo命令,可以打開sudo命令的配置文件(會看到其實代開的是/etc/sudoers.tmp這個文件)
[root@hf-01 ~]# visudo 會進入/etc/sudoers.tmp的配置文件中
97 ## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
99 hanfeng ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/ls
[root@hf-01 ~]#
輸入 :set nu 來顯示行號 我們在root用戶下面一行,在添加一個用戶,并可以運/usr/bin/ls, usr/bin/mv, /usr/bin/cat命令,可寫多個, 也可寫ALL(表示所有) 然后 :wq 保存退出 默認root支持sudo,因為文件中默認有root ALL=(ALL) ALL 。 在這一行下面加入 hanfeng ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/ls ,意思是hanfeng這個用戶在執(zhí)行sudo這個命令時,可以獲取部分root用戶的權限。 從左到右依次為,第一個ALL就可以理解為主機的意思,第二個ALL是可以獲取哪個用戶的權限,All就是所有包括root,第三個ALL是指使用sudo執(zhí)行所有命令。
sudo命令的用法
sudo命令用法一
su命令可以切換用戶身份 在 su 在切換成普通用戶后,是無法查看/root/目錄的,這時用sudo命令,則可以讓該用戶臨時擁有root用戶的權限 使用在visudo命令中,編輯的命令要使用絕對路徑
[root@hf-01 ~]# su - hanfeng
上一次登錄:四 11月 2 03:52:44 CST 2017pts/0 上
[hanfeng@hf-01 ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠
[hanfeng@hf-01 ~]$ sudo /usr/bin/ls /root/ 在執(zhí)行命令后,會提示輸入hanfeng用戶的密碼
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for hanfeng:
11.txt 234 33.txt ha.txt
[hanfeng@hf-01 ~]$ ls /root/ 在hanfeng用戶下直接去執(zhí)行會發(fā)現無法打開/root/目錄
ls: 無法打開目錄/root/: 權限不夠
[hanfeng@hf-01 ~]$ sudo /usr/bin/ls /root/
11.txt 234 33.txt ha.txt
[hanfeng@hf-01 ~]$ mv /root/ha.txt /root/haha.txt
mv: 無法打開目錄/root/: 權限不夠
[hanfeng@hf-01 ~]$ sudo /usr/bin/mv /root/ha.txt /root/haha.txt
[hanfeng@hf-01 ~]$ 登出
[root@hf-01 ~]#
sudo命令用法二
在visudo命令中, 編輯/etc/sudoers.tmp配置文件,設置NOPASSWD: ALL,則之后再也不需要輸入密碼。 在sudo命令下,可以使用絕對路徑命令,也可以直接使用命令去執(zhí)行,得到的結果相同
[root@hf-01 ~]# visudo
[root@hf-01 ~]# su - user2
上一次登錄:四 11月 2 07:17:04 CST 2017pts/0 上
[user2@hf-01 ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠
[user2@hf-01 ~]$ sudo ls /root/
11.txt 234 33.txt haha.txt
[user2@hf-01 ~]$ sudo /usr/bin/ls /root/
11.txt 234 33.txt haha.txt
[user2@hf-01 ~]$ 登出
[root@hf-01 ~]#
sudo命令用法三
在visudo命令中,給一些用戶設置一些別名,這里的別名相當于一個虛擬的用戶
如:User Aliases 給用戶做一個別名 其中的ADMINS是虛擬用戶,jsmith, mikem是兩個真實用戶,所以說虛擬用戶里面存在兩個真實用戶
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
在visudo命令中,給命令設置一些別名
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient , /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig , /sbin/mii-tool
例子:
[root@hf-01 ~]# visudo 進入到配置環(huán)境中
然后到
## Networking 那一段落最后加上
HANFENG_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
并將用戶名hanfeng后面,去除那些絕對路徑命令,修改上HANFENG_CMD,然后保存退出
root ALL=(ALL) ALL
hanfeng ALL=(ALL) HANFENG_CMD
[root@hf-01 ~]# su - hanfeng
上一次登錄:四 11月 2 05:46:40 CST 2017pts/0 上
[hanfeng@hf-01 ~]$ sudo ls /root/ 這里會發(fā)現可以查看/root/目錄下的文件
[sudo] password for hanfeng:
11.txt 234 33.txt haha.txt
[hanfeng@hf-01 ~]$ sudo ls /root/
11.txt 234 33.txt haha.txt
[hanfeng@hf-01 ~]$ sudo cat /root/haha.txt
[hanfeng@hf-01 ~]$ 登出
[root@hf-01 ~]#
對用戶組做出一些限制
## Allows people in group wheel to run all commands
109 %wheel ALL=(ALL) ALL
sudo命令總結:
在visudo命令中的配置文件下,輸入 :set nu 則每行會顯示出行號。 在第一次使用sudo命令,去執(zhí)行某條命令,會要求輸入當前用戶的密碼,但在第二次執(zhí)行該條命令時,直接輸入即可執(zhí)行(或者,在visudo的配置文件中,在該用戶的寫上無需密碼,如hanfeng ALL=(ALL) NOPASSWD:ALL 就可直接登錄,無需密碼了),再添加命令需要使用絕對路徑 在visudo的配置文件中寫錯了,保存退出后,會報錯,這時選擇 e 然后回車繼續(xù)進去編輯即可。 在visudo的配置文件中,添加命令,需要使用絕對路徑(使用命令的時候可以使用絕對路徑命令或命令去執(zhí)行) sudo命令,就是用普通用戶臨時擁有root用戶的身份,去執(zhí)行某一條命令。(這樣就可以避免將root用戶給普通用戶了) 給用戶、命令做一些別名,對用戶組做出一些限制
3.9 限制root遠程登錄
sudo su - root 命令(root可省略)
設置不需要密碼直接切換到root用戶下
在visudo中 在User_Alias HANS = hanfeng, user2, user4 HANS ALL=(ALL) NOPASSWD: /usr/bin/su 設置完成后就可直接切換到root用戶下了
[root@hf-01 ~]# visudo 在配置環(huán)境中設置
在## User Aliases一段末尾處的下一行設置
User_Alias HANS = hanfeng, user2, user4
在 ## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hanfeng ALL=(ALL) HANFENG_CMD
user10 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
user2 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
在這里加上一下點,然后保存退出
HANS ALL=(ALL) NOPASSWD: /usr/bin/su
然后執(zhí)行命令
[root@hf-01 ~]# su - hanfeng
上一次登錄:四 11月 2 07:51:34 CST 2017pts/0 上
[hanfeng@hf-01 ~]$ sudo su -
上一次登錄:四 11月 2 05:38:13 CST 2017從 192.168.74.1pts/1 上
[root@hf-01 ~]# whoami
root
[root@hf-01 ~]# 登出
[hanfeng@hf-01 ~]$ 登出
[root@hf-01 ~]#
限制root用戶遠程登錄
在vi /etc/ssh/sshd_config文件中設置
在/etc/ssh/sshd_config里面搜索關鍵詞用法和less一樣,是 /關鍵詞 就會出現
[root@hf-01 ~]# vi /etc/ssh/sshd_config 在這里搜索/Root
#LoginGraceTime 2m
PermitRootLogin no 將前面的 #號 去除并將yes改為no,表示不允許遠程登錄了
#StrictModes yes
然后保存退出,再重啟配置服務
[root@hf-01 ~]# systemctl restart sshd.service
[root@hf-01 ~]#
然后再去xshell連接,會發(fā)現密碼和秘鑰都無法登錄 使用putty去登陸普通用戶,就會看到普通用戶無法去訪問/root/目錄,但是使用sudo su - root就可切換到root用戶下使用