Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/

This commit is contained in:
Translator
2024-12-31 20:42:16 +00:00
parent 4ecda9fe96
commit 92eaf7ce11
245 changed files with 9813 additions and 12533 deletions

View File

@@ -1,107 +1,103 @@
# Basic Gitea Information
# Основна інформація про Gitea
{{#include ../../banners/hacktricks-training.md}}
## Basic Structure
## Основна структура
The basic Gitea environment structure is to group repos by **organization(s),** each of them may contain **several repositories** and **several teams.** However, note that just like in github users can have repos outside of the organization.
Основна структура середовища Gitea полягає в групуванні репозиторіїв за **організаціями**, кожна з яких може містити **кілька репозиторіїв** та **кілька команд**. Однак, зверніть увагу, що, як і в github, користувачі можуть мати репозиторії поза організацією.
Moreover, a **user** can be a **member** of **different organizations**. Within the organization the user may have **different permissions over each repository**.
Більше того, **користувач** може бути **членом** **різних організацій**. У межах організації користувач може мати **різні дозволи на кожен репозиторій**.
A user may also be **part of different teams** with different permissions over different repos.
Користувач також може бути **частиною різних команд** з різними дозволами на різні репозиторії.
And finally **repositories may have special protection mechanisms**.
І нарешті, **репозиторії можуть мати спеціальні механізми захисту**.
## Permissions
## Дозволи
### Organizations
### Організації
When an **organization is created** a team called **Owners** is **created** and the user is put inside of it. This team will give **admin access** over the **organization**, those **permissions** and the **name** of the team **cannot be modified**.
Коли **організація створюється**, команда під назвою **Owners** є **створеною**, і користувач потрапляє до неї. Ця команда надасть **адміністративний доступ** до **організації**, ці **дозволи** та **назва** команди **не можуть бути змінені**.
**Org admins** (owners) can select the **visibility** of the organization:
**Адміністратори організації** (власники) можуть вибрати **видимість** організації:
- Public
- Limited (logged in users only)
- Private (members only)
- Публічна
- Обмежена (тільки для авторизованих користувачів)
- Приватна (тільки для членів)
**Org admins** can also indicate if the **repo admins** can **add and or remove access** for teams. They can also indicate the max number of repos.
**Адміністратори організації** також можуть вказати, чи можуть **адміністратори репозиторіїв** **додавати або видаляти доступ** для команд. Вони також можуть вказати максимальну кількість репозиторіїв.
When creating a new team, several important settings are selected:
При створенні нової команди вибираються кілька важливих налаштувань:
- It's indicated the **repos of the org the members of the team will be able to access**: specific repos (repos where the team is added) or all.
- It's also indicated **if members can create new repos** (creator will get admin access to it)
- The **permissions** the **members** of the repo will **have**:
- **Administrator** access
- **Specific** access:
- Вказується, до яких **репозиторіїв організації члени команди зможуть отримати доступ**: конкретні репозиторії (репозиторії, до яких додана команда) або всі.
- Також вказується, **чи можуть члени створювати нові репозиторії** (творець отримає адміністративний доступ до нього)
- **Дозволи**, які **матимуть** **члени** репозиторію:
- **Адміністративний** доступ
- **Специфічний** доступ:
![](<../../images/image (118).png>)
### Teams & Users
### Команди та користувачі
In a repo, the **org admin** and the **repo admins** (if allowed by the org) can **manage the roles** given to collaborators (other users) and teams. There are **3** possible **roles**:
У репозиторії **адміністратор організації** та **адміністратори репозиторіїв** (якщо це дозволено організацією) можуть **керувати ролями**, наданими співпрацівникам (іншим користувачам) та командам. Є **3** можливі **ролі**:
- Administrator
- Write
- Read
- Адміністратор
- Запис
- Читання
## Gitea Authentication
## Аутентифікація Gitea
### Web Access
### Веб-доступ
Using **username + password** and potentially (and recommended) a 2FA.
Використовуючи **ім'я користувача + пароль** і потенційно (і рекомендовано) 2FA.
### **SSH Keys**
### **SSH ключі**
You can configure your account with one or several public keys allowing the related **private key to perform actions on your behalf.** [http://localhost:3000/user/settings/keys](http://localhost:3000/user/settings/keys)
Ви можете налаштувати свій обліковий запис з одним або кількома відкритими ключами, що дозволяє відповідному **закритому ключу виконувати дії від вашого імені.** [http://localhost:3000/user/settings/keys](http://localhost:3000/user/settings/keys)
#### **GPG Keys**
#### **GPG ключі**
You **cannot impersonate the user with these keys** but if you don't use it it might be possible that you **get discover for sending commits without a signature**.
Ви **не можете видавати себе за користувача з цими ключами**, але якщо ви їх не використовуєте, може бути можливим, що ви **будете виявлені за відправку комітів без підпису**.
### **Personal Access Tokens**
### **Персональні токени доступу**
You can generate personal access token to **give an application access to your account**. A personal access token gives full access over your account: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications)
Ви можете згенерувати персональний токен доступу, щоб **надати додатку доступ до вашого облікового запису**. Персональний токен доступу надає повний доступ до вашого облікового запису: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications)
### Oauth Applications
### Oauth додатки
Just like personal access tokens **Oauth applications** will have **complete access** over your account and the places your account has access because, as indicated in the [docs](https://docs.gitea.io/en-us/oauth2-provider/#scopes), scopes aren't supported yet:
Так само, як і персональні токени доступу, **Oauth додатки** матимуть **повний доступ** до вашого облікового запису та місць, до яких має доступ ваш обліковий запис, оскільки, як зазначено в [документації](https://docs.gitea.io/en-us/oauth2-provider/#scopes), області ще не підтримуються:
![](<../../images/image (194).png>)
### Deploy keys
### Ключі для розгортання
Deploy keys might have read-only or write access to the repo, so they might be interesting to compromise specific repos.
Ключі для розгортання можуть мати доступ лише для читання або запису до репозиторію, тому вони можуть бути цікавими для компрометації конкретних репозиторіїв.
## Branch Protections
## Захист гілок
Branch protections are designed to **not give complete control of a repository** to the users. The goal is to **put several protection methods before being able to write code inside some branch**.
Захист гілок призначений для **не надання повного контролю над репозиторієм** користувачам. Мета полягає в тому, щоб **встановити кілька методів захисту перед тим, як можна буде писати код у деякій гілці**.
The **branch protections of a repository** can be found in _https://localhost:3000/\<orgname>/\<reponame>/settings/branches_
**Захист гілок репозиторію** можна знайти за адресою _https://localhost:3000/\<orgname>/\<reponame>/settings/branches_
> [!NOTE]
> It's **not possible to set a branch protection at organization level**. So all of them must be declared on each repo.
> **Неможливо встановити захист гілки на рівні організації**. Тому всі вони повинні бути оголошені в кожному репозиторії.
Different protections can be applied to a branch (like to master):
Різні захисти можуть бути застосовані до гілки (наприклад, до master):
- **Disable Push**: No-one can push to this branch
- **Enable Push**: Anyone with access can push, but not force push.
- **Whitelist Restricted Push**: Only selected users/teams can push to this branch (but no force push)
- **Enable Merge Whitelist**: Only whitelisted users/teams can merge PRs.
- **Enable Status checks:** Require status checks to pass before merging.
- **Require approvals**: Indicate the number of approvals required before a PR can be merged.
- **Restrict approvals to whitelisted**: Indicate users/teams that can approve PRs.
- **Block merge on rejected reviews**: If changes are requested, it cannot be merged (even if the other checks pass)
- **Block merge on official review requests**: If there official review requests it cannot be merged
- **Dismiss stale approvals**: When new commits, old approvals will be dismissed.
- **Require Signed Commits**: Commits must be signed.
- **Block merge if pull request is outdated**
- **Protected/Unprotected file patterns**: Indicate patterns of files to protect/unprotect against changes
- **Вимкнути Push**: Ніхто не може пушити в цю гілку
- **Увімкнути Push**: Будь-хто з доступом може пушити, але не може примусово пушити.
- **Список дозволених обмежених Push**: Тільки вибрані користувачі/команди можуть пушити в цю гілку (але без примусового пушу)
- **Увімкнути список дозволених для злиття**: Тільки користувачі/команди зі списку дозволених можуть зливати PR.
- **Увімкнути перевірки статусу:** Вимагати, щоб перевірки статусу пройшли перед злиттям.
- **Вимагати схвалення**: Вказати кількість схвалень, необхідних перед злиттям PR.
- **Обмежити схвалення до списку дозволених**: Вказати користувачів/команди, які можуть схвалювати PR.
- **Блокувати злиття на основі відхилених оглядів**: Якщо запитуються зміни, його не можна зливати (навіть якщо інші перевірки проходять)
- **Блокувати злиття на основі офіційних запитів на огляд**: Якщо є офіційні запити на огляд, його не можна зливати
- **Скасувати застарілі схвалення**: Коли є нові коміти, старі схвалення будуть скасовані.
- **Вимагати підписаних комітів**: Коміти повинні бути підписані.
- **Блокувати злиття, якщо запит на злиття застарілий**
- **Захищені/незахищені шаблони файлів**: Вказати шаблони файлів для захисту/незахисту від змін
> [!NOTE]
> As you can see, even if you managed to obtain some credentials of a user, **repos might be protected avoiding you to pushing code to master** for example to compromise the CI/CD pipeline.
> Як ви можете бачити, навіть якщо вам вдалося отримати деякі облікові дані користувача, **репозиторії можуть бути захищені, що заважає вам пушити код до master**, наприклад, для компрометації CI/CD конвеєра.
{{#include ../../banners/hacktricks-training.md}}