2016-02-23 65 views
1

我有不同的用戶在/home。每個用戶都有一個start.sh腳本和一個start.conf用於配置。 start.sh中鏈接到/bin/nameoftheuser,使打字更容易(這增加了更復雜的問題)限制bash腳本到它的主人

我想將腳本限制在與之協同工作的用戶。我現在做的是這樣的:

cd 
if [ -f start.conf ]; then 
    . start.conf 
else 
    echo "start.conf not found" 
    exit 2 
fi 

if [ $(whoami) != $SCRIPTUSER ]; then 
    echo "You are logged in with $(whoami). Only $SCRIPTUSER is allowed to use this script" 
    exit 2 
fi 

$SCRIPTUSERstart.conf定義。但是當我用錯誤的用戶登錄並且想要使用start.sh時,錯誤的配置文件被包含在內,因此代碼的第二部分沒有發現錯誤。

在結束時,每個用戶應限制其start.sh腳本excluselive他們和其他人不應該是能夠通過事故


一個想法可能是$0車主比較當前叫它用戶。但是當/bin/nameoftheuser中存在符號鏈接時,符號鏈接歸

包括配置文件和讀取哪些用戶可以使用它並比較$(whoami)它也不滿足。這是因爲不同的用戶可以調用它幷包含他們自己的start.conf

+0

的主人這一切似乎小費解。這個設計應該解決哪個問題? – tripleee

+2

'sudo chmod 700/home/*' – Cyrus

+0

如果'start.conf'是'chmod 600',那麼你描述的錯誤應該是不可能的。您可能需要添加一個檢查以讀取此文件。 ......或者,賽勒斯剛纔說的。 – tripleee

回答

4

爲什麼不簡單地使用文件權限?

chmod 700 script.sh 

就是這樣。

+0

由於人們傾向於在每個腳本上使用'chmod + x ...',因此很容易發生錯誤 – bytecode77

+0

您不應該在意這些人。 Redmond的一個大的操作系統供應商是這麼做的。你看到它結束了...... :) – hek2mgl

+1

你說得對。我認爲我不應該完全證明這一點。感謝您的領導! – bytecode77

1

這將找到符號鏈接

owner=$(stat --format '%U' $(readlink -f /bin/nameoftheuser))