diff --git a/backend/local/local.go b/backend/local/local.go index d509ce732..8480d3ede 100644 --- a/backend/local/local.go +++ b/backend/local/local.go @@ -178,6 +178,9 @@ func (f *Fs) newObjectWithInfo(remote, dstPath string, info os.FileInfo) (fs.Obj if os.IsNotExist(err) { return nil, fs.ErrorObjectNotFound } + if os.IsPermission(err) { + return nil, fs.ErrorPermissionDenied + } return nil, err } } diff --git a/fs/fs.go b/fs/fs.go index df9ec7d38..b743ffb94 100644 --- a/fs/fs.go +++ b/fs/fs.go @@ -53,6 +53,7 @@ var ( ErrorCantMoveOverlapping = errors.New("can't move files on overlapping remotes") ErrorDirectoryNotEmpty = errors.New("directory not empty") ErrorImmutableModified = errors.New("immutable file modified") + ErrorPermissionDenied = errors.New("permission denied") ) // RegInfo provides information about a filesystem @@ -772,7 +773,7 @@ func CheckClose(c io.Closer, err *error) { func FileExists(fs Fs, remote string) (bool, error) { _, err := fs.NewObject(remote) if err != nil { - if err == ErrorObjectNotFound || err == ErrorNotAFile { + if err == ErrorObjectNotFound || err == ErrorNotAFile || err == ErrorPermissionDenied { return false, nil } return false, err