Quantcast
Channel: (っ´∀`)っ ゃー
Viewing all articles
Browse latest Browse all 181

iOS12のショートカットをSSHクライアントにしてsudoしてみるなど

$
0
0

みなさんこんにちは。9月18日からiOS12が降ってきましたね。私はすっかりSiriショートカットに夢中です。だって、そのままSSHクライアントにできるんですよ?

一般ユーザで実行したコマンドやシェルスクリプトの標準出力がそのままスマホに返ってきて、しかもクリップボードに一撃でコピーできる(そしてiOS上のアプリにペーストできる)のはわかったのですが、SSH接続先でroot権限のコマンドを使いたいじゃないですか。というわけで実験してみました。

iPhone X 256GB SIMフリー スペースグレイ iPhone X 256GB SIMフリー スペースグレイ

まずは普通にrootでログインしてみた

まずは、さくらのクラウドのCentOS7のイメージを起動直後、一般ユーザを作った後のスクリーンショットです。ディストリビューションのバージョンは以下の通り。

$ cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core)

ユーザ作成するところのコマンドは省略しましたが、 /home の下に一般ユーザができていることが、おわかりいただけたと思います。本来ですと root ユーザが、しかもSSHの標準ポート TCP/22 で直接ログインできてしまうのは危険ですので、よしなに設定変更してください。設定変更にあたっては

https://nullpopopo.blogcube.info/2017/08/ssh-allow-only-fixedipaddress.html

[SSH][CentOS7] 特定のユーザを固定IPアドレスからのみ接続許可する

こちらをご参考いただけると幸いです。

一般ユーザにパスワードを与える

先ほど作成したばかりのユーザですので、まだパスワードをつけていませんので、パスワードをつけましょう。なお、シェルプロンプトで対話を求められると(予想はしていましたが)後続の処理ができないので、 passwd コマンドに標準出力を食わせて非対話的にパスワードを与えることにします。

例えば「hamada」ユーザのパスワードを「hogehoge」にしたい場合はこうします。

# echo hogehoge | passwd --stdin hamada
ユーザ hamada のパスワードを変更。
passwd: すべての認証トークンが正しく更新できました

一般ユーザでログインしてみる

Siriショートカットの「SSH経由でスクリプトを実行」に設定したユーザをrootから一般ユーザに、パスワードも先ほど設定したものに変更して id コマンドを実行してみます。

uid gid ともに 0 ではないので、 root ユーザではない、ということになります。

Siriショートカットからsudoをつけてコマンドを実行してみよう

ここでは省略していますが、一般ユーザ hamada を /etc/sudoers に追加して /root 以下を ls してみました。

問題なく /root 以下が見えていますね。と、ここで疑問です。 Siriショートカットは仮想端末なのだろうか?と。 /etc/sudoers を見てみると、「Defaults requiretty」の記述がありません。 /etc/sudoers ファイルが含まれる sudo パッケージのバージョンは以下の通りです。

$ rpm -qf /etc/sudoers
sudo-1.8.19p2-13.el7.x86_64

なるほど最近のsudoパッケージだと、 -t オプションをつけてSSHする必要がないってことなのですね。試しに「Defaults requiretty」の記述を /etc/sudoers につけ足してみると...

案の定、Siriショートカットから sudo コマンドを実行することはできませんでした。

さらに、実験で使用したサーバーで root ユーザーの history を見てみましょう。

sh-4.2$ id
uid=1000(hamada) gid=1000(hamada) groups=1000(hamada)

sh-4.2$ sudo su -
最終ログイン: 2018/09/21 (金) 23:20:28 JST日時 pts/0

# history 
    1  visudo
    2  history

スマホからrootユーザーでログインして実行したコマンドの履歴が残っていません。

というわけで、Siriショートカットの「SSH経由でスクリプトを実行」からsudoをつけてコマンドを実行する場合は、 /etc/sudoers に「Defaults requiretty」の記述がないか、ユーザーごとに「Defaults:USERNAME !requiretty」を記述をするか、コマンド実行時に -t オプションをつければ実行できる、ということになります。

ね、簡単でしょう?

SUDO 毎朝カップ メイプルジャム135g×12個 SUDO 毎朝カップ メイプルジャム135g×12個

Viewing all articles
Browse latest Browse all 181

Trending Articles