2012-10-25 1 views
1

는 나는이 같은 getxattrsetxattr을 코딩하는 FUSE 파일 시스템을 기능 : setcap을 사용하여 프로그램 기능을 설정하고 실행하면 프로그램에서 권한 작업을 수행 할 수 없습니다. getcap에도 불구하고 이전에 설정 한 기능이 반환됩니다.리눅스 기능

누가 문제를 추적하거나 진행 상황에 대해 알려줄 수 있습니까?

+1

나는 그보다 더 운이 좋은 퓨즈 메일 링리스트가있다. 메일 링리스트를 사용해 볼 가치가 있습니다. –

+0

@ AndrewTomazos-Fathomling : 나는 이것을 시도 할 것이고, – nsstl

+1

을 생각할 것이다. 그리고, 여기서 다시 와서 당신이 배운 것을 말해 보라. –

답변

-1

시작하기 좋은 곳은 init 함수입니다. 거기 당신은

struct fuse_conn_info *conn

이 구조체는 다음과 같은 필드를

  1. proto_major를 포함하는 인수로 얻을 : FUSE의 주요 버전
  2. proto_minor : 만약이 : FUSE
  3. async_read의 부 버전 항목이> 0이면 FS가 비동기를 지원합니다. 읽음
  4. max_write : 지원하는 최대 쓰기 수는 무엇입니까? 디. 당신이 4K보다 찌꺼기 인 값 을 넣을 경우 직접 4K
  5. max_readahead에 값을 되돌립니다 : 최대 미리 읽기 값을
  6. 수 :이 FUSE 커널 모듈은 그것은 비트 플래그로 인코딩 된 을 지원하는 기능입니다
  7. 퓨즈 클라이언트가 다시 비트

가 지금은 아직 실험하지 않은 인코딩, 무엇을 원하는지 기능 그러나 나는 "원하는"필드는 수정할 필요가있다 내기 :합니다. 옵션은 다음과 같습니다.

  • FUSE_CAP_DONT_MASK : 설정하면 umask가 create ops의 파일에 적용되지 않습니다. 실제 구현되지 않은 그물 요청의 일부
  • FUSE_CAP_EXPORT_SUPPORT : 클라이언트가 ". 이 기본적
  • FUSE_CAP_BIG_WRITES으로 활성화되어, 당신은 기본적으로 비동기 읽거나 사용하지 않을 경우 : 또는 ".."자체 또는 FUSE 함정을 수행하고
  • FUSE_CAP_ASYNC_READ을 처리해야 설정해야 FS가 큰 쓰기를 처리 할 수 ​​있는지 4킬로바이트
  • FUSE_CAP_POSIX_LOCKS보다 다음 FS 클라이언트가 잠금 시스템 호출
  • FUSE_CAP_ATOMIC_O_TRUNC를 통해 원격 개체에서 잠금 지원하는 경우 설정해야합니다 다음 FS 오픈 플래그로 O_TRUNC을 지원하는 경우, 이것은
을 설정해야합니다

이것이 얼마나 도움이되는지는 모르겠지만 시작에 불과합니다. 사람들이 실제로 어떻게 든 기능을 사용 중지하면 성능이 크게 향상 될 수 있다고 말하는 일부 스레드가 있습니다. 그러나 나는 아직도 그것을하는 방법을 발견하지 못했습니다.

+1

은 사용자의 응답을 생각하지만, 원하는 것은 내 fs 프로그램의 기능이 아닙니다. 내 퓨즈 fs는 기본 디렉토리의 정확한 동작을 복제해야합니다. 모든 작업에 기능이 제대로 작동하지 않습니다. - 모니터링되는 디렉토리에 기능이 필요한 프로그램이 있으면 setcap을 사용하여 해당 기능을 설정하고 getcap . -하지만 해당 프로그램을 실행하면 이러한 기능을 사용할 수 없으며 실패합니다. – nsstl