2017년 3월 9일 목요일

login.sh

시스템에 사용자를 추가하지 못하는 상황에서
사용자 별로 홈디렉토리 환경을 만들어야 하는 일이 생겨
가상 사용자용


1. 대표 사용자 (test) 의 .bashrc 에 login.sh 를 연결.
/home/test/.bashrc 파일
--------------------------------------------------------------------------------
...

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[31m\]\h\[\e[0m\] \[\e[33m\]\w\[\e[0m\] \$ '
. bin/login.sh
================================================================================

/home/test/bin/login.sh 파일
--------------------------------------------------------------------------------
#! /usr/bin/bash

HOME_ROOT=/home
NEW_HOME=

banner()
{
        echo
        echo "Welcome to $(hostname)."
        echo "If you want to remain as '$USER' user, press Control+C"
        echo
}

check_login()
{
        local user=
        #local pass=
        read -p "User name: " user
        #read -sp "Password: " pass

        [ -z "$user" ] && return 1
        [ "$user" = "$USER" ] && return 1
        [ ${user:0:1} = "." ] && return 1
        [ -d "$HOME_ROOT/$user" ] || return 1

        NEW_HOME="$HOME_ROOT/$user"
        return 0
}


# main
banner

# try to check up to 3 times
for t in 1 2 3; do
        check_login && break
done

[ -z "$NEW_HOME" ] && exit

export HOME="$NEW_HOME"
export USER=$(basename "$HOME")
export HISTFILE=$HOME/.bash_history
unset HOME_ROOT NEW_HOME banner check_login

cd "$HOME"
[ -f .bashrc ] && . .bashrc
history -ac $HISFILE
================================================================================

2. 추가 사용자용 홈디렉토리 생성
$ mkdir -p /home/test1/.{git,ssh}
$ touch /home/test1/.{bash,input,vim}rc

3. 로그인 및 테스트
--------------------------------------------------------------------------------
User name: test1

$ pwd
/home/test1

$ echo $USER
test1

$ whoami
test # 시스템이 인식하는 사용자는 바뀌지 않는다.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa): # 역시 바뀌지 않는다.
^C
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test1/.ssh/id_rsa.
Your public key has been saved in /home/test1/.ssh/id_rsa.pub.
The key fingerprint is:
...

$ git config --global user.email test1@test.com
$ cat ~/.gitconfig
[user]
        email = test1@test.com
================================================================================

일단은 이 정도로 만족


# 자동 로그인 매크로 - teraterm
login.ttl
--------------------------------------------------------------------------------
; Connection configuration
Host = 'host'
UserName = 'test'
VirtualUser = 'test1'
PrivateKeyfile = '암호키 파일 경로'
Prompt = 'User name: '

; Build connect message
Msg = Host
strconcat Msg ':22 /ssh /user='
strconcat Msg UserName
strconcat Msg ' /auth=publickey /keyfile='
strconcat Msg PrivateKeyfile

connect Msg

wait Prompt
sendln VirtualUser
================================================================================

> ttpmacro /V login.ttl