Gentooの創蚭者によるLinuxの基本。 パヌト32/4暩限モデル

Linux初心者向けチュヌトリアルシリヌズの第3回からの第2回の抜粋。 Linuxの䞻芁なセキュリティ機胜の1぀に぀いお孊ぶこずができたす。 ぀たり、アクセス暩ずファむル所有暩モデル。





Gentooの創蚭者によるLinuxの基本ナビゲヌション



パヌトI
  1. BASH、ナビゲヌションの基本
  2. ファむルずディレクトリを管理する
  3. リンクおよびファむルずディレクトリの削陀
  4. グロヌブルックアップ
パヌトII
  1. 正芏衚珟
  2. フォルダヌの割り圓お、ファむル怜玢
  3. プロセス管理
  4. テキスト凊理ずリダむレクト
  5. カヌネルモゞュヌル
パヌトIII
  1. ドキュメント
  2. アクセスモデル
  3. アカりント管理
  4. 環境のセットアップ合蚈ずリンク


Linux蚱可モデル



1人のナヌザヌ、1぀のグルヌプ



このセクションでは、Linuxの蚱可ず所有暩モデルに぀いお説明したす。 各ファむルが1人のナヌザヌず1぀のグルヌプに属するこずは既に確認したした。 これは、Linux暩限モデルの本質です。 ls -lコマンドの出力で、ファむルが属しおいるナヌザヌずグルヌプを確認できたす。



$ ls -l /bin/bash

-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash







この䟋では、 / bin / bash実行可胜ファむルはrootナヌザヌずwheelグルヌプに属したす。 アクセス暩モデルを䜿甚するず、所有者、グルヌプ、および他のすべおのナヌザヌに察しお、各ファむルシステムオブゞェクトに察しお3぀の独立したレベルの暩限を蚭定できたす。



「ls -l」を理解する



ls -lコマンドの出力を芋おみたしょう。 リストの最初の列を芋おください。



$ ls -l /bin/bash

-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash







最初のフィヌルド-rwxr-xr-xには、このファむルに察する暩利のシンボリック衚珟が含たれおいたす。 このフィヌルドの最初の文字-は、ファむルのタむプを決定したす。この堎合、通垞のファむルです。 その他の可胜な倀



'd'

'l'

'c' -

'b' -

'p' FIFO

's'







3぀のトリプル



$ ls -l /bin/bash

-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash







フィヌルドの残りは、3぀の文字のトリプルで構成されたす。 最初の3぀はファむルの所有者の暩利を衚し、2番目はファむルのグルヌプの暩利を衚し、3番目は他のすべおのナヌザヌの暩利を衚したす。



"rwx"

"rx"

"rx"







䞊蚘のrは読み取りファむルに含たれるデヌタの衚瀺が蚱可され、wは曞き蟌みデヌタの倉曎ず削陀が蚱可され、xは実行プログラムの実行が蚱可を意味したす。 すべおを収集するず、誰でも内容を読み取っおこのファむルを実行できたすが、このファむルを倉曎できるのは所有者ルヌトだけです。 したがっお、通垞のナヌザヌがこのファむルの内容のコピヌを蚱可されおいる堎合、rootのみがファむルを倉曎たたは削陀できたす。



私は誰



ファむルが属する所有者たたはグルヌプを倉曎する方法を孊ぶ前に、たず珟圚のナヌザヌず所属するグルヌプを芋぀ける方法を芋おみたしょう。 最近suコマンドを䜿甚しおいない堎合、珟圚のナヌザヌはログむンしおいるナヌザヌです。 suを頻繁に䜿甚する堎合、珟圚䜜業しおいるナヌザヌを芚えおいない可胜性がありたす。 䜜業䞭のナヌザヌを確認するには、 whoamiず入力したす。



# whoami

root

# su drobbins

$ whoami

drobbins







私はどのグルヌプに属したすか



所属するグルヌプを確認するには、 groupsコマンドを䜿甚したす 。



$ groups

drobbins wheel audio







この䟋は、私がdrobbins、wheel、およびaudioグルヌプのメンバヌであるこずを瀺しおいたす。 他のナヌザヌがどのグルヌプに属しおいるかを確認したい堎合は、名前を匕数ずしお枡したす。



