質問編集履歴

1 記載するコードのミス

tkbmc

tkbmc score 9

2018/07/27 11:33  投稿

shell の中でユーザを切り替えて処理をする方法を教えてください。
## 前提・実現したいこと
ssh 経由の shell の中でユーザを切り替えて処理をしたいと考えています。
サーバの多段階認証のため、ユーザの切り替えが必要になっています。
shell の中でユーザを切り替え後、処理が継続できていません。
shell単独で確認すると、ユーザが切り替わったあと、待機状態になっていました。
手動で exit するともとのユーザで処理が継続されました。
切り替えたユーザで処理を進める方法を教えてください。
## 試したこと
```lang-sh
# test.sh
ssh d-test-01 "
    sudo su - test-user &&
    cd /home/project/ &&
    ls -al
    "
#!/bin/sh
whoami
cd /home/project/
sudo su - test-user
pwd
ls -al
```
```
d-app-01:/tmp$ sh test.sh
test-user@d-test-01:~$ exit
logout
/home/project/
total 400
drwxrwxrwx 14 test-user test-user  4096 Jul 26 18:08 .
drwxr-xr-x 6 test-user test-user  4096 Jul 5 18:35 ..
drwxr-xr-x 4 test-user test-user  4096 Jul 16 16:22 bin
drwxrwxr-x 3 test-user test-user  4096 Jul 3 16:30 webapp
```
sshの通信部分は確認できています。
```
# 実行するコマンド
ssh d-test-01 sh /tmp/test.sh
```
```
# config
Host d-test-01
   HostName 00.000.00.000
   User dev-user
   IdentityFile ~/.ssh/id_rsa_test
   Port 22
   TCPKeepAlive yes
   IdentitiesOnly yes
   ProxyCommand  ssh -CW %h:%p d-bastion-01
```
  • CentOS

    3598 questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Ubuntu

    2129 questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • sh

    401 questions

    shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る