2016-12-02 48 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登录。