$ groups root daemon

root : root bin daemon sys adm disk wheel floppy dialout tape video

daemon : daemon bin adm







ナヌザヌず所有者グルヌプを倉曎する



ファむルたたは他のオブゞェクトの所有者たたはグルヌプを倉曎するには、それぞれchownたたはchgrpコマンドを䜿甚したす。 最初にグルヌプたたは所有者の名前を枡し、次にファむルのリストを枡す必芁がありたす。



# chown root /etc/passwd

# chgrp wheel /etc/passwd







別の圢匏でchownコマンドを䜿甚しお、ナヌザヌずグルヌプを同時に倉曎するこずもできたす。



# chown root:wheel /etc/passwd







スヌパヌナヌザヌ特暩なしでchownコマンドを䜿甚するこずはできたせんが、 chgrpを䜿甚しお、ファむルを所有するグルヌプを所属するグルヌプに倉曎できたす。



暩利の再垰的倉曎



chownコマンドずchgrpコマンドは-Rオプションずずもに䜿甚できたす。これにより、このディレクトリ以䞋のすべおのオブゞェクトの所有者たたはグルヌプを再垰的に倉曎できたす。 䟋



# chown -R drobbins /home/drobbins







chmodの玹介



chownずchgrpは、ファむルシステムオブゞェクトの所有者ずグルヌプを倉曎するために䜿甚されたすが、それらに加えお、 ls -lコマンドの出力に衚瀺される読み取り、曞き蟌み、および実行暩限を倉曎するために䜿甚されるchmodず呌ばれる別のプログラムがありたす chmodは2぀以䞊の匕数を䜿甚したす。これらの倉曎を適甚する必芁がある埌続のファむル名たたはファむルのリストでアクセス暩を倉曎する必芁がある方法を説明するメ゜ッド



$ chmod +x scriptfile.sh







䞊蚘の䟋では、+ xがメ゜ッドずしお指定されおいたす。 ご想像のずおり、+ xメ゜ッドは、ファむルをナヌザヌ、グルヌプ、その他すべおのナヌザヌに察しお実行可胜にする必芁があるこずをchmodに䌝えたす。 ファむルを実行するすべおの暩利を奪うこずにした堎合、次のようにしたす。



$ chmod -x scriptfile.sh







ナヌザヌ、グルヌプ、その他すべおのナヌザヌの分離



これたで、 chmodコマンドの䟋は、3組すべおのアクセス暩ナヌザヌ、グルヌプ、その他すべおのナヌザヌのアクセス暩に圱響を䞎えおきたした 。 倚くの堎合、䞀床に1぀たたは2぀のセットのみを倉曎するず䟿利です。 これを行うには、特殊文字を䜿甚しお、倉曎する必芁があるアクセス蚱可のセットを瀺し、その前に+たたは-蚘号を付けたす。 ナヌザヌにはu、グルヌプにはg、他のナヌザヌにはoを䜿甚したす。



$ chmod go-w scriptfile.sh







グルヌプず他のすべおのナヌザヌの曞き蟌み暩限を削陀したしたが、所有者の暩利はそのたた残したした。



暩限をリセット



アクセス暩の原因ずなるビットをオン/オフ状態に切り替えるこずに加えお、特定の倀を䞀床にすべお蚭定できたす。 等号挔算子を䜿甚しお、指定したアクセス暩のみを蚭定するこずをchmodに䌝えるこずができたす。



$ chmod =rx scriptfile.sh







このコマンドを䜿甚しお、すべおの読み取りおよび実行ビットを蚭定し、すべおの曞き蟌みビットをリセットしたす。 特定のトリプルのビットの倀を蚭定したい堎合、等号挔算子の前にそのシンボリック名を指定するこずでこれを行うこずができたす。



$ chmod u=rx scriptfile.sh







数倀モヌド



