«ECRYPTFS-CARTE-CARTING-PALTE» возвращает «FOPEN: нет такого файла или каталога»

Вы можете использовать параметр

- inplace
Этот параметр изменяет способ передачи файла с помощью rsync, когда его данные необходимо обновить: вместо стандартного метода создания файла новую копию файла и перемещая ее на место по завершении, rsync вместо этого записывает обновленные данные прямо в файл назначения.

, так что это будет копировать, пока вы сможете смотреть его во время копирования:

rsync -aP --inplace remotefile.mov localfile.mov

Также стоит упомянуть здесь лимит передачи, если вы не хотите использовать весь загружаемый трафик на вашем сервере с помощью:

--bwlimit=KBPS

И при копировании папок сначала копируйте небольшие файлы с помощью

--max-size=10m 

. Я бы использовал это все вместе (макс. 7,5 МБ из моей пропускной способности 10 МБ):

rsync -aP --max-size=10m --inplace user@remote.com:/pathto/remotefolder/ localfolder/
rsync -aP --bwlimit=7.5m --inplace user@remote.com:/pathto/remotefolder/ localfolder/

см. openshell.com

2
12.01.2019, 11:50
2 ответа

Я создал личную папку ecryptfs, затем удалил разрешение r&w из упакованного -файла фразы-пароля, чтобы проверить... Если бы вы проверили системный журнал сразу после того, как увидели сообщение

Info: Check the system log for more information from libecryptfs

Вы бы видели такие строки:

15 января 00 :21 :48 sys ecryptfs -вставка -завернутая -фраза-пароль -в связку ключей -:Не удалось обнаружить версию фразы-пароля в оболочке:Отказано в доступе
15 января 00 :21 :48 sys ecryptfs -вставка -завернутая -фраза-пароль -в связку ключей -:Ошибкапри попытке извлечь фразу-парольиз файла [ /home/user/.ecryptfs/wrapped -кодовая фраза]; rc = [-13]

Вместе они представляют собой довольно сильную стрелку, указывающую на необходимость проверки разрешений файла парольной фразы ~/.ecryptfs/wrapped -. (Не требуется sudo или strace)

В общем,просто убедитесь, что вы запускаете команду ecryptfs-mount-privateот имени того же пользовательского каталога, который вы пытаетесь смонтировать, и файл wrapped-passphraseимеет разрешения-rw-------или(600)и того же владельца, что и зашифрованный каталог.

1
27.01.2020, 22:08

Короче говоря, пользовательский файл wrapped-passphraseимел неправильные разрешения (должно быть -rw------- user user, было-rw------- root root).

Выполнил команду ecryptfs-mount-private(ввел пароль для входа в систему )с помощью straceнапример:

strace -o /tmp/strace.log -e trace=file ecryptfs-mount-private

Содержание/tmp/strace.log:

user@host:~$ sudo strace -o /tmp/strace.log -e trace=file ecryptfs-mount-private
[sudo] password for user:
Enter your login passphrase:
Inserted auth tok with sig [3ab5cd8e5f8c5acb] into the user session keyring
fopen: No such file or directory
user@host:~$ cat /tmp/strace.log
execve("/usr/bin/ecryptfs-mount-private", ["ecryptfs-mount-private"], [/* 13 vars */]) = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
getcwd("/home/user", 4096)                = 9
open("/usr/bin/ecryptfs-mount-private", O_RDONLY) = 3
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3872, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
stat("/home/user/.ecryptfs/wrapping-independent", 0x7fff65e61c30) = -1 ENOENT (No such file or directory)
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3873, si_uid=0, si_status=1, si_utime=0, si_stime=0} ---
stat("/home/user/.ecryptfs/wrapped-passphrase", {st_mode=S_IFREG|0600, st_size=58,...}) = 0
stat("/home/user/.ecryptfs/Private.sig", {st_mode=S_IFREG|0600, st_size=34,...}) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3874, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
stat("/usr/local/sbin/stty", 0x7fff65e61c40) = -1 ENOENT (No such file or directory)
stat("/usr/local/bin/stty", 0x7fff65e61c40) = -1 ENOENT (No such file or directory)
stat("/usr/sbin/stty", 0x7fff65e61c40)  = -1 ENOENT (No such file or directory)
stat("/usr/bin/stty", 0x7fff65e61c40)   = -1 ENOENT (No such file or directory)
stat("/sbin/stty", 0x7fff65e61c40)      = -1 ENOENT (No such file or directory)
stat("/bin/stty", {st_mode=S_IFREG|0755, st_size=72496,...}) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3875, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3876, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3877, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3878, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3879, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3880, si_uid=0, si_status=0, si_utime=68, si_stime=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3881, si_uid=0, si_status=1, si_utime=0, si_stime=0} ---
+++ exited with 1 +++

Итак, мы видим, что информации недостаточно. Выполнил ту же команду (ввел пароль для входа ), но с флагом -fдля трассировки дочерних процессов и с использованием прав root :

sudo strace -o /tmp/strace2.log -f -e trace=file ecryptfs-mount-private`

Часть содержимого файла /tmp/strace2.log:

...
3963  open("/root/.ecryptfsrc", O_RDONLY) = -1 ENOENT (No such file or directory)
3963  open("/home/user/.ecryptfs/wrapped-passphrase", O_RDONLY) = 3
...
3964  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
3964  open("/root/.ecryptfs/Private.mnt", O_RDONLY) = -1 ENOENT (No such file or directory)
3964  open("/dev/shm/ecryptfs-root-Private", O_RDWR|O_CREAT|O_NOFOLLOW, 0600) = 3
3964  open("/root/.ecryptfs/Private.sig", O_RDONLY) = -1 ENOENT (No such file or directory)
3964  +++ exited with 1 +++
3954  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3964, si_uid=0, si_status=1, si_utime=0, si_stime=0} ---
3954  +++ exited with 1 +++

Как мы видим, он не может найти файл Private.sigиз корня ; похоже, что его должен запускать пользователь, который зашифровал каталог, который мы пытаемся восстановить, а не запускать его в определенном каталоге.

В общем,Я выполнил эту команду (ввел пароль для входа )с правами пользователя:

strace -o /tmp/strace3.log -f -e trace=file ecryptfs-mount-private`

Часть содержимого файла /tmp/strace3.log:

...
4137  open("/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
4137  access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
4137  open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
4137  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
4137  open("/home/user/.ecryptfsrc", O_RDONLY) = -1 ENOENT (No such file or directory)
4137  open("/home/user/.ecryptfs/wrapped-passphrase", O_RDONLY) = -1 EACCES (Permission denied)
4137  open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
4137  +++ exited with 1 +++
4112  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4137, si_uid=1000, si_status=1, si_utime=0, si_stime=0} ---
...

Как мы видим, утилита ecryptfs-mount-privateне может получить доступ к пользовательскому wrapped-passphraseфайлу, что приводит к сообщению Отказано в доступе .

Проверено /home/user/.ecryptfs/wrapped-passphraseправа доступа к файлу, и они были:

-rw------- 1 root root

Изменен владелец этого файла через sudo chown user:user /home/user/.ecryptfs/wrapped-passphraseна пользователя и повторно запущен выше(ecryptfs-mount-private)команда без strace (введен пароль для входа в систему ), что привело к успешному сообщению:

INFO: Your private directory has been mounted.
INFO: To see this change in your current shell:
  cd: /home/user
1
27.01.2020, 22:08

Теги

Похожие вопросы