Linuxコマンド:chmod

3882 ワード

あなたの2秒のmarkは私が書いた動力で、ありがとうございます!


Linux Command : chmod


ファイルまたはディレクトリの権限の変更


通常のユーザーは自分のファイルの権限ビットしか変更できません.スーパーユーザーはchmodを使用して任意のユーザーの任意のファイルの権限を変更できます.chmodコマンドには、ファイルまたはディレクトリを変更する権限が2つあります.
  • シンボルタイプ変更権限
  • フォーマット:chmod[OPTION]...MODE[,MODE]... FILE...
  • MODE : [ugoa...][[-+=][perms...]...]
  • ugoa
  • u(owner):ファイルはプライマリ、g:ファイルはグループ、o:他のユーザー(u、g以外)、a:すべてのユーザー(いずれも指定しない場合、aはデフォルト)
  • -+=
  • =:付与権限、+:追加権限、-:削除権限
  • perms : rwxst
  • r:読み取り権限
  • ファイル:ファイルの内容を読む
  • ディレクトリ:lsコマンド
  • を使用して、ディレクトリの下にあるすべてのファイルとサブディレクトリをリストします.
  • w:書き込み権限
  • ファイル:新規、修正、削除ファイル内容
  • ディレクトリ:mkdir,rm,mvコマンドを使用して、ディレクトリの下にあるファイルまたはディレクトリの追加、削除、または名前の変更(すなわち、移動ファイル)を行います.

  • x:実行権限
  • ファイル:実行ファイル
  • ディレクトリ:ディレクトリにアクセスする権限、すなわちcdコマンドを使用できます.
  • ※x対応の位置(実行ビット)は、他の文字であってもよい.
  • ファイル属主(u)またはファイル属グループ(g)に対する実行ビット
  • がsであれば、そのファイルを表すset-user-idまたはset-group-idと実行権限xが同時にセットされる.
  • がSであれば、そのファイルのset-user-idまたはset-group-idがセットされ、実行権限xがセットされないことを示す.
  • ※set-user-id,set-group-id下記
  • 参照
  • 他のユーザ(o)に対する実行ビット
  • がtであれば、当該ファイルのスティッキービットと実行権限xがともにセットされていることを示す.
  • がTであれば、スティッキービットがセットされ、実行権限xがセットされないことを示す.

  • # [-wrx------] => [-wrs------]
    $ chmod u+s file
    
    # [-wr-------] => [-wrS------]
    $ chmod u+s file
    
    # [-wrs------] => [-wrS------]
    $ chmod u-x file
    
    # [-wrs------] => [-wrx------]
    $ chmod u-s file
    




  • $ chmod u+x file #  
    $ chmod u=rwx,g=rx,o=x file #  , , 
    $ chmod =r file #  
    $ chmod a=r #  
    $ chmod a-wx,a+r file #  , 
    $ chmod -R u+r directory #   directory  
    
  • デジタルタイプ変更権限
  • フォーマット:chmod[OPTION]...OCTAL-MODE FILE...
  • OCTAL-MODE(8進数)
  • は4個の8進数からなり、各8進数の値の範囲は0~7
  • である.
  • の先頭の0は省略することができ、例:777は0777に等価であり、77は0077
  • に等価である.
  • の8進数は次のように計算されます.
  • 第1の8進数の権限と数字の関連付け:set-user-id:4,set-group-id:2,t:1
  • 残りの3つの8進数の権限と数字の関連付け:w=4,r=2,x=1
  • [-rwxr-xr--]の8進数は754(owner=5,group=5,other=4)
  • である.
  • [-rwsrwSr-T]の8進数は7764
  • である.


  • #   test_file   [-rwxr-xr--]
    $ chmod 754 test_file
    

  • set-user-id, set-group-id

  • user-id,group-id(1ユーザに2つのidがある)の2つのidは/etc/passwdファイルに保存され、ユーザの作成時に書き込まれ、ユーザがログインするたびにログインプログラムによってファイルを読み取り、対応するユーザのidを設定し、OSはユーザのユーザidとグループで対応する権限を持って特定の操作を実行するかどうかを判断する.
  • user-id(ユーザ固有)
  • group-id(デフォルトグループid:ユーザーが作成したファイルのデフォルト所属のグループ(複数の異なるグループに属することができるユーザー)
  • real-user-id,real-group-idはプログラムを実行するユーザ(process owner)、すなわちOSにログインするユーザを指す
  • real-user-id,real-group-id OSにログインするユーザのuser-id,group-id
    real-user-id = user-id (process owner) 
    real-group-id = group-id (process owner)
    
  • effective-user-id, effective-group-id
  • effective-user-id、effective-group-idは実行されるプログラム(プロセス)にとって使用される.ユーザが1つのプログラムを実行するとき、2つの実際に存在するユーザ:1.このプログラムを実行するユーザ:process owner,2.このプログラムファイルはメイン:file owner
  • 通常ユーザがOSにログイン後の
    effective-user-id = real-user-id
    effective-group-id = real-group-id
    
  • .
  • しかし、プログラムファイルのset-user-idまたはset-group-idがセット場合、
    effective-user-id = user-id (file owner)
    effective-group-id = group-id (file owner)
    
  • .
  • effective-user-id、effective-group-idの役割は、あるプロセスがリソースにアクセスしようとしたときに、例えばファイルの読み取り、書き込みを行い、OS(カーネル)は、そのプロセスがファイルに対して適切な権限を持っているかどうかを判断します.判断の根拠はeffective-user-id,effective-group-idである.すなわち、effective-user-id、effective-group-idとリソースファイルのuser-id、group-idが一致するか否かを判断することによって、対応する読み書き実行(rwx)権限が得られる.


  • リファレンス

  • [コマンドテクニック]chmod&Set-User-ID&Set-Group-ID
  • chmod----1つ以上のファイルのアクセスモード(mode)
  • を変更する
  • Linuxファイルプロパティおよびファイルプロパティの変更方法