Linux uid の機能はユーザーを識別することであり、各ユーザーには UID があります。Linux には 3 つの UID 識別子があります: 1. RUID、実 UID、実際のユーザー ID; 2. EUID、実効 UID、実効ユーザー ID; 3. SUID、保存セット ユーザー ID、保存セット ユーザー ID。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
Linux uid は何に役立ちますか?
Linux の UID
Linux では、UID はユーザー (alice、bob、root など) を識別するために使用されます。 Android では、UID はアプリケーションまたはシステム サービスを識別するために使用されます
RUID (実際の UID、実際のユーザー ID) 、EUID (実効 UID、実効ユーザー ID) 、SUID (保存された Set-user-ID 、保存された) です。設定ユーザーID)。
passwd の所有者は root ですが、他のユーザーにも passwd の実行権限があり、passwd 自体には SUID 権限 (s rws) 。 次に、非 root ユーザーが passwd 実行可能ファイルを実行すると、
生成されたプロセスの EUID
は
root ユーザーの UID になります。つまり、この場合、生成されたプロセスは実際に root ユーザーの ID を持つバイナリ ファイルを実行します。 ##SUID 権限は時間に依存することに注意してください。#:
はファイルの実行中のみ有効です 。 2. setuid 関数と setresuid 関数
##2.1 setuid 関数上記では、パスワードを実行するプロセス、EUID は次のようになります。パスワードの所有者の UID (root) ユーザーの UID (0)。したがって、ケース(1)に該当します。
su ファイルには
-rwsr-xr-x
権限もあります。したがって、Android では、通常のプロセスが Runtime.getRuntime().exec("su") を通じてシェルプロセスを起動して su を実行する場合も (1) の状況に陥ります。
#2.2 setresuid 関数
参考 https://blog.csdn.net/damotiansheng/article/details/39674115
② 3 つのパラメータ ruid、euid、および suid はそれぞれ、現在のプロセスの特定の UID 値に等しいです。 例:現在のプロセスが RUID=100、EUID=0、SUID=300
の場合、元の euid=0 現在のプロセスの RUID=100、EUID=300 であるため、setresuid(200,300,100) を実行できます。 SUID=200
これら 3 つのパラメータはすべて現在の UID の 1 つであるため、setresuid(200,300,100) は実行できます。
ただし、400 が現在の UID のいずれにも等しくないため、setresuid(100,200,400) は実行できません。 。
以上がLinux UIDの用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。