Is it possible (and if yes, how?) to run an app as root --with write permissions --(on a specific folder) on a dropbox remote?

What is the problem you are having with rclone?

Good Morning,

I cannot run and obtain a direct non automatic backup on a mounted Dropbox remote (non root). It returns an ACCESS DENIED Error Warning. The App is launched as Root.
I have set a umask 0000 but the problem remains.
Would you have any hint for this , which may not be caused by RCLONE Settings. Many Thanks in advance,

Run the command 'rclone version' and share the full output of the command.

rclone v1.64.2

  • os/version: ubuntu 20.04 (64 bit)
  • os/kernel: 5.15.0-89-generic (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.21.3
  • go/linking: static
  • go/tags: none

Which cloud storage system are you using? (eg Google Drive)

DROPBOX

The command you were trying to run (eg rclone copy /tmp remote:tmp)

RCLONE SIDE HEREAFTER IS ALL RIGHT

RCLONE_UMASK=0000 rclone mount DROPBOXALLRIGHT1: /media/sch/DBPBXLEC --vfs-cache-mode full
The App is for non-automatic backup .
It returns an ACCESS DENIED Error Warning. 


Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

[DROPBOXALLRIGHT1]
type = dropbox
token = XXX

A log from the command that you were trying to run with the -vv flag

]
2023/11/24 11:04:51 DEBUG : rclone: Version "v1.64.2" starting with parameters ["rclone" "-vv" "mount" "DROPBOXALLRIGHT1:" "/media/sch/DBPBXLEC" "--log-file=/home/sch/Documents/rlog.txt"]
2023/11/24 11:04:51 DEBUG : Creating backend with remote "DROPBOXALLRIGHT1:"
2023/11/24 11:04:51 DEBUG : Using config file from "/home/sch/.config/rclone/rclone.conf"
2023/11/24 11:04:52 DEBUG : Dropbox root '': Mounting on "/media/sch/DBPBXLEC"
2023/11/24 11:04:52 DEBUG : : Root: 
2023/11/24 11:04:52 DEBUG : : >Root: node=/, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Lookup: name=".Trash"
2023/11/24 11:04:52 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Lookup: name=".xdg-volume-info"
2023/11/24 11:04:52 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/11/24 11:04:52 DEBUG : /: Lookup: name="autorun.inf"
2023/11/24 11:04:52 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/11/24 11:04:52 DEBUG : /: Lookup: name=".Trash-1001"
2023/11/24 11:04:52 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Attr: 
2023/11/24 11:04:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxrwx, err=<nil>
2023/11/24 11:04:52 DEBUG : : Statfs: 
2023/11/24 11:04:52 DEBUG : /: ReadDirAll: 
2023/11/24 11:04:52 DEBUG : /: >ReadDirAll: item=90, err=<nil>
2023/11/24 11:04:52 DEBUG : /: Lookup: name="autorun.inf"
2023/11/24 11:04:52 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/11/24 11:04:52 DEBUG : : >Statfs: stat={Blocks:537722880 Bfree:526718106 Bavail:526718106 Files:1000000000 Ffree:1000000000 Bsize:4096 Namelen:255 Frsize:4096}, err=<nil>

Do not use any RCLONE_UMASK, try to add --allow-other flag

rclone mount DROPBOXALLRIGHT1: /media/sch/DBPBXLEC --vfs-cache-mode full --allow-other

Good Morning and Many Thanks for this very quick reply,
I am much slower..
I thought I had tried this unsuccessfully before, regarding permissions which made me look for other solutions but when I check now , I get this
$ rclone -v mount DROPBOXALLRIGHT1: /media/sch/DBPBXLEC --allow-other --vfs-cache-mode full
2023/11/24 12:05:12 INFO : vfs cache: cleaned: objects 0 (was 0) in use 0, to upload 0, uploading 0, total size 0 (was 0)
2023/11/24 12:05:14 mount helper error: fusermount3: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
2023/11/24 12:05:14 Fatal error: failed to mount FUSE fs: fusermount: exit status 1
Any new hint will be welcome ... :slightly_smiling_face:
Thanks in advance,

