> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/vi/quan-ly-nguoi-dung-va-du-an/user-management.md).

# Quản lý người dùng

## Tạo người dùng quản trị viên

Các bản triển khai Overleaf Toolkit:

{% code title="Overleaf Toolkit" overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/create-user --admin --email=joe@example.com"
```

{% endcode %}

Các bản triển khai docker-compose.yml kiểu cũ:

{% code title="docker-compose kiểu cũ" overflow="wrap" %}

```bash
$ docker exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/create-user --admin --email=joe@example.com"
```

{% endcode %}

Lệnh này sẽ tạo một người dùng với địa chỉ email được cung cấp nếu họ chưa tồn tại, và biến họ thành quản trị viên. Kết quả của lệnh bao gồm một URL để truy cập, nơi bạn có thể đặt mật khẩu cho người dùng này và đăng nhập lần đầu tiên.

{% hint style="info" %}
Với cách tiếp cận theo chương trình, bạn cũng có thể dùng cùng một script để tạo cả người dùng thường lẫn quản trị viên. Với người dùng thường, hãy bỏ cờ --admin.
{% endhint %}

Nếu bạn dùng tài khoản nội bộ để xác thực và cần nâng một người dùng hiện có lên thành quản trị viên của instance hoặc thu hồi quyền quản trị, hãy làm như sau:

{% stepper %}
{% step %}

### Thông qua giao diện quản trị

* Đăng nhập bằng tài khoản quản trị viên hiện có.
* Nhấp vào Admin -> Manage Users.
* Tìm người dùng và nhấp vào địa chỉ email của họ.
* Cuộn xuống phần Site Admin và nhấp vào liên kết (show).
* Chọn hộp Is Site Admin.
* Nhấp Save để hoàn tất.
  {% endstep %}
  {% endstepper %}

***

## Xóa người dùng

Như đã giải thích trong hướng dẫn của chúng tôi về [hiểu việc sử dụng giấy phép](broken://pages/0c024f16de2c13ae07e50396819a2a6eabee9aae), nhìn chung nên tránh xóa tài khoản trừ khi chúng không còn cần thiết nữa. Việc xóa một tài khoản sẽ xóa tài khoản đó và khiến những người cộng tác mất quyền truy cập vào các dự án. Hiện tại không có cách nào để vô hiệu hóa tài khoản — chúng либо tồn tại với dữ liệu được lưu giữ hoặc bị xóa.

Theo mặc định, tài khoản được xóa mềm. Để biết thông tin về cách xóa vĩnh viễn người dùng khỏi instance của bạn, hãy xem `ENABLE_CRON_RESOURCE_DELETION` trong [Biến môi trường](broken://pages/556eaeb4dddcb30f8e61eab36f50573c660f1752) hướng dẫn.

{% hint style="info" %}
Tài khoản được xóa mềm theo mặc định. Xem `ENABLE_CRON_RESOURCE_DELETION` để biết hành vi xóa vĩnh viễn.
{% endhint %}

### Qua Admin -> Manage Users

{% stepper %}
{% step %}

* Đăng nhập với tư cách quản trị viên.
* Nhấp vào Admin -> Manage Users.
* Tìm người dùng và chọn hộp bên cạnh địa chỉ email của họ.
* Nhấp vào biểu tượng thùng rác.
* Nhấp Delete để xác nhận.
  {% endstep %}
  {% endstepper %}

### Qua dòng lệnh

Tài khoản người dùng (và các dự án của họ) có thể được xóa bằng các lệnh sau.

Các bản triển khai Overleaf Toolkit:

{% code title="Overleaf Toolkit" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/delete-user.mjs --email=joe@example.com"
```

{% endcode %}

Các bản triển khai docker-compose.yml kiểu cũ:

{% code title="docker-compose kiểu cũ" %}

```bash
$ docker exec sharelatex /bin/bash -ce "cd /overleaf/services/web && node modules/server-ce-scripts/scripts/delete-user.mjs --email=joe@example.com"
```

{% endcode %}

{% hint style="danger" %}
Script xóa sử dụng một tùy chọn force được mã hóa cứng, đảm bảo quá trình xóa vẫn tiếp tục ngay cả khi email xóa tài khoản không gửi được (ví dụ: khi email của người dùng không còn hoạt động).
{% endhint %}

{% hint style="info" %}
Kể từ phiên bản 5.5.0, có thể dùng tùy chọn --skip-email để ngăn gửi email thông báo tới người dùng đã bị xóa.
{% endhint %}

***

## Khôi phục người dùng đã xóa mềm

Nếu một người dùng chỉ bị xóa mềm, bạn có thể khôi phục tài khoản và các dự án của họ.

{% stepper %}
{% step %}

* Đăng nhập với tư cách quản trị viên.
* Nhấp vào Admin -> Manage Users.
* Tìm người dùng bạn muốn khôi phục.
* Nhấp vào nút Hiển thị người dùng đã xóa.
* Nhấp vào địa chỉ email của người dùng đã bị xóa.
* Nhấp Khôi phục tài khoản này.
* Nhấp Khôi phục để xác nhận.
  {% endstep %}
  {% endstepper %}

{% hint style="danger" %}
Khi ENABLE\_CRON\_RESOURCE\_DELETION được đặt thành true, các tài khoản đã xóa mềm có thể được khôi phục trong vòng 90 ngày. Sau 90 ngày, việc khôi phục tài khoản là không thể.
{% endhint %}

***

## Đếm số người dùng

Bạn có thể lấy số lượng người dùng qua giao diện quản trị tại <https://you-instance-url/admin/user#license>. Đối với các kiểm tra và xuất dữ liệu theo chương trình, các ví dụ sau có thể hữu ích.

Tổng số người dùng:

{% code title="Tổng số người dùng" %}

```bash
echo 'db.users.countDocuments()' | docker exec -i mongo mongosh --quiet localhost/sharelatex
# overleaf [direct: primary] sharelatex> 16
```

{% endcode %}

Tổng số người dùng sử dụng điểm cuối metrics:

{% code title="Số người dùng đang hoạt động từ metrics" %}

```bash
docker exec sharelatex curl http://127.0.0.1:3000/metrics | grep num_active_users
# # HELP num_active_users num_active_users
# # TYPE num_active_users gauge
# num_active_users{app="web-api",host="b3ae4ff549d8"} 16
```

{% endcode %}

Tổng số người dùng đang hoạt động (ví dụ: người dùng hoạt động trong 365 ngày gần đây):

{% code title="Tổng số người dùng đang hoạt động" %}

```bash
echo 'db.users.countDocuments({ lastActive: { $gte: new Date(new Date().getTime() - (365 * 24 * 60 * 60 * 1000)) } })' | docker exec -i mongo mongosh --quiet localhost/sharelatex
# overleaf [direct: primary] sharelatex> 10
```

{% endcode %}

***

## Cập nhật thông tin tài khoản người dùng

Cách cập nhật tài khoản được thực hiện phụ thuộc vào việc SSO có được bật hay không.

* Nếu không dùng SSO:
  * Quản trị viên có thể sửa thông tin tài khoản người dùng qua Admin -> Manage Users (email, tên, họ, và tạo liên kết đặt lại mật khẩu).
  * Người dùng thường có thể cập nhật thông tin của chính họ qua Account -> Account Settings (bao gồm đổi mật khẩu và tạo token xác thực Git).
* Nếu dùng SSO:
  * Server Pro có thể được cấu hình để cập nhật tên và họ của người dùng khi đăng nhập dựa trên hệ thống xác thực.
  * Khi OVERLEAF\_SAML\_UPDATE\_USER\_DETAILS\_ON\_LOGIN hoặc OVERLEAF\_LDAP\_UPDATE\_USER\_DETAILS\_ON\_LOGIN là true, biểu mẫu thông tin người dùng tại <https://your-instance-url/user/settings> sẽ bị vô hiệu hóa và tên/họ chỉ có thể được đặt trong hệ thống quản lý danh tính của bạn.

Để biết thêm chi tiết, xem:

* Cấu hình SAML 2.0: <https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/saml-2.0>
* Cấu hình LDAP: <https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/server-pro-only-configuration/ldap>

***

Cập nhật lần cuối 4 tháng trước

Trang tài liệu này chứa các liên kết đến các hướng dẫn và trang cấu hình bên ngoài. Tất cả các liên kết và tham số truy vấn được giữ nguyên như trong nội dung gốc.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/vi/quan-ly-nguoi-dung-va-du-an/user-management.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
