我遇到了一个非常奇怪的行为我不知道如何解决:操作权限取决于命令执行的位置。
我的情况:我在 Raspberry Pi 4 上设置了 Nextcloud 服务器。系统使用 SD 卡工作,Nextcloud 实例位于 SSD 上,通过 Docker 运行(使用 IOTstack)。就 Nextcloud 而言,一切都按预期进行。
当我想列出 Nextcloud 实例的内容时,我可以这样使用 root 帐户:
sudo ls -lh /media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files
total 4.0K
drwxr-xr-x 3 www-data www-data 4K Nov 3 11:09 Documents
当然,这是因为root
. 当我尝试普通帐户时pi
,我得到以下信息:
ls -lh /media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files
ls: cannot access '/media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files': Permission denied
那是因为一切都属于www-data
,所以我尝试www-data
并得到:
sudo -u www-data ls -lh /media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files
ls: cannot access '/media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files': Permission denied
这不正常...我应该能够看到他们所属用户的文件。
我尝试cd
安装 SSD ( storage
) 并再次执行命令:
cd /media/pi/storage/
sudo -u www-data ls -lh ./IOTstack/volumes/nextcloud/html/data/solenoid/files
total 4.0K
drwxr-xr-x 3 www-data www-data 4K Nov 3 11:09 Documents
为什么?权限如何取决于ls
执行命令的位置?为什么我可以作为用户列出来自/media/pi/storage
而不是来自的文件?应该在群里?/home/pi
www-data
www-data
pi
以前我将数据存储在 SD 卡下/home/pi/IOTstack...
,但我想将我的文件存储在更安全的位置,同时保留交换硬件的选项。我没有遇到这个问题。
以这种“原始”方式访问文件的原因是通过网络将它们备份到另一个存储介质。
编辑
回答@kamil-maciorowski
namei -nom /media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files
f: /media/pi/storage/IOTstack/volumes/nextcloud/html/data/solenoid/files
drwxr-xr-x root root /
drwxr-xr-x root root media
drwxr-x--- pi pi pi
drwxr-xr-x pi pi storage
drwxr-xr-x pi pi IOTstack
drwxr-xr-x pi pi volumes
drwxr-xr-x pi pi nextcloud
drwxrwx--- www-data root html
data - Permission denied