1. 程式人生 > >十三、su命令、sudo命令、限制root遠程登錄

十三、su命令、sudo命令、限制root遠程登錄

admins conf 尊重 信任 onf 文件中 然而 系統管 bsp

十三、su命令、sudo命令、限制root遠程登錄

一、su命令

格式為su [-] username,後面可以跟-,也可以不跟。普通用戶的su命令不加username時,就是切換到root用戶。root用戶也可以使用su命令切花到普通用戶。該命令加上-後,會初始化當前用戶的各種環境變量。示例加與不加-的區別,命令:

# su user1

[user1@yaowei-01 root]$ pwd

/root

[user1@yaowei-01 root]$ ls

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

[user1@yaowei-01 root]$ su root

密碼:

[root@yaowei-01 ~]# su - user1

上一次登錄:二 2月 6 20:18:12 CST 2018pts/0 上

[user1@yaowei-01 ~]$ pwd

/home/user1

[user1@yaowei-01 ~]$ ls -la

總用量 12

drwx------. 2 user1 grp1 62 1月 30 18:46 .

drwxr-xr-x. 4 root root 32 2月 6 18:50 ..

-rw-r--r--. 1 user1 grp1 18 8月 3 2017 .bash_logout

-rw-r--r--. 1 user1 grp1 193 8月 3 2017 .bash_profile

-rw-r--r--. 1 user1 grp1 231 8月 3 2017 .bashrc

不加-表示還在root用戶下,沒有徹底切換過來,加-後可以發現在自己的家目錄下/home/user1,在自己的家目錄下就會加載自己家目錄下的配置文件,比如ls -la。

因此,切記切換用戶的時候要加上“-”,這樣切換才徹底。

用法:

root用戶下,以普通用戶的身份執行命令:

[root@yaowei-01 ~]# su - -c "touch /tmp/13.txt" user1

[root@yaowei-01 ~]# ls -lt /tmp/|head

總用量 0

-rw-r--r--. 1 user1 grp1 0 2月 6 20:28 13.txt

-rw-r--r--. 1 user1 grp1 0 2月 6 20:27 12.txt

drwx------. 3 root root 17 2月 3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vmtoolsd.service-aSrK8x

drwx------. 3 root root 17 2月 3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vgauthd.service-0Lc2Vi

drwxr-xr-x. 2 root root 19 1月 30 19:10 test

drwx------. 3 root root 17 1月 27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vmtoolsd.service-8ks2ZG

drwx------. 3 root root 17 1月 27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vgauthd.service-T7GMmu

drwx------. 3 root root 17 1月 26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vmtoolsd.service-lslC0Q

drwx------. 3 root root 17 1月 26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vgauthd.service-iI6GMz

切換的用戶若沒有系統的配置文件,前綴會顯示.bash字樣,可進入系統的模板目錄:/etc/skel/,復制下面的".bash"文件:

# ls -la /etc/skel

總用量 24

drwxr-xr-x. 2 root root 62 1月 22 01:48 .

drwxr-xr-x. 74 root root 8192 2月 6 18:57 ..

-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

# cp /etc/skel/.bash* /home/user5/ 復制到它的家目錄下去,比如user5。

# chown -R user5:user5 /home/user5 然後不要忘記了更改所有者及所屬組,/home/user5可以用!$(上一條命令的最後一個參數)代替。

復制過去後,再登錄查看,前綴即可正常顯示。

二、sudo命令

sudo命令:只有root用戶可以使用的命令,普通用戶若想使用sudo命令,需要root預先設定。可以使用visudo命令編輯它的配置文件/etc/sudoers。若沒有visudo這個命令,使用命令yum install -y sudo安裝。

root默認支持sudo,因為這個文件中有一行root ALL=(ALL)ALL。

在該行下面加入test ALL=(ALL)ALL

就可以讓test用戶擁有sudo的特權。從左到右,第一段test這裏為一個用戶,指定讓哪個用戶擁有sudo特權,第二段ALL=(ALL),左邊的ALL指的是所有的主機,右邊的ALL指的是獲取哪個用戶的身份,第二段幾乎不用配置;第三段設定可以使用sudo命令的有哪些。

visudo這個命令可以檢測錯誤,因此建議使用這個命令。

使用visudo命令編輯/etc/sudoers配置文件,必須要使用root用戶。

操作方法:進入這個文件,然後在root下面加上一行。示例:

## Allow root to run any commands anywhere (整個文件中最核心的一個項目)

root ALL=(ALL) ALL

user1 ALL=(ALL) ALL(可以自定義一些命令,如ls,mv,cat,這些命令需要些絕對路徑,否則不可用,找不到文件)

此時方可驗證user1的權限了,方法如下:(如下操作是在root賬戶下進行的)

# su user1

[user1@yaowei-01 root]$ ls

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

[user1@yaowei-01 root]$ sudo ls

我們信任您已經從系統管理員那裏了解了日常註意事項。

總結起來無外乎這三點:

#1) 尊重別人的隱私。

#2) 輸入前要先考慮(後果和風險)。

#3) 權力越大,責任越大。

[sudo] user1 的密碼:

123 1.txt anaconda-ks.cfg dir3 dir4

小技巧:在文件內,":set nu"可以顯示文件內的行號。

使用sudo時,要輸入自身的密碼,也可設置不要密碼。如下的user2:

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

user1 ALL=(ALL) ALL

user2 ALL=(ALL) NOPASSWD: ALL:

這個下面也可以加入別名的組。

host可以設置別名,用戶也可以。alias命令。

獲取到的命令那裏

由於切換到user1用戶後當前目錄還是root,user1沒有任何權限,所以ls查看時,提示權限不夠。然而使用命令sudo ls輸入user1自身的密碼後,就有權限了。初次使用sudo命令時,會出現上面的一大段提示,再次使用sudo命令時則不再提示。

若每增加一個用戶就設置一行,這樣就很麻煩,所以可以這樣設置:

# %wheel ALL=(ALL)

將# %wheel ALL=(ALL)前面的#去掉,讓這一行生效。它的意思是,wheel這個組的所有用戶都擁有了sudo的權力。接下來,只要把需要設置sudo權限的用戶加入到wheel這個組即可。如下所示:

## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

新加入別名的組,加入到這一行命令下面,如下:

# User_Alias ADMINS = jsmith, mikem

實用案例:

我們的需求是把Linux服務器設置成這個樣子:只允許使用普通賬戶登錄,登錄後,可以不輸入密碼就能用sudo切換到root賬戶。配置方法是:

# visudo

在文件最後加入三行:

User_Alias USER_SU = user1, user2 user3

Cmnd_Alias SU = /usr/bin/su

USER_SU ALL=(ALL)NOPASSWD:SU

第一行設定了一個user別名,其實這個USER_SU相當於是user1,user2,user3三個賬戶;第二行設定了一個命令別名,SU相當於/usr/bin/su;

第三行,保存配置文件後,使用user1、2、3這三個賬戶登錄Linux。

三、限制root遠程登錄

/etc/ssh/sshd_config為sshd服務的配置文件,默認允許root賬戶用過ssh遠程登錄Linux。要想限制root用戶遠程登錄Linux,操作方法為:修改配置文件/etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes並修改為PermitRootLogin no。保存配置文件後,重啟sshd服務,如下所示:

# systemctl restart sshd.service

需註意的是,這個方法只適用於通過ssh遠程登錄Linux的情況。


十三、su命令、sudo命令、限制root遠程登錄