これたでのずころ、 chmodコマンドの蚱可を指定するための、いわゆるシンボリックな方法を䜿甚したした。 ただし、暩利を指定する別のかなり䞀般的な方法がありたす。4桁の8進数を䜿甚したす。 この構文は、パヌミッションの数倀構文ず呌ばれ、各桁はトリプルのパヌミッションを衚したす。 たずえば、1777幎、777はこのセクションで説明するフラグを所有者、グルヌプ、および他のナヌザヌに蚭定したす。 1は特別な蚱可ビットを瀺すために䜿甚されたす。これに぀いおは埌で説明したすセクションの最埌にある「わかりにくい最初の数字」を参照。 この衚は、数倀ぞのアクセス暩がどのように倉換されるかを瀺しおいたす。



  番号モヌド 
 rwx 7
 rw- 6
 rx 5
 r-- 4
 -wx 3
 -w- 2
 --x 1
 --- 0


数倀アクセス構文



パヌミッションの数倀構文は、次の䟋に瀺すように、ファむルのすべおのパヌミッションを指定する堎合に特に圹立ちたす。



$ chmod 0755 scriptfile.sh

$ ls -l scriptfile.sh

-rwxr-xr-x 1 drobbins drobbins 0 Jan 9 17:44 scriptfile.sh








この䟋では、0755パヌミッションを割り圓おたした。これは、パヌミッション-rwxr-xr-xの組み合わせに盞圓したす。



仮面



プロセスが新しいファむルを䜜成するずき、このファむルに蚭定する暩限を瀺したす。 倚くの堎合、0666の暩利が芁求され党員による読み取りず曞き蟌み、ほずんどの堎合に必芁な暩限よりも倚くの暩限が付䞎されたす。 幞いなこずに、Linuxで新しいファむルが䜜成されるたびに、システムはumaskずいうパラメヌタヌにアクセスしたす。 システムはumask倀を䜿甚しお、より適切で安党な初期アクセス蚱可を䞋げたす。 珟圚のumask蚭定を衚瀺するには、コマンドラむンでumaskず入力したす。



$ umask

0022








Linuxシステムでは、umaskのデフォルト倀は0022です。これにより、他のナヌザヌは新しいファむルを読み取るこずができたすファむルにアクセスできる堎合が、ファむルは倉曎できたせん。 生成されたファむルにより高いレベルのセキュリティを自動的に提䟛するために、umask蚭定を倉曎できたす。



$ umask 0077







このumask倀により、グルヌプおよびその他のナヌザヌは、新しく䜜成されたすべおのファむルに察しお絶察にアクセス暩を持たなくなりたす。 それでは、umaskはどのように機胜したすか 「通垞の」ファむル蚱可の割り圓おずは異なり、umaskはどの蚱可を無効にするかを決定したす。 繰り返したすが、数倀ずメ゜ッドの倀の察応衚を芋おください。



  番号モヌド 
 rwx 7
 rw- 6
 rx 5
 r-- 4
 -wx 3
 -w- 2
 --x 1
 --- 0


この衚を䜿甚するず、0077の最埌の3文字が--- rwxrwxを瀺しおいるこずがわかりたす。 ここで、 umaskが無効にするアクセス蚱可をシステムに衚瀺するこずに泚意しおください。 1぀目ず2぀目を組み合わせるず、グルヌプず他のナヌザヌのすべおの暩限が無効になり、所有者の暩限は倉曎されないこずが明らかになりたす。



suidずsgidの玹介



ログむンするず、新しいシェルプロセスが開始されたす。 これに぀いおは既に知っおいたすが、この新しいシェルプロセス通垞はbashがナヌザヌに代わっお実行されおいるこずを知らない堎合がありたす。 そのため、bashは所有するすべおのファむルずディレクトリにアクセスできたす。 実際、ナヌザヌずしお、私たちは私たちに代わっお操䜜を実行するプログラムに完党に䟝存しおいたす。 たた、実行するプログラムはナヌザヌIDを継承するため、アクセスが蚱可されおいないファむルシステムオブゞェクトにアクセスできたせん。 たずえば、rootを陀くすべおのナヌザヌに察しお曞き蟌みフラグが無効になっおいるため、䞀般ナヌザヌはpasswdファむルの内容を盎接倉曎できたせん。



$ ls -l /etc/passwd

-rw-r--r-- 1 root wheel 1355 Nov 1 21:16 /etc/passwd








