Commit Graph

8401 Commits

Author SHA1 Message Date
Thomas Waldmann d3694271eb
FreeBSD: acl_get: raise OSError if lpathconf fails
Previously:
- acl_get just returned for lpathconf returning EINVAL
- acl_get silently ignored all other lpathconf errors and
  implied it is not a NFS4 acl

Now:
- not sure why the EINVAL silent return was done, but it seems
  wrong. guess it could be the system not implementing a check
  for nfs4. but in that case guess we still would like to get
  the default and access ACL!? Thus, I removed the silent return.
- raise OSError for all lpathconf errors

Cosmetic: add a nfs4_acl boolean, so the code reads better.
2024-04-02 01:38:26 +02:00
Thomas Waldmann 30f4518058
FreeBSD: acl_get: add an acl_extended_* call
... to implement same semantics as on linux (only store ACL
if it defines permissions other than those defined by the
traditional file permissions).

Looks like there is no call working with an fd on FreeBSD.
2024-04-02 01:38:24 +02:00
Thomas Waldmann 4cc4516c59
Linux: acl_set bug fix: always fsencode path
We use path when raising OSErrors, even if we have an fd.
2024-04-02 01:38:23 +02:00
Thomas Waldmann 96cac5f381
Linux: acl_get: use "nofollow" variant of acl_extended_file call
This is NOT a bug fix, because the previous code contained a
check for symlinks before that line - because symlinks can not
have ACLs under Linux.

Now, this "is it a symlink" check is removed to simplify the
code and the "nofollow" variant of acl_extended_file* is used
to look at the symlink fs object (in the symlink case).

