Comandos de usuarios y grupos

Resumen

Esta página es la referencia de los comandos occ que crean y gestionan las cuentas de usuario y sus tokens de autenticación (user), los grupos y sus miembros (group), la autenticación de dos factores (twofactorauth) y las etiquetas del sistema (tag), con ejemplos y su salida. Está dirigida a quienes administran el servidor.

Fuente: documentación de Nextcloud, «admin_manual/occ_users», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.

Comandos de usuario

Los comandos user crean y gestionan cuentas de usuario, restablecen contraseñas, gestionan los tokens de autenticación e informan sobre la actividad de los usuarios:

user
 user:add                            adds a user
 user:add-app-password               (deprecated) alias for user:auth-tokens:add
 user:auth-tokens:add                add an app password for an account
 user:auth-tokens:delete             delete an authentication token
 user:auth-tokens:list               list authentication tokens for an account
 user:clear-avatar-cache             clear avatar cache
 user:delete                         deletes the specified user
 user:disable                        disables the specified user
 user:enable                         enables the specified user
 user:info                           show information about a user
 user:keys:verify                    verify the stored public key matches the stored private key
 user:lastseen                       show when a user was last logged in
 user:list                           list all registered users
 user:profile                        read and modify user profile data
 user:report                         show how many users have access
 user:resetpassword                  reset the password for a user
 user:setting                        read and modify user settings
 user:sync-account-data              sync user backend data to the accounts table
 user:welcome                        send the welcome email to a user

user:add

Crear un usuario nuevo con un nombre mostrado, un nombre de inicio de sesión y, opcionalmente, su pertenencia a grupos:

user:add [--password-from-env] [--generate-password] [--display-name[="..."]] [-g|--group[="..."]] [--email EMAIL] uid

display-name corresponde al Nombre completo de la página Usuarios de la interfaz web de APS Conecta Gestión, y uid es su Nombre de usuario (nombre de inicio de sesión). Los grupos que no existen se crean automáticamente:

sudo -E -u www-data php occ user:add --display-name="Layla Smith" \
  --group="users" --group="db-admins" layla
  Enter password:
  Confirm password:
  The user "layla" was created successfully
  Display name set to "Layla Smith"
  User "layla" added to group "users"
  User "layla" added to group "db-admins"

--password-from-env lee la contraseña de la variable de entorno OC_PASS. Así la contraseña no aparece en la lista de procesos y se puede automatizar con scripts la creación de varios usuarios. Hay que tener en cuenta que sudo elimina las variables de entorno de forma predeterminada; la opción -E las conserva, como se muestra en el ejemplo siguiente:

export OC_PASS=newpassword
sudo -E -u www-data php occ user:add --password-from-env \
  --display-name="Layla Smith" --group="users" layla
The user "layla" was created successfully
Display name set to "Layla Smith"
User "layla" added to group "users"

--generate-password establece una contraseña generada de forma segura que nunca se muestra en la salida. Combinada con --email, crea un usuario con una contraseña temporal y le envía un correo electrónico de bienvenida:

sudo -E -u www-data php occ user:add layla --generate-password --email layla@example.tld
  The account "layla" was created successfully
  Welcome email sent to layla@example.tld

--email establece la dirección de correo electrónico del usuario y envía un correo electrónico de bienvenida si newUser.sendEmail está establecido en yes en la configuración de la app core, o si no está establecido en absoluto (yes es el valor predeterminado):

sudo -E -u www-data php occ user:add layla --email layla@example.tld
  Enter password:
  Confirm password:
  The account "layla" was created successfully
  Welcome email sent to layla@example.tld

user:resetpassword

Restablecer la contraseña de cualquier usuario, incluidos los administradores (ver Restablecer una contraseña de administrador perdida):

sudo -E -u www-data php occ user:resetpassword layla
  Enter a new password:
  Confirm the new password:
  Successfully reset password for layla

Borrar la contraseña de un usuario con --no-password:

sudo -E -u www-data php occ user:resetpassword --no-password layla
  Are you sure you want to clear the password for layla?
  Successfully reset password for layla

También se puede usar --password-from-env para restablecer contraseñas de forma no interactiva:

export OC_PASS=newpassword
sudo -E -u www-data php occ user:resetpassword --password-from-env layla
  Successfully reset password for layla

user:delete

Eliminar un usuario:

sudo -E -u www-data php occ user:delete layla

user:disable y user:enable

Desactivar un usuario. Sus sesiones activas se invalidarán en un plazo de 5 minutos. Para invalidar las sesiones de inmediato, usar user:auth-tokens:delete antes o después de desactivar la cuenta:

