스크립트를 실행하면
#!/usr/bin/expect
set pass [lindex $argv 0]
spawn encfs -v {CRIPT_DIR} {MNT_DIR} -o nonempty
expect "*EncFS Password:*"
send "$pass\r"
expect eof
예상되는 스크립트 출력:
zz@zz-com:/media/truecrypt5/mmm$./e.sh 1
spawn encfs -v /media/truecrypt5/mmm/cr /media/truecrypt5/mmm/mn -o nonempty
10:25:11 (main.cpp:523) Root directory: /media/truecrypt5/mmm/cr/
10:25:11 (main.cpp:524) Fuse arguments: (daemon) (threaded) (keyCheck) encfs /media/truecrypt5/mmm/mn -o nonempty -s -o use_ino -o default_permissions
10:25:11 (FileUtils.cpp:177) version = 20
10:25:11 (FileUtils.cpp:181) found new serialization format
10:25:11 (FileUtils.cpp:199) subVersion = 20100713
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:11 (FileUtils.cpp:1620) useStdin: 0
EncFS Password:
10:25:11 (Interface.cpp:165) checking if ssl/aes(3:0:2) implements ssl/aes(3:0:0)
10:25:11 (SSL_Cipher.cpp:370) allocated cipher ssl/aes, keySize 24, ivlength 16
10:25:12 (FileUtils.cpp:1628) cipher key size = 44
10:25:12 (Interface.cpp:165) checking if nameio/block(3:0:1) implements nameio/block(3:0:0)
ls 명령:
zz@zz-com:/media/truecrypt5/mmm$sudo ls -la
[sudo] password for zz:
ls: cannot access mn: Permission denied
total 24
drwx------ 4 zz zz 4096 2012-08-31 14:40 .
drwx------ 10 zz zz 4096 1970-01-01 03:00 ..
drwx------ 2 zz zz 4096 2012-08-30 18:56 cr
-rwx------ 1 zz zz 73 2012-08-30 18:54 e2.sh
-rwx------ 1 zz zz 178 2012-08-30 19:10 e.sh
d????????? ? ? ? ? ? mn
-rwx------ 1 zz zz 40 2012-08-30 18:52 u.sh
{MNT_DIR}에 액세스할 수 없습니다. Sodo 사용자는 접근할 수 없습니다. 그러나 명령이나 쉘 scipt
#!/bin/sh
encfs -v {CRIPT_DIR} {MNT_DIR} -o nonempty
올바르게 작동합니다.
운영 체제: 우분투 11.10
예상 스크립트에 어떤 문제가 있나요?
답변1
의도한 스크립트에는 아무런 문제가 없습니다. 하지만 일반 사용자를 사용하여 암호화된 디렉터리를 마운트한 다음 루트를 사용하여 sudo를 사용하여 마운트된 파일을 보려고 시도한 것 같습니다. 그것은 작동하지 않으며 이것이 바로 encfs의 전부입니다.
귀하의 예에서 디렉토리 cr
는 입니다 encfs
. 내부 내용은 큰 비밀이 아니며 모두 암호화된 데이터입니다. 이 데이터는 mn
사람이 읽을 수 있는 방식으로 내용을 볼 수 있도록 에 로드됩니다 mn
.
설치된 사용자만 cr
이 내용을 읽을 수 있습니다 mn
. 루트도 아닙니다. root
내용을 보려면 예제 ./e.sh 1
의 를 로 변경 해야 합니다 sudo ./e.sh 1
.
답변2
encfs
명령을 실행하면 백그라운드 프로세스가 분기되기 때문에 예상 스크립트에서 사용될 때와 다르지만 encfs
예상 스크립트가 종료되면 encfs
데몬 프로세스가 실패합니다. 조만간 init에 의해 재활용될 것입니다.
encfs -f
따라서 포그라운드에서 계속 encfs
실행을 사용하고 스크립트를 종료하지 않는 것이 좋습니다 .