It then should tell us that this does NOT have an extended ACL
(because symlinks can't have ACLs) and so we return there.

Overall the code gets simpler and looks less suspect.
2024-04-02 01:38:21 +02:00
Thomas Waldmann beac2fa9ae
Linux: acl_get: raise OSError for errors in acl_extended_* call
Previously, these conditions were handled the same (just return):
- no extended acl here
- some error happened (e.g. ACLs unsupported, bad file descriptor, file not found, permission error, ...)

Now there will be OSErrors for the error cases.
2024-04-02 01:38:20 +02:00
Thomas Waldmann 1269c852bf
create/extract: ignore OSError if ACLs are not supported (ENOTSUP)
but do not silence other OSErrors.
2024-04-02 01:38:18 +02:00
Thomas Waldmann bafea3b5de
platform tests: misc. minor cleanups
- remove unused global / import
- use is_linux and is_darwin
- rename darwin acl test method
2024-04-02 01:38:17 +02:00
Thomas Waldmann d5396feebd
improve are_acls_working function
- ACLs are not working, if ENOTSUP ("Operation not supported") happens
- fix check for macOS
  On macOS borg uses "acl_extended", not "acl_access" and
  also the ACL text format is a bit different.
2024-04-02 01:38:15 +02:00
Thomas Waldmann b3554cdc0f
raise OSError if acl_to_text / acl_from_text returns NULL
Also did a small structural refactors there.
2024-04-02 01:38:14 +02:00
Thomas Waldmann a75945ed0d
improve acl_get / acl_set error handling, see #4049 2024-04-02 01:38:12 +02:00
TW 6de9ca87cf
Merge pull request #8149 from ThomasWaldmann/gh-actions-update-master
github CI: misc updates (master)
2024-03-15 19:06:09 +01:00
Thomas Waldmann 670cb6eb3f
github CI: misc updates
- macOS: run on macos-14 (on Apple Silicon!)
- macOS: use OpenSSL 3.0 from brew
- macOS: run with Python 3.11
- pip install -e .: add -v
- use up-to-date github actions
- remove libb2 references - since borg 1.2, we use blake2 indirectly via python stdlib
2024-03-15 18:19:15 +01:00
TW b82bf4a232
Merge pull request #8136 from ThomasWaldmann/msgpack-cython-updates-master
msgpack and cython updates (master)
2024-03-02 15:15:41 +01:00
Thomas Waldmann 03e964271e
require Cython 3.0.3 at least, fixes #8133
The fix for the Python 3.12 memory leak issue was
in Cython 3.0.3+.
2024-03-02 14:28:36 +01:00
Thomas Waldmann a507a2cb3b
allow msgpack 1.0.8, fixes #8133 2024-03-02 14:27:07 +01:00
TW c9c5b4db85
Merge pull request #8128 from ThomasWaldmann/ebusy-master
create: deal with EBUSY, fixes #8123
2024-02-25 13:25:45 +01:00
Thomas Waldmann eb79b1f13f
create: deal with EBUSY, fixes #8123
I put it into same class as EPERM and EACCES:
BackupPermissionError: borg is not permitted to access the file.
2024-02-25 12:17:09 +01:00
TW db75521b79
Merge pull request #8129 from ThomasWaldmann/docs-fix-markup
docs: remove tabs
2024-02-25 12:16:28 +01:00
Thomas Waldmann 6121d3d2e6
docs: remove tabs 2024-02-25 12:14:52 +01:00
TW e40690f6d7
Merge pull request #8124 from stephan13360/master
add non-root deployment strategy
2024-02-25 00:27:22 +01:00
Stephan Herbers 274cd8f121 add restore considerations paragraph 2024-02-24 21:17:22 +01:00
Stephan Herbers 96ae9f73eb Apply suggestions from code review
Co-authored-by: NetSysFire <59517351+NetSysFire@users.noreply.github.com>
2024-02-24 21:17:09 +01:00
Stephan Herbers a06c42cf1f add non-root deployment strategy 2024-02-24 21:17:01 +01:00
TW 7074c0220b
Merge pull request #8119 from ThomasWaldmann/benchmark-crud-options-master
benchmark: inherit options --rsh --remote-path, fixes #8099
2024-02-22 23:29:33 +01:00
Thomas Waldmann da285b15d2
benchmark: inherit options --rsh --remote-path, fixes #8099 2024-02-22 21:48:13 +01:00
TW 6be1035d8b
Merge pull request #8115 from ThomasWaldmann/new-rc-fixes-master
return value fixes (master)
2024-02-21 23:39:43 +01:00
Thomas Waldmann a13b5d1b79
benchmark: fix return value, fixes #8113 2024-02-21 13:20:55 +01:00
TW 334bfcda04
Merge pull request #8111 from ThomasWaldmann/rel200b8
release 2.0.0b8
2024-02-21 01:58:01 +01:00
Thomas Waldmann b04dcf4cbd
libacl: work with older versions, too
this was recently set to a relatively high minimum version when
locating it via pkgconfig was added. this broke the binary builds
on buster and bullseye.

i don't think borg requires a specific libacl version as long as
the api is compatible, so i now set this to 2.2.47 (from 2008).
2024-02-20 21:40:43 +01:00
Thomas Waldmann b69c937cb7
build_man 2024-02-20 17:12:43 +01:00
Thomas Waldmann 3160f5063a
build_usage 2024-02-20 17:11:43 +01:00
Thomas Waldmann 0612001aa3
update release date in changes.rst 2024-02-20 17:06:53 +01:00
Thomas Waldmann 86c8031dc5
fix comment in setup.py 2024-02-20 17:04:16 +01:00
TW 643d2d2d05
Merge pull request #8109 from ThomasWaldmann/update-changes-master
update CHANGES
2024-02-20 16:59:30 +01:00
Thomas Waldmann 9524c20b47
update CHANGES 2024-02-20 16:29:14 +01:00
TW 514cef5a63
Merge pull request #8107 from ThomasWaldmann/slashdot-hack-master
slashdot hack (master)
2024-02-20 12:56:40 +01:00
Thomas Waldmann e7bd18d7f3
create: add the slashdot hack, fixes #4685 2024-02-20 04:08:09 +01:00
TW f94cdee94a
Merge pull request #8106 from ThomasWaldmann/more-errors-msgids-master
more specific errors / msgids (master)
2024-02-20 03:23:22 +01:00
Thomas Waldmann 43a20b052e
add ConnectionBrokenWithHint for BrokenPipeErrors and similar, see #7016
no traceback, but error message and specific exit code.
2024-02-20 00:17:55 +01:00
Thomas Waldmann 45815554ce
check_can_create_repository: deal with PermissionErrors, see #7016
borg init calls this. If there is a PermissionError, it is
usually fs permission issue at path or its parent directory.

Don't give a traceback, but rather an error msg and a specific exit code.
2024-02-20 00:07:43 +01:00
TW 7bed7b86d4
Merge pull request #8105 from ThomasWaldmann/corrupted-key-errmsg-master
better error msg for corrupted key data, fixes #8016
2024-02-19 23:30:38 +01:00
Thomas Waldmann 83c069ce5a
better error msg for corrupted key data, fixes #8016 2024-02-19 19:23:48 +01:00
TW 2d31b027c7
Merge pull request #8104 from ThomasWaldmann/error-msg-bad-nonce-file2-master
refactor: use less binascii
2024-02-19 03:02:02 +01:00
Thomas Waldmann 334fbab897
refactor: use less binascii
our own hex_to_bin / bin_to_hex is more comfortable to use.

also: optimize remaining binascii usage / imports.
2024-02-19 02:16:19 +01:00
TW 3bfd7652cd
Merge pull request #8102 from ThomasWaldmann/error-msg-bad-nonce-file-master
give clean error msg for invalid nonce file, see #7967
2024-02-18 15:21:52 +01:00
Thomas Waldmann ab0b111af0
give clean error msg for invalid nonce file, see #7967
this is a fwd port from 1.4-maint. as we don't have nonce files
any more in master, only the generally useful stuff has been ported.

- add Error / ErrorWithTraceback exception classes to RPC layer.
- add hex_to_bin helper
2024-02-18 14:47:52 +01:00
TW b65888f057
Merge pull request #8101 from ThomasWaldmann/fix-commanderror-args-master
fix CommandError args, fixes 8029
2024-02-18 14:33:35 +01:00
Thomas Waldmann 930ecd845a
fix CommandError args, fixes 8029
this is a fwd port from 1.4-maint and most of it was
already done in master, so only a minor change in here.
2024-02-18 14:18:33 +01:00
TW 74129e539b
Merge pull request #8100 from ThomasWaldmann/fix-with-lock-exceptions-master
borg with-lock: catch exception, print error msg, fixes #8022
2024-02-18 14:07:37 +01:00
kmille 1f5cc355a3
borg with-lock: catch exception, print error msg, fixes #8022 2024-02-18 13:36:10 +01:00