Linux のファイル権限は、ユーザー、グループ、ファイル権限、デフォルトの権限、隠し属性、ACL など、複雑すぎると感じていますか。さらに、特別な権限が追加されました。 3秒髪の毛がかわいそう〜。
ファイルを見てみましょう
ls /usr/bin/passwd -l -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
ファイルが見つからなかったのですが、なぜ奇妙なものが表示されたのでしょうか?この s はファイル所有者の x の上に表示され、Set UID (略して SUID) と呼ばれます。所属するグループの x の上に表示される場合は、SGID を意味します。他の人の x の上にある場合、それは Sticky を意味します。
次の表は、各特別な権限の使用方法を説明しています:
ディレクトリ | ||
このユーザーは、このプログラムの所有者権限を継承します | 意味なし | |
#このユーザーは、このプログラムのグループ権限を継承します。 | ユーザーがこのディレクトリ内に作成したすべてのファイルは、このディレクトリのユーザー グループを自動的に継承します。 | |
Senseless | ディレクトリ内の各ユーザーは、自分のファイルまたはディレクトリを削除、移動、名前変更することしかできません |
Linux では、各ユーザーが自分のパスワードを変更でき、root はすべてのユーザーのパスワードを変更できることがわかっています。なぜ一般ユーザーもパスワードを変更できるのか考えたことはありますか?パスワードは /etc/shadow ファイルに保存されていませんか?このファイルには、一般ユーザーには書き込み権限がありません。
# ls -l /etc/shadow ---------- 1 root root 969 Sep 10 09:37 /etc/shadow
これが SUID の目的です。一般ユーザーは passwd コマンドを通じてパスワードを変更できます。実行中、ユーザーは一時的にファイルの所有者、つまり root の権限を持つことになるため、一般のユーザーはパスワードを変更できます。ファイルの特別なアクセス許可が SGID の場合、実行中にファイルが属するグループのアクセス許可が所有されます。
SGID はファイルに作用するだけでなく、ディレクトリにも作用します。その機能はファイルとディレクトリではまったく異なることに注意してください。シナリオを使用して、ディレクトリに対する SGID の役割を説明します。
以下では、シナリオをシミュレーションします。会社はプロジェクトを開発する必要があり、プロトタイプの図面が提供され、それを設計のために設計部門に引き渡す必要があります。次に、ディレクトリ project1_ps を作成します。設計部門のすべての担当者は、このディレクトリ内のファイルに対する rwx 権限を持っています。
Linux では、新しいファイルまたはディレクトリを作成するとき、所有者は自分自身であり、そのファイルまたはディレクトリが属するグループは自分が属するグループであることがわかっています。この方法では、デザイナー a が新しいファイルを作成すると、他のユーザーがこのファイルに対する他のユーザーのアクセス許可を持ちますが、これは要件を満たしません。したがって、要件を満たすには SGID が必要です。
# groupadd design #创建design用户组 # useradd -G design --no-create-home dgn1 # 创建用户 # useradd -G design --no-create-home dgn2 # 创建用户 # id dgn1 uid=1003(dgn1) gid=1004(dgn1) 组=1004(dgn1),1003(design) # id dgn2 uid=1004(dgn2) gid=1005(dgn2) 组=1005(dgn2),1003(design) # mkdir design # 工作目录 # chgrp design design/ # chmod 2770 design/ <== 如果是SUID则是4770 # ll -d design/ drwxrws--- 2 root design 4096 5月 5 19:06 design/ # su dgn1 $ umask 0022 $ umask 0002 $ touch design/1.ps $ ls design -l 总用量 0 -rw-rw-r-- 1 dgn1 design 0 5月 5 19:31 1.ps <=== 新创建的文件默认组为design了
最後に、Sticky を見てみましょう。これは非常に簡単に理解できるもので、ディレクトリ内の各ユーザーは、自分のファイルまたはディレクトリの削除、移動、または名前変更のみを行うことができます。実際、/tmp ディレクトリはこの特別なアクセス許可を使用します。
rree以上がLinux システムでのファイルに対する特別なアクセス許可の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。