sudo -E -u www-data php occ user:disable <username>

Volver a activar un usuario desactivado:

sudo -E -u www-data php occ user:enable <username>

user:lastseen

Mostrar el inicio de sesión más reciente de un usuario concreto:

sudo -E -u www-data php occ user:lastseen layla
  layla's last login: 2024-03-20 17:18

Mostrar el inicio de sesión más reciente de todos los usuarios:

sudo -E -u www-data php occ user:lastseen --all
  albert's last login: 2024-03-18 10:30
  bob has never logged in.
  layla's last login: 2024-03-20 17:18
  stephanie's last login: 2024-01-11 13:26

user:list

Listar todos los usuarios registrados. De forma predeterminada, la salida se limita a 500 usuarios; usar --limit y --offset para recorrer por páginas conjuntos más grandes:

sudo -E -u www-data php occ user:list
  - admin: admin
  - layla: Layla Smith
  - fred: Fred Jones

Usar --disabled para listar solo los usuarios desactivados, y --info para incluir detalles adicionales del backend.

user:info

Mostrar los detalles de la cuenta de un usuario, incluidos el nombre mostrado, el correo electrónico, los grupos, la cuota y el uso de almacenamiento:

sudo -E -u www-data php occ user:info layla
  - user_id: layla
  - display_name: Layla Smith
  - email: layla@example.tld
  - cloud_id: layla@cloud.example.tld
  - enabled: true
  - groups:
    - users
    - db-admins
  - quota: none
  - storage:
    - free: 162409623552
    - used: 1110
    - total: 162409624662
    - relative: 0
    - quota: -3
  - first_seen: 2024-03-01T08:44:46+00:00
  - last_seen: 2024-03-20T17:18:00+00:00
  - user_directory: /var/www/nextcloud/data/layla
  - backend: Database

user:profile

Leer las propiedades del perfil de un usuario:

sudo -E -u www-data php occ user:profile layla
  - displayname: Layla Smith
  - address: Berlin
  - email: layla@example.tld
  - profile_enabled: 1
  - pronouns: they/them

Obtener una sola propiedad del perfil:

sudo -E -u www-data php occ user:profile layla address
  Berlin

Establecer una propiedad del perfil:

sudo -E -u www-data php occ user:profile layla address Stuttgart

Eliminar una propiedad del perfil:

sudo -E -u www-data php occ user:profile layla address --delete

user:setting

Leer los ajustes de un usuario:

sudo -E -u www-data php occ user:setting layla
  - core:
    - lang: en
  - login:
    - lastLogin: 1465910968
  - settings:
    - email: layla@example.tld

Filtrar por app:

sudo -E -u www-data php occ user:setting layla core
  - core:
    - lang: en

Obtener un solo ajuste:

sudo -E -u www-data php occ user:setting layla core lang
en

Establecer un ajuste:

sudo -E -u www-data php occ user:setting layla settings email "new-layla@example.tld"

Eliminar un ajuste:

sudo -E -u www-data php occ user:setting layla settings email --delete

user:report

Mostrar el recuento de todos los usuarios, incluidos los usuarios de backends de autenticación externos, como LDAP:

sudo -E -u www-data php occ user:report
+------------------+----+
| User Report      |    |
+------------------+----+
| Database         | 12 |
| LDAP             | 86 |
|                  |    |
| total users      | 98 |
|                  |    |
| user directories | 2  |
| active users     | 15 |
| disabled users   | 0  |
+------------------+----+

Los usuarios activos son los que han iniciado sesión al menos una vez. Los usuarios que nunca han iniciado sesión no se cuentan como activos ni como desactivados. Algunos backends no admiten el recuento de usuarios y pueden aparecer con cero.

user:auth-tokens:list

Listar todos los tokens de autenticación activos (sesiones y contraseñas de aplicación) de un usuario:

sudo -E -u www-data php occ user:auth-tokens:list layla
+----+------------------+---------------------------+-----------+------------+
| id | name             | lastActivity              | type      | scope      |
+----+------------------+---------------------------+-----------+------------+
| 42 | Firefox on Linux | 2024-03-20T17:18:00+00:00 | temporary | filesystem |
| 47 | Backup script    | 2024-03-19T08:00:00+00:00 | permanent | filesystem |
+----+------------------+---------------------------+-----------+------------+

Usar --output=json o --output=json_pretty para obtener una salida legible por máquina.

user:auth-tokens:add

