フォルダの所有者が他のユーザーが作成したフォルダに書き込めないのはなぜですか?

フォルダの所有者が他のユーザーが作成したフォルダに書き込めないのはなぜですか?

syncちょうどその場所にという新しいディレクトリを作成しました/home/sync。私はユーザーとしてディレクトリを作成しliamchown -R rslsync:rslsync /home/syncrslsync私はグループliamに私を追加しました。rslsync

test次に、nowというディレクトリに別のフォルダを作成しました/home/sync/testrslsyncフォルダの場所を指定しようとすると、そのフォルダへの書き込み権限がないことを示す/home/sync/testメッセージが表示されます。rslsync私はそれを実行し、ls -lそれを示していますroot root

トップレベルのディレクトリフォルダの所有者がrslsync自分と同じグループの他のユーザーが作成したサブフォルダの1つにアクセスできないのはなぜですか?ここで何か抜けましたか?

編集する

drwxr-xr-x. 3 rslsync rslsync 18 Aug 26 17:09 /home/sync

drwxr-xr-x. 2 root    root     6 Aug 26 17:09 /home/sync/test

test私が使用するフォルダを作成するとき、それ以外のsudoフォルダを作成することはできません。

グループリアムはこんな感じです。

liam : liam wheel rslsync

答え1

デフォルトでは、作成された新しいディレクトリとファイルは作成プロセスのユーザーとグループを継承します。プロセスは明示的に別のグループ(プロセスがメンバーである)に設定できます。それ以外の場合は、ディレクトリに次のものが必要です。setuid/setgidビットが設定されると、所有者/グループはディレクトリと一致するように設定されます。

デフォルトのファイル権限はプロセスによって決定されます。マスク。一般的なumask値(022および027)は、ファイルとディレクトリを誰でも書き込むことができません。

ディレクトリの所有者とグループは、root:rootディレクトリに書き込めないためです。また、説明によると、ファイルを作成したようです。(sudoを使う?)ユーザーの代わりにリアム

さらに、Linuxのファイル権限チェックは、現在のディレクトリから始まるフルパスに対して行われます。パスのディレクトリにプロセスユーザー/グループに対する実行(+ x)​​権限がない場合、アクセスは拒否されます。

ファイル権限を設定するもう1つの方法は、POSIXアクセス制御リストを使用することです。man 5 acl。 ACLのサポートは、使用しているファイルシステムによって異なります。これを有効にするには、フラグをインストールする必要があります。

答え2

  1. Linuxでは、各ファイルまたはフォルダの所有権と権限は、親ディレクトリの状態に関係なく、他のすべてのフォルダやファイルとは別に処理されます。任意の場所に新しいフォルダを作成すると、そのフォルダを作成したユーザーの所有権が得られます。これはLinuxセキュリティモデルにとって良いことで決定的なものです。

  2. lsコマンドが「root:root」を提供した場合、rootはファイル/フォルダを作成しました(または誰かが作成しましたが、chown root:root明らかにユーザーrslsync(またはliam)は「root」グループに属していません(そして属してはいけません)。まさにその理由です。グループ「root」は権限フラグの「グループ」フィールドにある権限を取得しませんが、「その他」フィールドに指定された権限を取得します。これらのフィールドの標準権限には権限がありません。すべて...

答え3

あなたの質問に回答しました。

ls -l ショールート:ルートあなたが書いたchown -R rslsync:rslsync

これは、少なくとも rslsync ユーザーが次に属さない場合を意味します。 このディレクトリにグループを書き込むことはできません。

ここで焦点を当てていないのは、ユーザーがフォルダをliam作成した理由root:rootですが、これは別の質問です。

groupsユーザーに出力を表示できますか?

答え4

解決策が見つかりました。

.service ファイルに移動
sudo vi /usr/lib/systemd/system/resilio-sync.service

この行を現在のユーザー名に変更してください。

ユーザー=aurelien.izoulet
グループ=aurelien.izoulet
環境=”SYNC_USER=aurelien.izoulet”
環境=”SYNC_GROUP=aurelien.izoulet”

systemctl を再起動します。
sudo systemctl daemon-reload

その後、rslsyncサービスを再起動すると機能します!

関連情報