ルートなしで他のユーザーでフルログインを実行する方法はありますか?

ルートなしで他のユーザーでフルログインを実行する方法はありますか?

この設定では、Microsoft Active Directory(AD)を使用してSSHを介してLinux VMにアクセスする必要があるため、従業員が退社しているときにADアカウントが無効になっているとVMにアクセスできなくなります。

すべてのデータとユーザーが設定されました。それで私が思いついた計画はこうです。

  1. 元のユーザーアカウントへのすべてのリモート/ Sshアクセスを無効にし、新しいADアカウントを介したアクセスのみを許可します。

  2. ADアカウントにSSH経由でアクセスすると、自動的に元のユーザーアカウントにログインします。

logname新しいADアカウントの代わりに元のユーザーアカウント(つまり自動的にログインしたアカウント)を印刷する必要があります。

答え1

非常に簡単に、対応するログインシェル変数を/etc/passwdリダイレクトスクリプトに置き換えることができます。

john_AD:x:1000:1000:,,,:/home/john_old:/sbin/redirect_user

スクリプトは次のとおりです。

#!/bin/bash
#autoredirect user to old login
case $USER in
   jonh_AD) oldname=john_old
#add list of users
esac

su "$oldname"

次に、AD_userが入力を介してパスワードなしで古いユーザーにログインできることを確認しますsudoers(スクリプトを使用するように調整しますsudo)。


ただし、移動時に一度実行され、将来の設定をより面倒にする「IDアップデート」スクリプトを生成することをお勧めします。これはより信頼性が高く安全であり、上記のスクリプトと同じくらいの努力が必要です。

答え2

公開鍵認証が利用可能で、sudoersリストを変更する必要がないので、代わりに使用するように編集sshされました(passed)。また、インタラクティブに実行されない場合は何もしない望ましい効果があるため、コマンドを追加しました。このスクリプトは、まだSSHクライアントを正しく設定していないユーザーのための便利なスクリプトです。loginsudo visudo/etc/bash.bashrc接続トンネル(Sshマルチホップとも呼ばれる)

接続トンネルの設定を確認したら、さらに追加します。


他の答えからインスピレーションを得ましたが、代替案があります(ADユーザーが/etc/passwd.confにリストされていないため)。

設定:

  • 1行/etc/bash.bashrc(初期ログイン時にデフォルトでこの行を実行したい場合のみ):
# Executes convenience script which prompts all white-listed users whether they wish to login as their default work user account
/bin/login_redirect

これにより、ユーザーはSSHを介してデフォルトのビジネスユーザーアカウントにログインします。

主なスクリプト:/bin/login_redirect(すべてのユーザーが実行可能である必要があります。chmod +x bin/login_redirect

!/usr/bin/env bash

generate_divider() {
    user_query="$1"
    user_query_len="${#user_query}"
    user_query_len=$((user_query_len+1))
    str=$(printf "%${user_query_len}s")
    divider="${str// /_}"
}

case "$(logname)" in
    # White-list
    12345632) work_user=dean;;
    12345633) work_user=tom;;
    12345634) work_user=mary;;
esac

work_user="${work_user:-none}"
if [ "${work_user}" != "none" ]; then
    user_query="Do you wish to login as your default work user? [Y/n]: "
    generate_divider "${user_query}"
    echo
    echo "${divider}"
    echo "[WARNING]: You are connected directly to your AD account."
    echo "           Ask the admin of this server for help"
    echo "           configuring a multi-hop ssh connection. This "
    echo "           is a convenience script written to allow"
    echo "           connection to your default work user in the"
    echo "           interim."
    read -p "${user_query}" login_ans
    login_ans="${login_ans:-Y}"
    if [ "${login_ans}" == "Y" ]; then
        echo "Username: ${work_user}"
        exec ssh -t "${work_user}"@"$(hostname)" "echo ${divider}; echo; /bin/bash;"
    fi
fi

注:login_redirect仕事用ユーザー以外のユーザーが実行している場合は、自動的にデフォルトの仕事用ユーザーとしてログインします。

関連情報