Crear una contraseña de aplicación para un usuario. Si no se proporciona la contraseña de inicio de sesión, el token generado tendrá capacidades limitadas (las operaciones que requieren la contraseña de inicio de sesión fallarán):

sudo -E -u www-data php occ user:auth-tokens:add --name="Backup script" layla
  Enter password:
  app password: kFrH9-TXk4s-gUoOQ-KOVH8

Usar --password-from-env para leer la contraseña de inicio de sesión de NC_PASS de forma no interactiva:

export NC_PASS=userpassword
sudo -E -u www-data php occ user:auth-tokens:add --name="CI runner" \
  --password-from-env layla

user:auth-tokens:delete

Eliminar un token concreto por su ID (obtenido con user:auth-tokens:list):

sudo -E -u www-data php occ user:auth-tokens:delete layla 47

Eliminar todos los tokens de un usuario que no se han usado desde una fecha dada:

sudo -E -u www-data php occ user:auth-tokens:delete layla \
  --last-used-before="2024-01-01"

user:clear-avatar-cache

Borrar las imágenes de avatar en caché de todos los usuarios. Es útil después de cambiar los ajustes de almacenamiento de avatares o después de migrar datos de usuario:

sudo -E -u www-data php occ user:clear-avatar-cache

user:keys:verify

Verificar que la clave pública almacenada de un usuario coincide con su clave privada almacenada. Devuelve una confirmación o un aviso de discrepancia. Es útil para diagnosticar problemas del cifrado de extremo a extremo:

sudo -E -u www-data php occ user:keys:verify layla
  Stored public key matches stored private key

user:sync-account-data

Sincronizar los datos de usuario de los backends de usuario configurados (LDAP, SAML, etc.) con la tabla de cuentas de APS Conecta Gestión. Es útil después de cambios en el backend, para asegurar que los datos del perfil, las direcciones de correo electrónico y los nombres mostrados estén al día:

sudo -E -u www-data php occ user:sync-account-data
  layla - updated

Usar --limit y --offset para procesar los usuarios por lotes.

user:welcome

Enviar el correo electrónico de bienvenida a un usuario. La instancia debe tener una configuración de correo electrónico que funcione:

sudo -E -u www-data php occ user:welcome layla

Añadir --reset-password para incluir en el correo electrónico un enlace para restablecer la contraseña:

sudo -E -u www-data php occ user:welcome --reset-password layla

Comandos de grupo

Los comandos group crean y gestionan los grupos y sus miembros:

group
 group:add                           add a group
 group:adduser                       add a user to a group
 group:delete                        remove a group
 group:info                          show information about a group
 group:list                          list configured groups
 group:removeuser                    remove a user from a group

group:add

Crear un grupo nuevo:

sudo -E -u www-data php occ group:add milliways

group:adduser y group:removeuser

Añadir uno o varios usuarios existentes al grupo indicado con el comando group:adduser. La sintaxis es:

group:adduser <gid> <uid1> [uid2 ... uidN]

Este ejemplo añade los usuarios «denis», «dora» y «daisy» al grupo existente «milliways»:

sudo -E -u www-data php occ group:adduser milliways denis dora daisy

Se pueden quitar uno o varios usuarios del grupo con el comando group:removeuser. Este ejemplo quita los usuarios existentes «denis», «dora» y «daisy» del grupo existente «milliways»:

sudo -E -u www-data php occ group:removeuser milliways denis dora daisy

group:delete

Eliminar un grupo. Esto no elimina a los usuarios del grupo. El grupo admin no se puede eliminar:

sudo -E -u www-data php occ group:delete milliways

group:list

Listar los grupos configurados. Opcionalmente, filtrar por una cadena de búsqueda:

sudo -E -u www-data php occ group:list
  - admin:
    - admin
  - milliways:
    - layla
  - users:
    - layla

sudo -E -u www-data php occ group:list milli
  - milliways:
    - layla

Usar --limit y --offset para recorrer por páginas un gran número de grupos. Usar --info para incluir el backend de cada grupo. Usar --output=json o --output=json_pretty para obtener una salida legible por máquina.

group:info

Mostrar los detalles de un grupo, incluidos sus miembros y su backend:

sudo -E -u www-data php occ group:info admin
  - groupID: admin
  - displayName: admin
  - backends:
    - Database

Usar --output=json_pretty para obtener una salida legible por máquina.

Autenticación de dos factores

Los comandos twofactorauth gestionan la imposición obligatoria de la autenticación de dos factores (2FA) y el estado de los proveedores:

