Crates.io | sacana |
lib.rs | sacana |
version | 1.0.0 |
source | src |
created_at | 2020-10-01 11:22:29.343036 |
updated_at | 2020-10-01 11:22:29.343036 |
description | sacana (Slackbot As Computer Account maNAger)はSlack上からコンピューター上のユーザーアカウントを操作するためのSlack botです。 |
homepage | |
repository | https://github.com/fixstars/sacana |
max_upload_size | |
id | 294987 |
size | 151,903 |
sacanaはSlack上からコンピューター上のユーザーアカウントを操作するためのSlack botです。
研究室やサークル、会社内などの共用コンピューターに導入することで、各団体のSlack上でユーザーアカウントの発行を行うことができるようになります。誰でも自由にアカウントの追加を許されている共用コンピューターの運用に際して、人手による運用コストを削減できるメリットがあります。 Slackにbotを追加するための権限と導入対象のコンピューターの管理権限が必要です。
本ソフトウェアはその特性上、セキュリティが重要な環境での導入には慎重な判断を行ってください。 本ソフトウェアの導入や利用によって発生する如何なる問題についても開発元は一切の責任を負いません。 詳しくは、後述の「ライセンス」項をご参照ください。
systemdが入ったLinux上での動作を想定しています。 Ubuntu 16.04, Ubuntu 18.04, CentOS 7.2で動作を確認しています。
cargo build --release
でビルドします。settings.json.sample
を参考に settings.json
を記述します。
SLACK_API_TOKEN
: bot用のSlackのAPIトークンを記述してください。channels
: 監視するチャンネル名をリストで記述してください。記述されたチャンネル全てを監視します。public_key_uri_format
: {}
をユーザー名に置換して公開鍵のURIが得られるような文字列を記述してください。host_list_uri
: ホストの一覧を得られるURIを記述してください。ここで、一覧は各行にホストの名前を記述したテキストファイルです。certificate_file
(オプション) : host_list_uri
のアクセス先などのSSL証明書を追加したい場合、証明書のファイル(PEM形式)のパスを記述してください。必要ない場合はこのオプションを記述する必要はありません。install.sh
を実行します。
INSTALL_DIR
環境変数にインストール先のパスを指定して install.sh
を実行すると変更できます。/etc/ssh/sshd_config
に PasswordAuthentication no
を記述します。
以下ではホスト名が HOSTNAME
のコンピューター上で次の settings.json
を用いて実行し、Slack上では @computer-account-manager
の名前でbotとして追加した場合を例にして、使い方を説明します。
{
"SLACK_API_TOKEN": "(Botユーザー @computer-account-manager のトークン)",
"channels": ["computer-account"],
"public_key_uri_format": "https://github.com/{}.keys",
"host_list_uri": "https://example.net/host_list.txt"
}
また、 https://example.net/host_list.txt
の中身は以下のようになります。
HOSTNAME
HOSTNAME2
public_key_uri_format
のURIは必ずしもgitリポジトリのホスティングサービスのものである必要はありません。@computer-account-manager create HOSTNAME
と発言します。
public_key_uri_format
から取得した公開鍵の登録も行われます。passwd
コマンドでパスワードを設定しましょう。@computer-account-manager update HOSTNAME
と発言します。
$HOME/.ssh/authorized_keys
が存在する場合上書きされます。@computer-account-manager join GROUPNAME HOSTNAME
と発言すると参加できます。
sudo
グループや wheel
グループに参加できてしまうため、管理者権限を利用者全員に付与したくない環境での利用は十分注意してください。@computer-account-manager ping
と発言すると起動しているbotからスレッドに pong@HOSTNAME
と返信が来ます。@computer-account-manager
にDMで help
と送ることでヘルプを見ることができます。
host_list
で最初に書かれたホスト上のbotサービスが正常に稼働している必要があります。systemctl restart sacana
を実行します。help
コマンドなどの応答を行うので、一覧の一番上のホスト名には気をつけてください。systemctl stop sacana && systemctl disable sacana
を実行します。@computer-account-manager ping
コマンドでホスト一覧に記載されているコンピューターすべてで正常にサービスが動作していることを確認します。
まず、@computer-account-manager ping
コマンドでpong
が返ってくることを確認してください。
目安として、1分以上経っても目的のコンピューターから応答が返ってこないなら、サービスが起動していない可能性があります。その場合は以下の手順に従ってサービスの再起動を行います。
systemctl restart sacana
を実行します。
再起動によって"Hello, this is sacana@xxxx"と応答があったら、コマンドを再入力してください。/var/log/syslog*
にあるので、grep sacana
で確認します。help
の場合 / コマンドが間違っている場合DMでの help
コマンドや、コマンドを間違えた場合の返答はホスト一覧の一番上のホストが行っています。
これらの場合はホスト一覧の一番上のホストについて確認してください。
ホスト自体は正常でもホスト一覧側の記載がタイプミスなどで間違っている可能性もあります。
例えばpublic_key_uri_format
で指定したリンク先がGitHubの場合、Slackの表示名がGitHubのアカウント名と異なるとアカウントを作ることができません。
その場合はSlackのプロフィール設定から表示名を適切なものに設定してください。
また、GitHubに公開鍵が登録されていない場合もログインできません。
その場合はまずGitHubに公開鍵を登録した後、 @computer-account-manager update HOSTNAME
でHOSTNAME上のアカウントの公開鍵を更新します。
本プロジェクトは
のデュアルライセンスです。