mirror of
https://github.com/zulip/zulip.git
synced 2026-06-03 21:01:43 +08:00
When the destination of an extracted file is a symlink to a directory (e.g. in the docker-zulip container, where /home/zulip/uploads -> /data/uploads), modern GNU tar replaces the symlink with a real directory before extracting through it, as a security precaution. As a result, uploads (and potentially configuration files) get restored improper (and, in the case of docker-zulip, non-persistent) paths. Pass `--keep-directory-symlink` to both tar invocations so the extractor follows symlinks-to-directories rather than replacing them. The non-docker case is unaffected (these paths are real directories in a standard install), and the security mitigation is not meaningfully weakened: destinations are pinned to /etc/zulip, /home/zulip/uploads, and zproject, and the archive is one the operator just produced. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| nagios | ||
| setup | ||
| __init__.py | ||
| get-django-setting | ||
| log-search | ||
| purge-old-deployments | ||
| README.md | ||
| refresh-sharding-and-restart | ||
| reload-clients | ||
| restart-server | ||
| start-server | ||
| stop-server | ||
| upgrade-zulip | ||
| upgrade-zulip-from-git | ||
| zulip-puppet-apply | ||
This directory contains scripts that:
-
Generally do not require access to Django or the database (those are "management commands"), and thus are suitable to run operationally.
-
Are useful for managing a production deployment of Zulip (many are also used in a Zulip development environment, though development-only scripts live in
tools/).
For more details, see https://zulip.readthedocs.io/en/latest/subsystems/directory-structure.html.