2016-12-02 46 views
-1

我們目前有幾個用戶在通過SSH登錄到服務器時使用admin用戶。他們都有自己的用戶,但不幸的是,他們仍然偶爾使用管理員。我們可以將其鎖定,並採取措施確保用戶永遠不會被使用,但我期待着看看是否有辦法強制每個登錄名輸入他們使用該用戶的原因,然後才能登錄並在他們使用管理員用戶時訪問服務器。SSH用戶響應提示

通過這種方式,我們可以輕鬆地將訪問日誌文件與員工姓名以及他們使用該用戶的原因進行比較。

有什麼想法?

+1

我投票結束這個問題,因爲它屬於[Unix&Linux](http://unix.stackexchange.com/)。 –

+0

使管理員密碼隨機。您將有2個選項。選項1:使用'sudo'。這將以管理員身份登錄用戶'sudo'。選項2:爲admin用戶使用基於ssh密鑰的身份驗證。每個人都需要向管理員用戶註冊他們的ssh密鑰。 – alvits

回答

0

這裏有一個想法

#!/bin/bash 

# if the user tries Ctrl+C to avoid this check 
trap INT no_shell_for_you 

no_shell_for_you() { exec /bin/false; } 

read -p "Your username please: " username 

if getent password "$username" >/dev/null 2>&1; then 
    echo "Welcome, $username" 
    # log $username somewhere 
    exec /bin/bash -l 
else 
    no_shell_for_you 
fi 
  1. 保存,作爲〜admin_user /斌/ get_real_user.sh
  2. 添加/full/path/to/admin_user/bin/get_real_user.sh到/etc/shells
  3. sudo chsh -s /full/path/to/admin_user/bin/get_real_user.sh admin_user

這是未經測試。測試徹底第3步之前。

+0

謝謝!這幫助我找到了正確的方向來找到答案。 –

+0

這是對虛假陳述開放。任何用戶都可以假裝是另一個。 – alvits

1

這是我會做的。

註冊每個人的ssh公鑰到管理員用戶的authorized_keys。在每個條目中,將環境EMPLOYEE設置爲employeename。這將要求PermitUserEnviroment/etc/ssh/sshd_config中設置爲yes。示例條目應如下所示。

environment="EMPLOYEE=employee1" ssh-rsa AAAAB3NzaC1y.....EU88ovYKg4GfclWGCFYTuw8== 

現在,我們有一個環境變量命名EMPLOYEE,我們可以寫一個簡單的腳本來問的原因。

創建文件/etc/profile.d/reason.sh。該文件不需要可執行,因爲它將來源。

if [[ $(whoami) = "admin" ]]; then 
    read -p "Please specify the reason for logging in as $USER user: " reason 
    if [ -z "$reason" ]; then 
     logout 
    fi 
fi 

現在你有$EMPLOYEE$reason登錄。