twofactorauth
 twofactorauth:cleanup               clean up provider associations for a removed provider
 twofactorauth:disable               disable 2FA for a user (provider-specific)
 twofactorauth:enable                enable 2FA for a user (provider-specific)
 twofactorauth:enforce               enforce or disable mandatory 2FA globally or per group
 twofactorauth:state                 show the 2FA state for a user

twofactorauth:disable y twofactorauth:enable

Si un usuario pierde el acceso a su segundo factor (por ejemplo, por la pérdida del teléfono), un administrador puede desactivar la 2FA de ese usuario para un proveedor concreto:

sudo -E -u www-data php occ twofactorauth:disable <uid> <provider_id>

Volver a activar la 2FA del usuario:

sudo -E -u www-data php occ twofactorauth:enable <uid> <provider_id>

Nota

No todos los proveedores de 2FA permiten activarla o desactivarla por usuario mediante occ.

twofactorauth:enforce

Imponer la 2FA a todos los usuarios:

sudo -E -u www-data php occ twofactorauth:enforce --on
  Two-factor authentication is enforced for all users

Imponer la 2FA solo a grupos concretos, excluyendo opcionalmente otros:

sudo -E -u www-data php occ twofactorauth:enforce --on \
  --group=admin --group=finance --exclude=service-accounts
  Two-factor authentication is enforced for members of the group(s) admin, finance

Desactivar la imposición:

sudo -E -u www-data php occ twofactorauth:enforce --off
  Two-factor authentication is not enforced

twofactorauth:state

Mostrar si la 2FA está activada e impuesta, y qué proveedores están activos para un usuario:

sudo -E -u www-data php occ twofactorauth:state layla
  Two-factor authentication is not enabled for user layla

  Disabled providers:
  - backup_codes
  - totp

twofactorauth:cleanup

Eliminar las asociaciones de proveedor de 2FA almacenadas de un proveedor que se ha desinstalado. Esto limpia los datos obsoletos después de quitar una app de 2FA:

sudo -E -u www-data php occ twofactorauth:cleanup <provider_id>

Etiquetas del sistema

Las etiquetas del sistema son etiquetas gestionadas por el administrador que se pueden asignar a archivos para usarlas en flujos de trabajo y acciones automatizadas.

Las etiquetas tienen tres niveles de acceso:

Nivel

Visible¹

Asignable²

público

Sí

Sí

restringido

Sí

No

invisible

No

No

¹ El usuario puede ver la etiqueta
² El usuario puede asignar la etiqueta a un archivo

Ver Etiquetado automatizado de archivos para los casos de uso típicos de las etiquetas restringidas e invisibles, como la retención y el control de acceso.

tag:list

Listar todas las etiquetas del sistema:

sudo -E -u www-data php occ tag:list
  - 1:
    - name: confidential
    - access: restricted
  - 2:
    - name: needs-review
    - access: public

tag:add

Crear una etiqueta del sistema nueva:

sudo -E -u www-data php occ tag:add confidential restricted
  - id: 1
  - name: confidential
  - access: restricted

tag:edit

Renombrar una etiqueta o cambiar su nivel de acceso. Usar el ID de la etiqueta que muestra tag:list:

sudo -E -u www-data php occ tag:edit --name "reviewed" --color="" 2
  Tag updated ("reviewed", true, true, "")

--name y --access son opcionales. --color="" debe pasarse explícitamente debido a un problema conocido del comando.

tag:delete

Eliminar una etiqueta por su ID:

sudo -E -u www-data php occ tag:delete 1
  The specified tag was deleted

Asignación de etiquetas a archivos

Añadir una o varias etiquetas a un archivo o directorio (indicado por su ID de archivo o por su ruta). El argumento access identifica qué etiqueta aplicar: como dos etiquetas pueden compartir el mismo nombre pero tener niveles de acceso distintos, se necesitan tanto el nombre como el nivel de acceso para identificar una etiqueta de forma única. Si no existe ninguna etiqueta que coincida, se crea automáticamente:

sudo -E -u www-data php occ tag:files:add /layla/files/report.pdf confidential restricted
  restricted tag named confidential added.

Se pueden indicar varias etiquetas como una lista separada por comas. Todas las etiquetas de una misma llamada deben compartir el mismo nivel de acceso.

Quitar etiquetas concretas de un archivo:

sudo -E -u www-data php occ tag:files:delete /layla/files/report.pdf confidential restricted

Quitar todas las etiquetas de un archivo:

sudo -E -u www-data php occ tag:files:delete-all /layla/files/report.pdf