OCI HPC Cluster: 運用・管理 - ユーザー・グループ管理 v2.10.x

:::note info
本ページは [OCI: HPC Cluster](https://qiita.com/itokazu/items/63d2e3cebdcdda5afce0) のサブページになります。
:::

HPC Clusterにおけるユーザー・グループの管理としてLDAPサーバーを利用しています。
このLDAPサーバーに対するユーザ/グループの管理として`cluster`コマンド(ラッパースクリプト)が用意されています。
本記事では`cluster`コマンドによるユーザーとグループの作成、削除、リストについて解説します。

```
[opc@test-cluster-bastion ~]$ cluster --help
Usage: cluster [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  group  group commands
  user   user commands
```

## ■ グループ管理
グループ関連のオプションは group です。さらに add, create, delete, list のサブオプションがあります。
```
[opc@test-cluster-bastion ~]$ cluster group --help
Usage: cluster group [OPTIONS] COMMAND [ARGS]...

  group commands

Options:
  --help  Show this message and exit.

Commands:
  add     add user to group
  create  Add group
  delete  delete user
  list    list groups
```

### - グループの作成
例として abc-dept と def-dept を作ります。 gid を指定する場合は `--gid <id>` オプションを指定してください。
```
[opc@test-cluster-bastion ~]$ cluster group create abc-dept
{'result': 0, 'description': 'success', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
[opc@test-cluster-bastion ~]$ cluster group create def-dept
{'result': 0, 'description': 'success', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
```


### - グループのリスト

グループをリストします。先ほど作成した、 abc-dept と def-dept が確認で、GIDは10006と10007で作成されたことがわかります。
<font color="red">※GIDはユーザー作成時に指定する必要がありますので、メモしておきます。</font>
```
[opc@test-cluster-bastion ~]$ cluster group list
DN: cn=abc-dept,ou=Group,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:28:04.685871
    cn: abc-dept
    gidNumber: 10006
    objectClass: top
                 groupOfMembers
                 posixGroup

DN: cn=def-dept,ou=Group,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:28:04.686005
    cn: def-dept
    gidNumber: 10007
    objectClass: top
                 groupOfMembers
                 posixGroup
```

### - グループの削除

def-dept を削除してみます。

```
[opc@test-cluster-bastion ~]$ cluster group delete def-dept

[opc@test-cluster-bastion ~]$ cluster group list
DN: cn=abc-dept,ou=Group,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:29:49.511641
    cn: abc-dept
    gidNumber: 10006
    objectClass: top
                 groupOfMembers
                 posixGroup

[opc@test-cluster-bastion ~]$
```


## ■ ユーザ管理
ユーザの管理は user オプションで行い、add, delete, list のサブオプションがあります。
```
[opc@test-cluster-bastion ~]$ cluster user --help
Usage: cluster user [OPTIONS] COMMAND [ARGS]...

  user commands

Options:
  --help  Show this message and exit.

Commands:
  add     add user
  delete  delete user
  list    list users
```

### - ユーザ作成
ユーザ作成で指定できるオプションは以下の通りです。
```
[opc@test-cluster-bastion ~]$ cluster user add --help
Usage: cluster user add [OPTIONS] USER

  add user

Options:
  -p, --password TEXT  [required]
  -n, --name TEXT      [required]
  -i, --uid TEXT       Select the userID
  -g, --gid TEXT       Add to this groupID
  -nossh, --nossh      Flag to not generate a user-specific ssh-key pair for
                       passwordless ssh.
  --help               Show this message and exit.
```

ssh ログイン可能なユーザ itokazu と satokazu を先ほど作成した`abc-dept`グループ(--gid 10006)として作成します。


```
[opc@test-cluster-bastion ~]$ cluster user add itokazu --name 'Kazuyuki Ito' --gid 10006
Password:
Repeat for confirmation:

[opc@test-cluster-bastion ~]$ cluster user add satokaz --name 'Kazuyuki Sato' --gid 10006
Password:
Repeat for confirmation:
```
作成されたユーザーのホームディレクトリの~/.ssh 配下に authorized_keys と id_rsa が作成されます。
<font color="red">id_rsaファイルをscpなどでダウンロードし、利用者へ提供してください(<b>作成したLDAPユーザーでヘッドノードへSSHアクセスは鍵認証のみが有効です</b>）。</font>

### - ユーザのリスト
list の構文は以下の通りです。
```
[opc@test-cluster-bastion ~]$ cluster user list --help
Usage: cluster user list [OPTIONS]

  list users

Options:
  --help  Show this message and exit.
```

実行して先ほど作成したユーザが存在することを確認します。
```
[opc@test-cluster-bastion ~]$ cluster user list
DN: cn=itokazu,ou=People,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:41:12.966673
    cn: itokazu
    displayName: Kazuyuki Ito
    gecos: Kazuyuki Ito
    gidNumber: 10006
    homeDirectory: /home/itokazu
    loginShell: /bin/bash
    sn: itokazu
    uid: itokazu
    uidNumber: 10001

DN: cn=satokaz,ou=People,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:41:12.966850
    cn: satokaz
    displayName: Kazuyuki Sato
    gecos: Kazuyuki Sato
    gidNumber: 10006
    homeDirectory: /home/satokaz
    loginShell: /bin/bash
    sn: satokaz
    uid: satokaz
    uidNumber: 10006
```

### - ユーザ削除
delete の構文は以下の通りです。
```
[opc@test-cluster-bastion ~]$ cluster user delete --help
Usage: cluster user delete [OPTIONS] USER

  delete user

Options:
  --help  Show this message and exit.
```

satokaz ユーザを削除してみます。
```
[opc@test-cluster-bastion ~]$ cluster user delete satokaz
[opc@test-cluster-bastion ~]$

[opc@test-cluster-bastion ~]$ cluster user list
DN: cn=itokazu,ou=People,dc=local - STATUS: Read - READ TIME: 2022-10-02T13:45:42.690834
    cn: itokazu
    displayName: Kazuyuki Ito
    gecos: Kazuyuki Ito
    gidNumber: 10006
    homeDirectory: /home/itokazu
    loginShell: /bin/bash
    sn: itokazu
    uid: itokazu
    uidNumber: 10001

[opc@test-cluster-bastion ~]$
```

ホームディレクトリはそのまま残るので、状況に応じて個別に削除を行います。
```
[opc@test-cluster-bastion ~]$ sudo ls -la /home/satokaz
合計 16
drwx------  3 satokaz     10007  88 10月  2 13:40 .
drwxrwxr-x. 5 opc      privilege  48 10月  2 13:40 ..
-rw-------  1 satokaz     10007  18 10月  2 13:40 .bash_logout
-rw-------  1 satokaz     10007 193 10月  2 13:40 .bash_profile
-rw-------  1 satokaz     10007 231 10月  2 13:40 .bashrc
-rw-------  1 satokaz     10007 172 10月  2 13:40 .kshrc
drwx------  2 satokaz     10007  43 10月  2 13:40 .ssh
```