chgrp または chown コマンドによってファイルが失われる理由 xattr

chgrp または chown コマンドによってファイルが失われる理由 xattr
[root@localhost ~]# getfattr -m - -d /bin/tcpm
getfattr: Removing leading '/' from absolute path names
# file: bin/tcpm
security.capability=0sAQAAAgAUAAAAAAAAAAAAAAAAAAA=
security.selinux="system_u:object_r:bin_t:s0"

[root@localhost ~]# chgrp 951 /bin/tcpm
[root@localhost ~]# getfattr -m - -d /bin/tcpm
getfattr: Removing leading '/' from absolute path names
# file: bin/tcpm
security.selinux="system_u:object_r:bin_t:s0"

chown uid /bin/tcpm以上chgrp gid /bin/tcpm/bin/tcpm損失xattr(security.capability)

/bin/tcpm#サプライヤーtcpm-kmod

ベストアンサー1

coreutils.info関連文書chown説明する:

'chown'コマンドは時々set-user-IDまたはset-group-ID許可ビットをクリアします。この動作は、デフォルトの「chown」システムコールのポリシーと機能によって異なります。これにより、「chown」コマンドの制御を超えたシステム固有のファイルモードの変更が発生する可能性があります。たとえば、「chown」コマンドは、適切な権限を持つユーザーが呼び出すとき、またはこれらのビットが実行権限以外の機能(強制ロックなど)を示す場合、これらのビットには影響しない可能性があります。疑わしい場合は、基本的なシステム動作を確認してください。

これでchown()システムコール(例:man 2 chown):

権限のないユーザーが実行可能ファイルの所有者またはグループを変更すると、S_ISUIDおよびS_ISGIDモードビットがクリアされます。 POSIXchown()は、ルートが実行されたときにこのようなことが起こるべきかどうかを指定しません。 Linuxの動作はカーネルのバージョンによって異なり、Linux 2.2.13以降、rootは他のユーザーと同じように扱われます。非グループ実行ファイル(つまり、S_IXGRPビットが設定されていないファイル)の場合、S_ISGIDビットは強制ロックを表し、chown()によってクリアされません。

実行可能ファイルの所有者またはグループがユーザーによって変更されると、そのファイルのすべての機能セットが消去されます。

つまり、実行可能ファイルの所有者またはグループが変更されるたびに、システムはそのファイルに対する特別な権限を自動的に削除します。これには、SUID/SGID ビットだけでなく機能も含まれます。

特別な権限の削除はコマンドによって実行されませんが、これらのコマンドが操作を実行するために使用するシステムコールによって実行chownchgrpれるため、ファイルグループまたは所有者を変更する別の方法を使用する場合は、特殊権限も削除する必要があります。

特別な権限を削除する理由は明記されていませんが、私の考えでは、他のユーザーおよび/またはルート所有プロセスを操作してグループまたは所有者を変更することで、ユーザーが追加の権限を取得できるようにする一連の攻撃を防ぐことができます。あります。特権プログラム。

おすすめ記事