ただし、䞀般ナヌザヌは、パスワヌドを倉曎する必芁がある堎合、少なくずも/ etc / passwdの内容を少なくずも間接的に倉曎できる必芁もありたす。 しかし、ナヌザヌがこのファむルを倉曎できない堎合、どうすればよいですか



ズむッド



幞いなこずに、Linux蚱可モデルには、 suidずsgidずいう2぀の特別なビットがありたす 。 実行䞭のプログラムにsuidビットが蚭定されおいる堎合、実行可胜ファむルの所有者の代わりに機胜し、プログラムを起動した人の代わりには機胜したせん。 これで、/ etc / passwdで質問に戻るこずができたす。 passwd実行可胜ファむルを芋るず、その所有者がrootナヌザヌであるこずがわかりたす。



$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd








所有者のトリプルパヌミッションのxではなくsであるこずに泚意しおください。 これは、この特定のプログラムに察しお、suidビットず実行暩限が蚭定されるこずを意味したす。 このため、passwdプログラムを起動するず、起動したナヌザヌではなく、rootすべおのスヌパヌナヌザヌ暩限を持぀ずしお機胜したす。 たた、passwdはスヌパヌナヌザヌ特暩で動䜜するため、/ etc / passwdを問題なく線集できたす。



Suid / sgidの譊告



suidの仕組み、sgidの仕組みも同様です。 これにより、プログラムは珟圚のナヌザヌではなく、グルヌプのアクセス暩を継承できたす。
 !  ,          suid  sgid. -,  suid  sgid        ls -l.   x  ,      s (  ). ,   x        S (  ).
      
      



 !    : suid  sgid     ,            .        suid .  passwd —   ,    suid.
      
      





suidずsgidを倉曎する



suidビットずsgidビットを蚭定および削陀する方法は非垞に簡単です。 これは、suidビットを蚭定する方法です。



# chmod u+s /usr/bin/myapp







たた、次の䟋では、ディレクトリからsgidフラグを削陀したす。 少し䞋のディレクトリでsgidビットがどのように機胜するかがわかりたす。



# chmod gs /home/drobbins







暩利ずディレクトリ



これたで、通垞のファむルの芳点からアクセス暩を怜蚎しおきたした。 ディレクトリに関しおは、いく぀かの違いが珟れたす。 ディレクトリは同じ蚱可フラグを䜿甚したすが、それらを解釈するこずはわずかに異なる意味を持ちたす。



ディレクトリに読み取りフラグが蚭定されおいる堎合、ディレクトリのコンテンツのリストを衚瀺できたす。 曞き蟌みフラグは、ディレクトリにファむルを䜜成できるこずを意味したす。 実行フラグは、ディレクトリに入り、内郚のすべおのサブディレクトリにアクセスできるこずを意味したす。 実行フラグがないず、ディレクトリ内のファむルシステムオブゞェクトにアクセスできたせん。 読み取りフラグがないず、ディレクトリ内のファむルシステムオブゞェクトは衚瀺できたせんが、ディスク䞊のオブゞェクトぞのフルパスがわかっおいれば、ディレクトリ内のオブゞェクトにアクセスできたす。



ディレクトリずsgidフラグ



ディレクトリにsgidビットが蚭定されおいる堎合、内郚で䜜成されたすべおのファむルシステムオブゞェクトはディレクトリグルヌプを継承したす。 この機胜は、ディレクトリツリヌを䜜成する必芁があり、それらすべおが1぀のグルヌプに属しおいる必芁がある堎合に䟿利です。 これは次のように実行できたす。



# mkdir /home/groupspace

# chgrp mygroup /home/groupspace

# chmod g+s /home/groupspace








これで、mygroupグルヌプのナヌザヌは、/ home / groupspace内にファむルずディレクトリを䜜成でき、グルヌプmygroupにも自動的に割り圓おられたす。 このナヌザヌのumask蚭定に応じお、新しいファむルシステムオブゞェクトは、mygroupグルヌプの他のナヌザヌが読み取り可胜、倉曎可胜、たたは実行できる堎合ずできない堎合がありたす。



ディレクトリず削陀



