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

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

LDAP のユーザ/グループ管理は 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@humane-hen-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@hpc-v292-bastion ~]$ cluster group create abc-dept
{'result': 0, 'description': 'success', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
[opc@humane-hen-bastion ~]$ cluster group create def-dept
{'result': 0, 'description': 'success', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
```


### グループのリスト

グループをリストします。先ほど作成した、 abc-dept と def-dept が確認できます。
```
[opc@humane-hen-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@humane-hen-bastion ~]$ cluster group delete def-dept
[opc@humane-hen-bastion ~]$
[opc@humane-hen-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@humane-hen-bastion ~]$
```


## ユーザ管理
ユーザの管理は user オプションで行い、add, delete, list のサブオプションがあります。
```
[opc@humane-hen-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@humane-hen-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
  -ssh, --ssh          Flag to generate a user-specific ssh-key pair for
                       passwordless ssh.
  --help               Show this message and exit.
```

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


```
[opc@humane-hen-bastion ~]$ cluster user add itokazu --ssh --name 'Kazuyuki Ito' --gid 10006 -p ''
{'result': 68, 'description': 'entryAlreadyExists', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
[opc@humane-hen-bastion ~]$ cluster user add satokaz --ssh --name 'Kazuyuki Sato' --gid 10006 -p ''
{'result': 68, 'description': 'entryAlreadyExists', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'}
```

`--ssh` をつけることでユーザの ~/.ssh 配下に authorized_keys と id_rsa が作成されます。また、鍵認証による ssh 接続を行うのでパスワードは無しとするため `-p ''` としています。
※ デフォルトではすべての IP から bastion にアクセス可能なため必ず鍵認証を利用しましょう

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

  list users

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

実行して先ほど作成したユーザが存在することを確認します。
```
[opc@humane-hen-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@humane-hen-bastion ~]$ cluster user delete --help
Usage: cluster user delete [OPTIONS] USER

  delete user

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

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

[opc@humane-hen-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@humane-hen-bastion ~]$
```

ホームディレクトリはそのまま残るので、状況に応じて個別に削除を行います。
```
[opc@humane-hen-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
```