問題場景
在客戶提供的服務器上面,使用root
用戶,想跳轉到其他用戶,比如su - test
。會提示以下問題:
no permission to execute the command
問題環境
軟件 | 版本 |
---|---|
Centos | 7 |
問題原因
一般有以下幾種原因會導致這種情況:
沒有文件的執行權限
我們使用命令ls -l $file
,$file
是我們要執行的腳本。如下圖所示
從上圖可以看到,該文件是有執行權限的,而且屬於root
羣組的。當然,我們這裏不是屬於這種情況。那麼我們可以嘗試一下,接下來請來看看:
嘗試
-
新建
test.sh
,並編寫簡單語句,如下:#!/bin/bash echo test
-
使用命令
sh test.sh
,結果如下:
-
是不是很驚訝,是可以執行的?怎麼不是我之前所說的呢???
彆着急,我們可以執行以下命令./test.sh
,結果如下:
-
雖然直接用
sh $file
也可以執行腳本,但是我們希望執行腳本是直接腳本名就可以了。所以按照下面步驟,先將文件權限設置爲755
,然後再執行。從下圖可以看到,是可以執行的。
被系統的安全模塊所限制
一般系統安裝的默認情況下,所有用戶都默認可以執行su
命令的。但是這就有個隱患,假如用戶反覆嘗試其他用戶(比如root
)的登錄密碼,而這存在一定的安全風險的。所以,一般對於一些程序,都會事先進行身份和權限的驗證,判斷是否可以通過,通過才能執行,比如su
等。而系統一般會引入PAM(Pluggable Authentication Modules)來進行身份或權限的驗證。詳細的信息可以百度一下PAM,或者點擊本文最下面的參考鏈接
。
解決方案
修改執行文件的權限
如果是文件未有執行權限,可以使用命令chmod 755 $file
進行賦權。可以參考我上個環節的嘗試
步驟所寫。
使用sudo
命令進行提權使用
我們可以使用sudo
命令進行提權執行,如使用命令:
sudo su - test
從我們下圖的兩個對比可以看出,使用sudo
提權成功。
結果
在本文中,主要是使用了sudo
提權解決了權限問題。
總結
針對權限不足,本文提出了兩種解決途徑。當然,畢竟不是專職運維,只是在遇到問題的過程中,記錄下了問題,並去嘗試解決。所以,應該有更多的解決問題的方式。這就得靠各位讀者了。如果有更好的解決方案,可以留言告知,謝謝!
參考鏈接
Linux下PAM模塊學習總結
CentOS 7系統安全之用戶切換與提權
隨緣求贊
如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注