Nextcloudの管理用CLI「occ」詳細： グループ管理に関するコマンド群

# はじめに
NextcloudにはCLI環境として`occ`というものがあり、さまざまな設定、管理を行うことができます。 ここではoccで使える様々なコマンド群のうち、グループ管理に関するコマンド群についてまとめてみます。

※occ の使い方については、 [Nextcloudの管理用CLI「occ」コマンドについて](https://qiita.com/S_Katz/items/99b9319127d956b22e7b)の記事を参照ください。

# 環境について
ここで記載するoccを実行するNextcloudのバージョンは、2019年3月2日現在で最新の`15.0.5`を利用します。  
WebサーバはNginxを利用した環境で実施しております。ApacheをWebサーバとして利用している場合は、`sudo -u` のユーザIDを`apache`に読み替えてください。

# グループ管理に関するコマンド群
ユーザ管理に関するコマンドは以下のようなものがあります。

- group:add
- group:adduser
- group:delete
- group:list
- group:removeuser

## group:list
登録済みグループとグループに属しているユーザのリストを出力します。  

### 使い方
`group:list [オプション]`

#### オプション
- `-l, --limit[=LIMIT]`
取得するユーザ数を指定します。このオプションを指定しない場合のデフォルト値は`500`です。
- `-o, --offset[=OFFSET]`
取得するユーザを何番目から出力するかを指定します。このオプションを指定しない場合のデフォルト値は`0`(=先頭)です。
- `--output=[OUTPUT]`
ユーザ情報の出力フォーマットを指定します。指定できるフォーマットは次のとおりです。
  - `plain`: 普通の出力 (オプション未指定の場合のデフォルト)
  - `json`: JSON形式
  - `json_pretty`: 整形されたJSON形式

### 使用例
①全登録グループ(先頭から500グループまで)のリストを出力する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:list
  - admin:
    - admin
  - 技術第一課:
    - ichiro.satoh
  - 技術第二課:
    - jiro.tanaka
  - 技術部:
    - ichiro.satoh
    - jiro.tanaka
  - 総務部:
    - hanako.suzuki
    - miki.morita
```
②登録ユーザのうち先頭から3グループ分のリストを出力する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:list -l 3
  - admin:
    - admin
  - 技術第一課:
    - ichiro.satoh
  - 技術第二課:
    - jiro.tanaka
```
③登録ユーザのうち先頭から2番目以降で2グループ件分のリストを整形されたJSON形式で出力する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:list --offset=2 --limit=2 --output=json_pretty
{
    "\u6280\u8853\u7b2c\u4e8c\u8ab2": [
        "jiro.tanaka"
    ],
    "\u6280\u8853\u90e8": [
        "ichiro.satoh",
        "jiro.tanaka"
    ]
}
```

## group:add
グループを追加します。

### 使い方
`group:add <グループ名>`

#### グループ名
グループ名を指定します。日本語文字などのマルチバイト文字も指定することができます。

### 使用例
①`技術第三課`グループを追加する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:add 技術第三課
Created group "技術第三課"
```

## group:adduser
登録済みのグループにユーザを追加します。

### 使い方
`group:add <グループ名> <ユーザID>`

#### グループ名
ユーザを追加したい登録済みのグループ名を指定します。指定したグループ名のグループが未登録である場合は`group not found`のエラーになります。

#### ユーザID
追加したいユーザの登録済みユーザIDを指定します。指定したユーザIDのユーザが未登録である場合は`user not found`のエラーになります。
指定したグループにこのユーザが追加されている場合は正常終了します。

### 使用例
①`技術第三課`グループに`ichiro.satoh`ユーザを追加する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:adduser 技術第三課 ichiro.satoh
```

## group:delete
登録済みのグループを削除します。

### 使い方
`group:delete <グループ名>`

#### グループ名
削除したい登録済みのグループ名を指定します。指定したグループ名のグループが未登録である場合は`Group "<グループ名>" does not exist.`のエラーになります。
指定したグループに追加されているユーザが存在してもグループの削除が実行されます(ユーザは削除されません)。

### 使用例
①`技術第三課`グループを削除する。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:delete 技術第三課
Group "技術第三課" was removed
```

## group:removeuser
グループに追加されているユーザをグループから外します。

### 使い方
`group:removeuser <グループ名> <ユーザID>`

#### グループ名
グループから外したいユーザが追加されているグループ名を指定します。指定したグループ名のグループが未登録である場合は`group not found`のエラーになります。

#### ユーザID
追加したいユーザの登録済みユーザIDを指定します。指定したユーザIDのユーザが未登録である場合は`user not found`のエラーになります。
指定したグループにユーザが存在していなくても処理は実行されます(ユーザは削除されません)。

### 使用例
①`技術第一課`グループに追加されている"ichiro.satoh"ユーザをグループから外す。

```
$ sudo -u nginx php /var/www/html/nextcloud/occ group:removeuser 技術第一課 ichiro.satoh
```

**★この記事は、[スタイルズ社のNextcloudサイト](https://nextcloud.stylez.co.jp/) の [Nextcloudブログ](https://nextcloud.stylez.co.jp/nextcloudblog)にも公開しております！**