2017-01-10 5 views
1

ヒューズは新しいです。次のコマンドでヒューズを取り付けました。"デフォルトの許可"オプションを使用したヒューズファイルシステム

/mnt/fuse -o default_permissions -o allow_other -o nonempty -o hard_remove –d 

私は "test"ユーザとしてログインし、 "testfile"というファイルを作成しようとしました。

[email protected]:/registration> touch testfile 
touch: setting times of `testfile': Permission denied 

straceの出力:

は、私はそのヒューズアプリケーションを理解することができます

-rw-r--r-- 1 root trusted  0 Jan 19 13:51 testfile 

uname({sys="Linux", node="11540302", ...}) = 0 
brk(0)         = 0x8055000 
brk(0x8076000)       = 0x8076000 
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) = 3 
dup2(3, 0)        = 0 
close(3)        = 0 
utimensat(0, NULL, NULL, 0)    = -1 EACCES (Permission denied) 
close(0)        = 0 

しかし、 "テストファイル" の作成がルートユーザーとして所有者と成功するには、ルートレベルで実行されていますファイルの作成は、所有者とrootで行われました。そのため、テストユーザーは "testfile"に対して何も操作を実行できません。

私の質問:私は与えているので、実装しながら、テストユーザーが権限を持つことができない理由

は「allow_other」、「テストファイル」にアクセスするには?

私の理解が間違っている場合は、私に修正してください。

+0

Stack Overflowは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 [Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306)も参照してください。 – jww

答えて

0

fuseグループにtestユーザーを追加してみてください。また

usermod -a -G fuse test 

#user_allow_otherは(一般的に/etc/fuse.conf上)fuse設定ファイルでコメント解除されていることを確認してください。

sed -i -e "s/#user_allow_other/user_allow_other/gi" /etc/fuse.conf 

のいずれか実行した後、それらのうちrebootコンピュータを再試行してください。

1

私はこの問題の解決策を得ました。

Detailed explanation for this issue.

ソリューション:

@dirktは、私たちが私たち自身のアクセス許可を処理する必要が言ったように。

コードは、発信者のuidとgidを取得するには:

fuse_get_context() - > UIDを。

fuse_get_context() - > gid;

fuse APIを使用して作成する際に、発信者のユーザーIDとグループIDを取得し、ファイル/ディレクトリの所有権を設定します。

常に改善の余地があります。私が間違っている場合は、親切に私を修正してください。

ありがとうございました。

関連する問題