ファイルを設定するときは、setuid
端末で次の操作を行います。
chmod u+s filename
これは素晴らしい作品です。ただし、8進数4000は常にsetuidに関連付けられています(本など)。
私はファイル権限、umask、setuidなどの概念を(ある程度)理解していますchmod
が、8進数4000とsetuidの間の関係はまだ把握できません。説明してください。
ベストアンサー1
これは合意にすぎません。すべての定数識別子は、Linuxソースコードの数字に関連付けられています。そのうちのいくつかはカーネルの最初のバージョンでは非常に古いものですが、いくつかは最近追加されました。
「setuid」に関連する定数は、S_ISUID
以下で定義されます。/uapi/linux/stat.hを含む、多くのLinuxヘッダーの一つです。任意の値で定義できますが、偶然04000になります。
@steeldriverが述べたように、man 2 stat
ファイル権限に使用されるさまざまな定数の意味を理解するのに役立ちます。
S_IFMT 0170000 bit mask for the file type bit fields
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 FIFO
S_ISUID 0004000 set-user-ID bit
S_ISGID 0002000 set-group-ID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
S_IRWXU 00700 mask for file owner permissions
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRWXG 00070 mask for group permissions
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IRWXO 00007 mask for permissions for others (not in group)
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
この例では、定数とその値だけでなく、それらの選択方法も確認できます。開発者/デザイナーが定数を選択し、次のことができます。結合するそれらを。たとえば、S_ISUID and S_IRWXU and S_IRUSR and S_IRGRP = 04740
権限とは、04740
「所有者に対する setuid およびすべての権限と所有グループに対する読み取り権限」を意味します。