home-assistant / home-assistant/supervisor

Restoring backup from samba fails

Open
#6,544 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
2.2k
Forks
806
Avg merge
1d 6h
Merged PRs (30d)
55

Description

### Describe the issue you are experiencing

Restoring a backup from a samba share fails. The backup was created by the same HA instance a few hours previously, so there should be no issues with write permissions. The temp folder is created correctly, but the extraction of the tar file fails.
Copying the file to the local backup storage and restoring from there works as expected.

### What type of installation are you running?

Home Assistant OS

### Which operating system are you running on?

Home Assistant Operating System

### Steps to reproduce the issue

1. Add a samba share as backup folder
2. Create a backup
3. Restore the backup

### Anything in the Supervisor logs that might be useful for us?

```txt
2026-02-09 16:03:33.779 INFO (MainThread) [supervisor.backups.manager] Partial-Restore 6304af7f start
2026-02-09 16:03:33.784 ERROR (MainThread) [supervisor.backups.manager] Restore 6304af7f error
Traceback (most recent call last):
File "/usr/src/supervisor/supervisor/backups/manager.py", line 727, in _do_restore
async with backup.open(location):
~~~~~~~~~~~^^^^^^^^^^
File "/usr/local/lib/python3.13/contextlib.py", line 214, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/supervisor/supervisor/backups/backup.py", line 525, in open
self._tmp = await self.sys_run_in_executor(_extract_backup)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/supervisor/supervisor/backups/backup.py", line 516, in _extract_backup
tar.extractall(
~~~~~~~~~~~~~~^
path=tmp.name,
^^^^^^^^^^^^^^
members=secure_path(tar),
^^^^^^^^^^^^^^^^^^^^^^^^^
filter="fully_trusted",
^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/tarfile.py", line 2355, in extractall
self._extract_one(tarinfo, path, set_attrs=not tarinfo.isdir(),
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
numeric_owner=numeric_owner,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
filter_function=filter_function)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/tarfile.py", line 2464, in _extract_one
self._handle_fatal_error(e)
~~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/usr/local/lib/python3.13/tarfile.py", line 2458, in _extract_one
self._extract_member(tarinfo, os.path.join(path, tarinfo.name),
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
set_attrs=set_attrs,
^^^^^^^^^^^^^^^^^^^^
numeric_owner=numeric_owner,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
filter_function=filter_function,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
extraction_root=path)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/tarfile.py", line 2547, in _extract_member
self.makefile(tarinfo, targetpath)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/tarfile.py", line 2596, in makefile
with bltn_open(targetpath, "wb") as target:
~~~~~~~~~^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/data/mounts/backup/tmp0gfi78af/f7742ca0_tommysense-homeassistant-addon.tar.gz'
```

### System information

## System Information

version | core-2026.2.1
-- | --
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
container_arch | amd64
user | root
virtualenv | false
python_version | 3.13.11
os_name | Linux
os_version | 6.12.63-haos
arch | x86_64
timezone | Europe/Zurich
config_dir | /config

Home Assistant Community Store

GitHub API | ok
-- | --
GitHub Content | ok
GitHub Web | ok
HACS Data | ok
GitHub API Calls Remaining | 5000
Installed Version | 2.0.5
Stage | running
Available Repositories | 2676
Downloaded Repositories | 17

Home Assistant Supervisor

host_os | Home Assistant OS 17.0
-- | --
update_channel | stable
supervisor_version | supervisor-2026.01.1
agent_version | 1.8.1
docker_version | 29.1.3
disk_total | 62.3 GB
disk_used | 41.7 GB
nameservers | 10.11.5.36
healthy | true
supported | true
host_connectivity | true
supervisor_connectivity | true
ntp_synchronized | true
virtualization | kvm
board | ova
supervisor_api | ok
version_api | ok
installed_addons | MariaDB (2.7.2), Mosquitto broker (6.5.2), InfluxDB (5.0.2), MQTT Explorer (browser-1.0.3), openWakeWord (2.1.0), Advanced SSH & Web Terminal (23.0.2), Piper (2.2.2), File editor (5.8.0), Whisper (3.1.0), Grafana (12.1.0), Speech-to-Phrase (1.4.1), Zigbee2MQTT (2.8.0-1), Matter Server (8.2.2), Z-Wave JS UI (7.0.0), SONOFF Dongle Flasher (1.3.0), TOMMY (2.0.2)

Dashboards

dashboards | 3
-- | --
resources | 10
views | 9
mode | storage

Network Configuration

adapters | lo (disabled), enp0s3 (enabled, default, auto), docker0 (disabled), hassio (disabled), veth0a39f17 (disabled), veth7b70f3f (disabled), veth501c71b (disabled), vethe12b99f (disabled), veth47bc3b5 (disabled), veth48747f6 (disabled), vethfec82a2 (disabled), vethd0c2433 (disabled), veth5803caa (disabled), vethcd93a51 (disabled), veth4fb42c8 (disabled)
-- | --
ipv4_addresses | lo (127.0.0.1/8), enp0s3 (10.11.1.2/16), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), veth0a39f17 (), veth7b70f3f (), veth501c71b (), vethe12b99f (), veth47bc3b5 (), veth48747f6 (), vethfec82a2 (), vethd0c2433 (), veth5803caa (), vethcd93a51 (), veth4fb42c8 ()
ipv6_addresses | lo (::1/128), enp0s3 (fe80::40b7:9539:706e:3508/64), docker0 (fe80::acae:57ff:fe2c:fce5/64), hassio (fd0c:ac1e:2100::1/48, fe80::7034:63ff:fe47:f96a/64), veth0a39f17 (fe80::3c1c:ffff:fe31:733d/64), veth7b70f3f (fe80::c814:f0ff:fee0:2d65/64), veth501c71b (fe80::10d0:a2ff:fe64:4f2/64), vethe12b99f (fe80::1036:92ff:fec3:4b04/64), veth47bc3b5 (fe80::4459:12ff:fe9e:41c2/64), veth48747f6 (fe80::40f4:51ff:fe98:f2f0/64), vethfec82a2 (fe80::f047:d7ff:fef8:b625/64), vethd0c2433 (fe80::e43d:bdff:feb6:7432/64), veth5803caa (fe80::cbc:6bff:fe3b:1d9/64), vethcd93a51 (fe80::bcdd:46ff:feae:f005/64), veth4fb42c8 (fe80::7049:4ff:fe7e:2d0a/64)
announce_addresses | 10.11.1.2, fe80::40b7:9539:706e:3508

Recorder

oldest_recorder_run | 8 January 2026 at 09:23
-- | --
current_recorder_run | 9 February 2026 at 11:20
estimated_db_size | 597.70 MiB
database_engine | mysql
database_version | 10.11.6

### Supervisor diagnostics

[config_entry-hassio-b961739c1d2c045bb0584e6a573ca678.json](https://github.com/user-attachments/files/25186986/config_entry-hassio-b961739c1d2c045bb0584e6a573ca678.json)

### Additional information

_No response_

Contributor guide

Open the contributing guide

Research direction

Start with supervisor/backups/backup.py at open() and _extract_backup(), then inspect supervisor/backups/manager.py where restore invokes it. Reproduce the listed Samba-share backup and restore steps and compare them with local-storage restoration. Done means a backup created on the Samba share can be extracted and restored successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.