[GH-ISSUE #2667] EPERM when listing parents of directories with access control (?) after 1.94 #1273

Open
opened 2026-03-04 01:52:44 +03:00 by kerem · 0 comments
Owner

Originally created by @lnicola on GitHub (May 7, 2025).
Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/2667

Additional Information

Version of s3fs being used (s3fs --version)

V1.95 with OpenSSL

Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse or dpkg -s fuse)

2.9.9

Provider (AWS, OVH, Hetzner, iDrive E2, ...)

CREODIAS

Kernel information (uname -r)

5.14.0-362.24.1.el9_3.0.1.x86_64

GNU/Linux Distribution, if applicable (cat /etc/os-release)

Alma Linux 9

How to run s3fs, if applicable

[] command line
[] /etc/fstab
[x] systemd.mount

[Mount]
Where=/eodata
What=s3fs#eodata
Type=fuse
Options=_netdev,allow_other,use_path_request_style,uid=0,umask=0222,mp_umask=0222,mp_umask=0222,multipart_size=50,gid=0,url=https://eodata.cloudferro.com,passwd_file=/etc/passwd-s3fs-eodata,max_stat_cache_size=60000,list_object_max_keys=10000,sigv2,dbglevel=info

s3fs syslog messages (grep s3fs /var/log/syslog, journalctl | grep s3fs, or s3fs outputs)

