diff --git a/sandbox/docker_entrypoint.sh b/sandbox/docker_entrypoint.sh index 7072e07e..0439739c 100755 --- a/sandbox/docker_entrypoint.sh +++ b/sandbox/docker_entrypoint.sh @@ -16,12 +16,20 @@ if [[ $current_user_id == 0 ]]; then # Make sure the target user owns everything that Grist needs write access to. find $write_dir ! -user "$target_user" -exec chown "$target_user" "{}" + + # Make a home directory for the target user, in case anything needs to access it. + export HOME="/grist_user_homes/${target_user}" + mkdir -p "$HOME" + chown -R "$target_user":"$target_group" "$HOME" + # Restart as the target user, replacing the current process (replacement is needed for security). # Alternative tools to setpriv are: chroot, gosu. # Need to use `exec` to close the parent shell, to avoid vulnerabilities: https://github.com/tianon/gosu/issues/37 exec setpriv --reuid "$target_user" --regid "$target_group" --init-groups /usr/bin/env bash "$0" "$@" fi +# Printing the user helps with setting volume permissions. +echo "Running Grist as user $(id -u) with primary group $(id -g)" + # Validate that this user has access to the top level of each important directory. # There might be a benefit to testing individual files, but this is simpler as the dir may start empty. for dir in "${important_read_dirs[@]}"; do diff --git a/static/locales/cs.client.json b/static/locales/cs.client.json index aecbf21f..c9261b6f 100644 --- a/static/locales/cs.client.json +++ b/static/locales/cs.client.json @@ -1,22 +1,22 @@ { "AccessRules": { - "Add Column Rule": "Přidej Sloupcové Pravidlo", + "Add Column Rule": "Přidat pravidlo pro sloupec", "Lookup Column": "Vyhledávací Sloupec", "Enter Condition": "Napiš Podmínku", "Everyone Else": "Všichni Ostatní", - "Allow everyone to view Access Rules.": "Umožni všem zobrazit Přístupové Práva.", + "Allow everyone to view Access Rules.": "Umožnit všem zobrazit přístupová práva.", "Lookup Table": "Vyhledávací Tabulka", - "Add Table Rules": "Přidej Tabulkové Pravidlo", + "Add Table Rules": "Přidat pravidlo pro tabulku", "Invalid": "Neplatné", "Condition": "Podmínka", "Delete Table Rules": "Vymaž Tabulkové Pravidla", "Default Rules": "Základní Práva", - "Attribute name": "Jméno Atributu", - "Add User Attributes": "Přidej Uživatelské Atributy", - "Attribute to Look Up": "Atribut k Vyhledání", + "Attribute name": "Jméno atributu", + "Add User Attributes": "Přidat atribut pro uživatele", + "Attribute to Look Up": "Atribut k vyhledání", "Everyone": "Všichni", "Allow everyone to copy the entire document, or view it in full in fiddle mode.\nUseful for examples and templates, but not for sensitive data.": "Umožni všem kopírovat celý dokument, nebo zobrazit plně v \"fiddle\" režimu.\nUžiitečné pro ukázky a šablony, ale ne pro citlivá data.", - "Add Default Rule": "Přidej Základní Pravidlo", + "Add Default Rule": "Přidat výchozí pravidlo", "Checking...": "Kontroluji…", "Permissions": "Povolení", "Permission to view Access Rules": "Povolení na zobrazení Přistupových Pravidel", @@ -37,7 +37,7 @@ "Special Rules": "Speciální Pravidla" }, "ACUserManager": { - "Invite new member": "Pozvi nového uživatele", + "Invite new member": "Pozvat nového uživatele", "We'll email an invite to {{email}}": "Zašleme pozvánku emailem na {{email}}", "Enter email address": "Napiš e-mailovou adresu" }, diff --git a/static/locales/ru.client.json b/static/locales/ru.client.json index 5fbdc3b4..8b0523eb 100644 --- a/static/locales/ru.client.json +++ b/static/locales/ru.client.json @@ -459,7 +459,10 @@ "Python": "Python", "Python version used": "Python используемая версия", "Time Zone": "Часовой пояс", - "Try API calls from the browser": "Попробуйте вызовы API из браузера" + "Try API calls from the browser": "Попробуйте вызовы API из браузера", + "Formula times": "Время вычисления формулы", + "Only available to document editors": "Доступно только редакторам документов", + "Only available to document owners": "Доступно только владельцам документа" }, "DocPageModel": { "Add Widget to Page": "Добавить виджет на страницу", @@ -1550,7 +1553,11 @@ "Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist позволяет настраивать различные типы аутентификации, включая SAML и OIDC. Мы рекомендуем включить один из них, если Grist доступен по сети или доступен нескольким пользователям.", "Or, as a fallback, you can set: {{bootKey}} in the environment and visit: {{url}}": "Или, в качестве запасного варианта, вы можете установить: {{bootKey}} в окружающей среде и посетить: {{url}}", "Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist позволяет настраивать различные типы аутентификации, включая SAML и OIDC. Мы рекомендуем включить один из них, если Grist доступен по сети или доступен нескольким пользователям.", - "You do not have access to the administrator panel.\nPlease log in as an administrator.": "У вас нет доступа к панели администратора.\nПожалуйста, войдите в систему как администратор." + "You do not have access to the administrator panel.\nPlease log in as an administrator.": "У вас нет доступа к панели администратора.\nПожалуйста, войдите в систему как администратор.", + "Key to sign sessions with": "Ключ для подписи сеансов с", + "Session Secret": "Session Secret", + "Grist signs user session cookies with a secret key. Please set this key via the environment variable GRIST_SESSION_SECRET. Grist falls back to a hard-coded default when it is not set. We may remove this notice in the future since session IDs have been updated to be inherently cryptographically secure.": "Grist подписывает файлы cookie сеанса пользователя секретным ключом. Установите этот ключ через переменную среды GRIST_SESSION_SECRET. Grist возвращается к жестко запрограммированному значению по умолчанию, если оно не установлено. Мы можем удалить это уведомление в будущем, поскольку идентификаторы сеансов, созданные начиная с версии 1.1.16, по своей сути криптографически безопасны.", + "Grist signs user session cookies with a secret key. Please set this key via the environment variable GRIST_SESSION_SECRET. Grist falls back to a hard-coded default when it is not set. We may remove this notice in the future as session IDs generated since v1.1.16 are inherently cryptographically secure.": "Grist подписывает файлы cookie сеанса пользователя секретным ключом. Установите этот ключ через переменную среды GRIST_SESSION_SECRET. Grist возвращается к жестко запрограммированному значению по умолчанию, если оно не установлено. Мы можем удалить это уведомление в будущем, поскольку идентификаторы сеансов, созданные начиная с версии 1.1.16, по своей сути криптографически безопасны." }, "CreateTeamModal": { "Billing is not supported in grist-core": "Выставление счетов в grist-core не поддерживается",