デフォルトでは、Linuxのディレクトリは倚くの状況で最も䟿利な方法で動䜜したせん。 通垞、ディレクトリぞの曞き蟌み暩限がある堎合、誰でもディレクトリ内のファむルの名前を倉曎たたは削陀できたす。 個々のナヌザヌが所有するディレクトリの堎合、この動䜜は通垞問題を匕き起こしたせん。



ただし、倚数のナヌザヌが䜿甚するディレクトリ、特に/ tmpおよび/ var / tmpの堎合、これにより倚くの問題が発生する可胜性がありたす。 これは、誰でもこれらのディレクトリに曞き蟌むこずができ、誰でもファむルを削陀しお名前を倉曎できるためです-それらがそれらに属しおいなくおも 明らかに、ナヌザヌがrm -rf / tmp / *をい぀でも印刷しお他のナヌザヌのファむルを砎棄できる堎合、/ tmpを䞀時的なストレヌゞずしお䜿甚するこずは非垞に困難です。



幞いなこずに、Linuxにはいわゆるスティッキヌビットがありたす。 / tmpにスティッキヌビットが蚭定されおいる堎合chmod + tコマンドを䜿甚、/ tmp内のファむルを削陀たたは名前倉曎できるのは、これらのファむルの所有者たたはスヌパヌナヌザヌのみです。



ずらえどころのない最初の兆候



このセクションを締めくくるために、最埌に数倀構文で䜿甚される最初の文字に泚目したす。 スティッキヌ、suid、およびsgidビットを蚭定するために䜿甚されたす。



  suid sgidスティッキヌモヌド 
 on on on 7
オンオンオフ6
オンオフオン5
オンオフオフ4
オフオンオン3
オフオンオフ2
オフオフオン1
オフオフオフ0


以䞋は、4桁モヌドを䜿甚しお、ワヌキンググルヌプが䜿甚するディレクトリぞのアクセス暩を蚭定する方法の䟋です。



# chmod 1775 /home/groupfiles







宿題ずしお、蚱可蚭定で1755が䜕を意味するかを調べたす。 :)



翻蚳は、 notabenoid.comを䜿甚しお集合的な心によっお実行されたした。 次のbenoidナヌザヌアルファベット順に感謝したす kindacute 、 nekjine 、 Rich 。 Alexei Blazhkoblazhkoa@gmail.com、および䞀連の翻蚳党䜓のむニシ゚ヌタヌであるVBartに感謝したす。



継続するには...




著者に぀いお



ダニ゚ル・ロビンス



Daniel Robbinsは、Gentooコミュニティの創蚭者であり、Gentoo Linuxオペレヌティングシステムの䜜成者です。 ダニ゚ルは劻のメアリヌず元気な嚘2人ずニュヌメキシコに䜏んでいたす。 圌はFuntooの創蚭者兌代衚でもあり、 IBM developerWorks 、Intel Developer Services、およびC / C ++ Users Journalの技術蚘事を数倚く執筆しおいたす。



クリス・ハりザヌ



クリスハりザヌは、1994幎にテむラヌ倧孊米囜むンディアナ州の管理者チヌムに参加し、コンピュヌタヌサむ゚ンスず数孊の孊士号を取埗しお以来、UNIXの支持者でした。 その埌、Webアプリケヌション、ビデオ線集、UNIXドラむバヌ、暗号化保護など、さたざたな分野で働きたした。 珟圚、Sentry Data Systemsで働いおいたす。 Chrisは、Gentoo LinuxやClojureなどの倚くの無料プロゞェクトにも貢献し、 The Joy of Clojureの共同執筆者でもありたす。



アロン・グリフィス



Iron Griffisはボストンに䜏んでおり、過去10幎間、Hewlett-PackardでTru64、Linux、Xen、およびKVM仮想化セキュリティ認蚌甚のUNIXネットワヌクドラむバヌ、そしお最近ではHP ePrintプラットフォヌムなどのプロゞェクトに埓事したした。 プログラミングからの䜙暇には、自転車に乗ったり、ビットをゞャグリングしたり、ボストンレッド゜ックスのプロ野球チヌムを応揎したりしながら、プログラミングの問題を䞀掃するこずを奜みたす。



All Articles