May 07 07:56:36 s3fs[2993567]: [path=/auxdata][pid=3131451,uid=1001,gid=1006]
May 07 07:56:36 s3fs[2993567]: [path=/auxdata][flags=0x18800][pid=3131451,uid=1001,gid=1006]
May 07 07:56:36 s3fs[2993567]: [path=/auxdata][pid=3131451,uid=1001,gid=1006]
May 07 07:56:36 s3fs[2993567]:   [path=/auxdata]
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata?delimiter=/&max-keys=10000&prefix=auxdata/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/?delimiter=/&max-keys=10000&prefix=auxdata/
May 07 07:56:36 s3fs[2993567]:       HTTP response code 200
May 07 07:56:36 s3fs[2993567]:   [path=/auxdata/][list=0]
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/ECOSTRESS/][bpath=/auxdata/ECOSTRESS/][save=/auxdata/ECOSTRESS/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/ECOSTRESS/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/ECOSTRESS/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/Elevation-Tiles/][bpath=/auxdata/Elevation-Tiles/][save=/auxdata/Elevation-Tiles/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/Elevation-Tiles/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/Elevation-Tiles/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/GLC_Germany_2018/][bpath=/auxdata/GLC_Germany_2018/][save=/auxdata/GLC_Germany_2018/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/GLC_Germany_2018/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/GLC_Germany_2018/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/S2GLC-Poland/][bpath=/auxdata/S2GLC-Poland/][save=/auxdata/S2GLC-Poland/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/S2GLC-Poland/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2GLC-Poland/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/S2_L3_MOSAIC_120/][bpath=/auxdata/S2_L3_MOSAIC_120/][save=/auxdata/S2_L3_MOSAIC_120/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_MOSAIC_120/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_MOSAIC_120/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/S2_L3_WASP/][bpath=/auxdata/S2_L3_WASP/][save=/auxdata/S2_L3_WASP/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_WASP/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_WASP/
May 07 07:56:36 s3fs[2993567]:       [tpath=/auxdata/orbits/][bpath=/auxdata/orbits/][save=/auxdata/orbits/][sseckeypos=18446744073709551615]
May 07 07:56:36 s3fs[2993567]:       URL is https://eodata.cloudferro.com/eodata/auxdata/orbits/
May 07 07:56:36 s3fs[2993567]:       URL changed is https://eodata.cloudferro.com/eodata/auxdata/orbits/
May 07 07:56:36 s3fs[2993567]:       [count=7]
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text:
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1
May 07 07:56:36 s3fs[2993567]: s3fs.cpp:readdir_multi_head(3290): error occurred in multi request(errno=-1).
May 07 07:56:36 s3fs[2993567]: s3fs.cpp:s3fs_readdir(3380): readdir_multi_head returns error(-1).

Details about issue

# s3fs V1.95
$ ls /eodata/auxdata/
ls: reading directory '/eodata/auxdata/': Operation not permitted

$ ls -l /eodata/auxdata/orbits
-r-xr-xr-x. 1 root root 0 Jan  1  1970 /eodata/auxdata/orbits

# s3fs V1.90
$ ls /eodata/auxdata
building-height-germany  CopDEM      CSI-SRTM-DEM  Elevation-Tiles  GLC_Germany_2018  MERIS   S2GLC         S2_L3_MOSAIC_120  SRTMGL1
CARD_BS_MC               CopDEM_COG  ECOSTRESS     ESA_WORLD_COVER  MajorTOM          orbits  S2GLC-Poland  S2_L3_WASP

$ ls -l /eodata/auxdata/orbits
-r-xr-xr-x. 1 root root 0 Dec 31  1969 /eodata/auxdata/orbits

# aws-cli
$ aws --profile eodata --endpoint https://eodata.cloudferro.com s3 ls s3://EODATA/auxdata/
                           PRE CARD_BS_MC/
                           PRE CSI-SRTM-DEM/
                           PRE CopDEM/
                           PRE CopDEM_COG/
                           PRE ECOSTRESS/
                           PRE ESA_WORLD_COVER/
                           PRE Elevation-Tiles/
                           PRE GLC_Germany_2018/
                           PRE MERIS/
                           PRE MajorTOM/
                           PRE S2GLC/
                           PRE S2GLC-Poland/
                           PRE S2_L3_MOSAIC_120/
                           PRE S2_L3_WASP/
                           PRE SRTMGL1/
                           PRE building-height-germany/
                           PRE orbits/
$ aws --profile eodata --endpoint https://eodata.cloudferro.com s3 ls s3://EODATA/auxdata/orbits/

An error occurred (AccessDenied) when calling the ListObjectsV2 operation: AccessDenied

To sum up:

  • /eodata/auxdata/orbits has some sort of access control set up (I don't personally care about it)
  • ls /eodata/auxdata gets a 403 on /eodata/auxdata/orbits and others (which are similarly protected)
  • on V1.95, this makes ls /eodata/auxdata fail
  • on V1.90 to V1.94 (I think), this makes ls /eodata/auxdata omit the protected entries
Originally created by @lnicola on GitHub (May 7, 2025). Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/2667 ### Additional Information #### Version of s3fs being used (`s3fs --version`) V1.95 with OpenSSL #### Version of fuse being used (`pkg-config --modversion fuse`, `rpm -qi fuse` or `dpkg -s fuse`) 2.9.9 #### Provider (`AWS`, `OVH`, `Hetzner`, `iDrive E2`, ...) CREODIAS #### Kernel information (`uname -r`) 5.14.0-362.24.1.el9_3.0.1.x86_64 #### GNU/Linux Distribution, if applicable (`cat /etc/os-release`) Alma Linux 9 #### How to run s3fs, if applicable [] command line [] /etc/fstab [x] `systemd.mount` ``` [Mount] Where=/eodata What=s3fs#eodata Type=fuse Options=_netdev,allow_other,use_path_request_style,uid=0,umask=0222,mp_umask=0222,mp_umask=0222,multipart_size=50,gid=0,url=https://eodata.cloudferro.com,passwd_file=/etc/passwd-s3fs-eodata,max_stat_cache_size=60000,list_object_max_keys=10000,sigv2,dbglevel=info ``` #### s3fs syslog messages (`grep s3fs /var/log/syslog`, `journalctl | grep s3fs`, or `s3fs outputs`) ``` May 07 07:56:36 s3fs[2993567]: [path=/auxdata][pid=3131451,uid=1001,gid=1006] May 07 07:56:36 s3fs[2993567]: [path=/auxdata][flags=0x18800][pid=3131451,uid=1001,gid=1006] May 07 07:56:36 s3fs[2993567]: [path=/auxdata][pid=3131451,uid=1001,gid=1006] May 07 07:56:36 s3fs[2993567]: [path=/auxdata] May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata?delimiter=/&max-keys=10000&prefix=auxdata/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/?delimiter=/&max-keys=10000&prefix=auxdata/ May 07 07:56:36 s3fs[2993567]: HTTP response code 200 May 07 07:56:36 s3fs[2993567]: [path=/auxdata/][list=0] May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/ECOSTRESS/][bpath=/auxdata/ECOSTRESS/][save=/auxdata/ECOSTRESS/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/ECOSTRESS/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/ECOSTRESS/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/Elevation-Tiles/][bpath=/auxdata/Elevation-Tiles/][save=/auxdata/Elevation-Tiles/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/Elevation-Tiles/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/Elevation-Tiles/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/GLC_Germany_2018/][bpath=/auxdata/GLC_Germany_2018/][save=/auxdata/GLC_Germany_2018/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/GLC_Germany_2018/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/GLC_Germany_2018/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/S2GLC-Poland/][bpath=/auxdata/S2GLC-Poland/][save=/auxdata/S2GLC-Poland/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/S2GLC-Poland/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2GLC-Poland/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/S2_L3_MOSAIC_120/][bpath=/auxdata/S2_L3_MOSAIC_120/][save=/auxdata/S2_L3_MOSAIC_120/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_MOSAIC_120/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_MOSAIC_120/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/S2_L3_WASP/][bpath=/auxdata/S2_L3_WASP/][save=/auxdata/S2_L3_WASP/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_WASP/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/S2_L3_WASP/ May 07 07:56:36 s3fs[2993567]: [tpath=/auxdata/orbits/][bpath=/auxdata/orbits/][save=/auxdata/orbits/][sseckeypos=18446744073709551615] May 07 07:56:36 s3fs[2993567]: URL is https://eodata.cloudferro.com/eodata/auxdata/orbits/ May 07 07:56:36 s3fs[2993567]: URL changed is https://eodata.cloudferro.com/eodata/auxdata/orbits/ May 07 07:56:36 s3fs[2993567]: [count=7] May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl.cpp:RequestPerform(2638): HTTP response code 403, returning EPERM. Body Text: May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: curl_multi.cpp:MultiPerform(167): thread terminated with non-zero return code: -1 May 07 07:56:36 s3fs[2993567]: s3fs.cpp:readdir_multi_head(3290): error occurred in multi request(errno=-1). May 07 07:56:36 s3fs[2993567]: s3fs.cpp:s3fs_readdir(3380): readdir_multi_head returns error(-1). ``` ### Details about issue <!-- Please describe the content of the issue in detail. --> ``` # s3fs V1.95 $ ls /eodata/auxdata/ ls: reading directory '/eodata/auxdata/': Operation not permitted $ ls -l /eodata/auxdata/orbits -r-xr-xr-x. 1 root root 0 Jan 1 1970 /eodata/auxdata/orbits # s3fs V1.90 $ ls /eodata/auxdata building-height-germany CopDEM CSI-SRTM-DEM Elevation-Tiles GLC_Germany_2018 MERIS S2GLC S2_L3_MOSAIC_120 SRTMGL1 CARD_BS_MC CopDEM_COG ECOSTRESS ESA_WORLD_COVER MajorTOM orbits S2GLC-Poland S2_L3_WASP $ ls -l /eodata/auxdata/orbits -r-xr-xr-x. 1 root root 0 Dec 31 1969 /eodata/auxdata/orbits # aws-cli $ aws --profile eodata --endpoint https://eodata.cloudferro.com s3 ls s3://EODATA/auxdata/ PRE CARD_BS_MC/ PRE CSI-SRTM-DEM/ PRE CopDEM/ PRE CopDEM_COG/ PRE ECOSTRESS/ PRE ESA_WORLD_COVER/ PRE Elevation-Tiles/ PRE GLC_Germany_2018/ PRE MERIS/ PRE MajorTOM/ PRE S2GLC/ PRE S2GLC-Poland/ PRE S2_L3_MOSAIC_120/ PRE S2_L3_WASP/ PRE SRTMGL1/ PRE building-height-germany/ PRE orbits/ $ aws --profile eodata --endpoint https://eodata.cloudferro.com s3 ls s3://EODATA/auxdata/orbits/ An error occurred (AccessDenied) when calling the ListObjectsV2 operation: AccessDenied ``` To sum up: - `/eodata/auxdata/orbits` has some sort of access control set up (I don't personally care about it) - `ls /eodata/auxdata` gets a 403 on `/eodata/auxdata/orbits` and others (which are similarly protected) - on V1.95, this makes `ls /eodata/auxdata` fail - on V1.90 to V1.94 (I think), this makes `ls /eodata/auxdata` omit the protected entries
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/s3fs-fuse#1273
No description provided.