You have your answer already... if you read what rclone reports...

edit /etc/fuse.conf file and uncomment user_allow_other option

I have done this very quickly and was about to send you a message saying that it was just terrific since remote writing was possible but then I noticed a problem which is probably related to the App.
I have to observe still but anyhow, being able to write ist just terrific, Many Thanks again,
Have a Good End of Day,

1 Like

As it is Dropbox you should also add:

--tpslimit 12 --tpslimit-burst 0

flags to your mount to prevent throttling

Good Evening/Morning,

Many Thanks again for the last hint,

Everything seems to be fine with" small backups".
When handling bigger ones unfortunately, with or without these last parameters I get the following error warning.when trying to write directly on the remote

2023/11/27 01:52:32 ERROR : IO error: write /home/sch/.cache/rclone/vfs/DROPBOXALLRIGHT1/RCLDIRECT2/FUJITSU MHZ2160BH G2 00000009.rdr: no space left on device
2023/11/27 01:52:32 ERROR : IO error: write /home/sch/.cache/rclone/vfs/DROPBOXALLRIGHT1/RCLDIRECT2/FUJITSU MHZ2160BH G2 00000009.rdr: no space left on device
2023/11/27 01:52:46 ERROR : RCLDIRECT2/FUJITSU MHZ2160BH G2 00000009.rdr: vfs cache: failed to _ensure cache object not found
2023/11/27 01:52:46 ERROR : RCLDIRECT2/FUJITSU MHZ2160BH G2 00000009.rdr: vfs cache: failed to _ensure cache object not found
2023/11/27 01:52:46 ERROR : RCLDIRECT2/FUJITSU MHZ2160BH G2 00000009.rdr: vfs cache: failed to _ensure cache object not found

I actually split the backups into individual sub-files that can be 0.7 to 4GB - far less than the space left on the disk -and I thought that a kind of buffering process would be operating for the RCLONE cache (here the VFS as I understand it )which does not seem to be the case.
II have tried --cache-tmp-upload-path but uploading then apparently becomes extremely slow

Any new hint will be most welcome...
Many Thanks in advance for your attention,,

Best Regards,

If you do not have enough disk space then simply do not use VFS cache and mount.

Or configure max cache size using --vfs-cache-max-size flag but keep in mind:

If using --vfs-cache-max-size or --vfs-cache-min-free-size note that the cache may exceed these quotas for two reasons. Firstly because it is only checked every --vfs-cache-poll-interval. Secondly because open files cannot be evicted from the cache. When --vfs-cache-max-size or --vfs-cache-min-free-size is exceeded, rclone will attempt to evict the least accessed files from the cache first. rclone will start with files that haven't been accessed for the longest. This cache flushing strategy is efficient and more relevant files are likely to remain cached.

Use rclone sync/copy/move directly as an alternative to using mount if your disk space is low.

this flag does nothing for VFS - it is for old cache remote which is deprecated.

Good Evening/Morning and Thank You so much again,

I will try this a soon as possible and restrict cache size to that of one or two sub-files.
I can not use rclone copy or sync for this specific purpose since I am trying to make it possible to start an image backup at any time with he App.
If it turns out to be unreliable I will probably try another way with rclone copy or sync...

Have a Good Day,

It wont be so simple. You would have to monitor cache size to make sure that previous uploads are finished and cache cleared. It can take minutes, hours or days... who knows. Depends on multiple factors like you internet speed etc.

In general I think it is very bad idea to use mount for any backup purposes. Unless you are prepared to create custom logic around it to control and monitor what has been backed up or not.

Not sure why you say it is not possible. Create your backup image in some tmp folder - sync to dropbox. When finished (and only then) delete it from backup folder. Do not run next image job until previous one is finished (including dropbox transfer).

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.