
私が持っているとしましょう:
user1111
IDを持つユーザー1111
user2222
IDを持つユーザー2222
- 上記2人のユーザーが所属する
group3333
IDを持つグループ3333
私が作る:
user1111
、フォルダを含むa
user1111
、ファイルとしてa/b
user2222
、ファイルとしてa/c
フォルダと両方のファイルには777の権限があります。
$ stat --printf='%a %u %g %n\n' a a/b a/c
777 1111 1111 a
777 1111 3333 a/b
777 2222 3333 a/c
これを許可しないという意味は次のとおりですuser1111
。
user1111$ chown -v 2222 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111 to 2222
つまり、ユーザーがこれを行うことを許可する必要はありません。分配する所有権は他のユーザーにあります。
これがなぜ許されないのか理解できません。
user2222$ chown -v 2222 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111 to 2222
つまり、ユーザーができない理由取る他のユーザーの所有権?
@binarystaでより多くの情報を追加するように編集されました。
user1111$ chown -v user2222: a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group2222
user1111$ chown -v user2222:group3333 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group3333
user2222$ chown -v user2222: a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group2222
user2222$ chown -v user2222:group3333 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group3333
答え1
ルートのみがファイルの所有者を変更できます。所有者は、コマンドの実行
root
に使用されるか使用されない限り、所有権を譲渡することはできません。sudo
ファイル所有者は、ファイルが属するグループを変更できます(ファイル所有者がそのグループに属している場合)。ファイルグループは
root
任意のグループに変更できます。所有者以外の所有グループのメンバーは、ファイルの所有グループを変更できません。
setuid:実行可能ファイルに対してsetuid権限が設定されている場合、ユーザーはユーザーと一致するアクセスレベルでプログラムを実行できます。ファイルを所有する。
権限のないユーザーを使用してファイルの所有権を変更できる場合は、次のような多くのセキュリティ問題が発生する可能性があります。
- ユーザーは実行可能スクリプトのuidを設定し、所有権をrootに変更できます。この場合、スクリプトはroot権限で実行されます。
- 所有権を変更すると、実際にファイルを作成した人を追跡することは不可能になります。
- 各ユーザーにクォータが定義されていると、ディスククォータの問題が発生する可能性があります。
- ファイル所有者のみが権限/メタデータを変更できます(
chmod
)。
答え2
root
この機能を持つプロセスのみがCAP_CHOWN
ファイル所有者を変更できます(参考資料を参照man capabilities
)。
ただし、ACLを使用して特定のユーザーまたはグループに対する特別な権限を設定できます(参考資料を参照man setfacl
)。
NFSv4 ACLを使用すると、所有者以外のユーザーまたはグループにACLを変更する権限を付与することもできます(通常、ルート、ファイル所有者、およびプロセスに制限されていますCAP_FOWNER
)。を参照してくださいman nfs4_acl
。