1
확장 파일 속성을 설정/가져 오는 기능을 포함하여 FUSE 파일 시스템을 구현하려고합니다. 이 경우, 관심있는 속성은 파일을 암호화 된 것으로 표시하는 부울 조건을 만드는 속성입니다. test.txt라는 파일이 있다고 가정 해 보겠습니다. 터미널 창에서, 나는 쉽게 다음을 수행 할 수 있습니다FUSE 확장 속성
setfattr -n user.encrypted -v 1 TEST.TXT
getfattr -n user.encrypted있는 test.txt
및
# 파일 : 출력 얻을 수있는 test.txt을
user.encrypted = "1"
그래서 내 시스템이 확장 된 속성으로 올바르게 작동하도록 설정되어 있다는 것을 알고 있습니다.
하지만 FUSE에서 프로그래밍 방식으로 이러한 속성을 설정하고 가져 오는 중입니다.
/* File open operation */
int bb_open(const char *path, struct fuse_file_info *fi)
{
int retstat = 0;
int fd;
int isEncrypted;
char user[] = "user";
char encAttr[] = "encrypted";
fd = open(path, fi->flags);
if (fd < 0)
retstat = bb_error("bb_open open");
log_msg("\nAbout to get encryption attribute\n");
/* get the encryption attribute */
isEncrypted = fgetxattr(fd, user, encAttr, 1);
log_msg("\nisEncrypted: %d\n", isEncrypted);
return retstat;
}
나는이 실행
, 심지어 명령 줄에서이 속성을 설정 한 후, fgetxattr 항상 실패 (즉,이 값을 반환 -1) : 예를 들어, 나는 다음과 같은 기능을 가지고있다. 내 로그 파일의 출력은 다음과 같습니다은 분명히 내가 잘못이 함수를 호출하고있어,하지만 난이 문제를 해결하는 방법을 모르겠어요. 누구든지 도와 줄 수 있습니까? 감사.isEncrypted = -1