ファイルとディレクトリの属性

モードとマスク

drwxr-xr-x  e01234  e03   directory
 rwx------  e01234  e03   file
  • モード:ファイルの型とアクセス権を制御する16ビット(8進数表現する)
  • モードは,ls -lコマンドで左側に表示される.
    上位4bituidgidstickyusergroupothers
    sstrwxrwxrwx
    1111111111111111

型:

ls -l上位4bit(8進表現)上位4bit意味
-0101000plain file(通常のファイル)
d0040100ディレクトリ
l0121010シンボリックリンク
c0020010文字型デバイスファイル
b0060110ブロック型デバイスファイル
s0141100socket
p0010001名前付きパイプ

chmodコマンド

パーミッションの変更

文字意味
uuser
ggroup
oothers
aall
rread
wwrite
xexecute

chownコマンド

所有者(owner)の変更

chgrpコマンド

グループの変更

例:

% ls -l
drwxr-xr-x    2 koji     teach        4096 Jun 27 08:51 public_html/
-rw-r--r--    1 koji     teach           4 Jul  4 00:41 test.txt

よく使われるモード

ls -lの表示8進数
rw-r--r--644
rwxr-xr-x755
rw-------600
rwx------700
例:
% chmod 755 file1
% chmod g+r file2

8進数

2進数8進数パーミッション
1117rwx
1106rw-
1015r-x
1004r--
0113-wx
0102-w-
0011--x
0000---

set-uidビット,set-gidビット

実行ファイルのOwner,Groupの権限でユーザが実行するためのモード ユーザ e155701 グループ e15 が,以下のコマンドhogehogeを実行したとき,

モードコマンド実効ユーザ実効グループ
通常-rwxr-xr-x e155701 e15 hogehogee155701e15
set-uidビットがオン-rwsr-xr-x root wheel hogehogeroote15
set-gidビットがオン-rwxr-sr-x root wheel hogehogee155701wheel
% ls -l /{,usr/,usr/local/}{,s}bin/ | grep 'r[-w]s'

上記のコマンドで,set-uidビット,set-gidビットが立っているファイルを探そう.

stickyビット

ディレクトリのOtherに対して適用されて,任意のユーザに読み書き可のディレクトリ下の削除権限をオーナーのみに限るモード(これがオンでないとき,誰にでも読み書きできるうえに,削除もされてしまう.)

% ls -ld /private/tmp 
drwxrwxrwt    18 root  wheel   612 Jul  6 10:26 /private/tmp/

というように,otherの実行ビットのところがtで表示される.

% ls -l /{,private/} | grep 'r[-w]t'

上記のコマンドでstickビットが立っているディレクトリを探そう.

シェル(csh)入門

11.2 I/O リダイレクションとパイプ

  • I/O とは
  • コマンドの実行結果を別のコマンドに処理させたい!
  • 現在実行中のプロセス数は?
  • リダイレクション)ps aux > result ; wc result
  • パイプ)ps aux | wc
  • 標準入力 stdin
  • 標準出力 stdout
  • 標準エラー出力 stderr

11.2.1 リダイレクションとは

  • 標準出力をターミナルからファイルに変更
    ps aux > result
  • 標準入力をターミナルからファイルに変更
    cat < result

11.2.3 パイプ

  • コマンドの実行結果を標準出力から標準入力に変更
    e.g.) ps aux | wc
    「ps aux」による出力を「wc」への入力に変更

11.2.5 I/O リダイレクションとパイプの詳細

$command > file
$command >> file
$command >& file
( $command > file1 ) >& file2
$command1 | $command2
$command1 |& $command2

演習

  • 「ps aux」で全プロセスを出力し,root が実行しているプロセス数を数えよ.リダイレクションを使用する方法と,パイプを使用する方法二通りを考えよ.
    • ヒント1:ps aux による出力結果には,root 以外のユーザによるプロセスも含まれている.この中から root の記載されている行のみを探し出し,その行数を数えると「rootが実行しているプロセス数と考えられる.
    • ヒント2:次の3行が「test.txt」というファイルに書かれているとする.
      abc
      1 2 3
      abc 1 2 3
    • このファイルから「abc」という文字列が含まれている行は
      % grep abc test.txt
      として抜き出すことが出来る.
    • ヒント3:ファイル内の行数を数えるには
      % wc -l test.txt
      とする.

11.3 変数

  • 変数
  • 変数名
  • 変数の値
  • 変数の値を参照
  • 変数に値を代入

11.3.2 シェル変数

  • set
    set test=123
    echo $test
    unset test

11.3.3 環境変数

csh

  • setenv
    setenv test "hello"
    echo $test
    zsh
    echo $test
    
    exit
    unsetenv test

zsh

  • export
    export test="Hello"
    echo $test
    zsh
    echo $test
    
    exit
  • unset
    unset test

11.3.4 シェル変数と環境変数の違い

  • シェル変数はシェル毎に異なるが,環境変数は引き継がれる.
  • シェル変数では変数の値にリストが許される
    echo $path[1]

11.4 メタキャラクタとエスケープ

  • cshが解釈する文字=cshのメタキャラクタ
    >
  • メタキャラクタの機能をオフにする=エスケープ
    ?, '', ""

11.5 ファイル名置換

  • main.c と subroutine.c という二つのファイルで動くプログラムを簡単にコンパイルするには?
  • * と ?
  • [str]

11.5.4 ファイル名補完

  • 補完できる部分を補完: Esc, Tab
  • 補完候補を表示: C^d

11.6 実行制御

  • フォアグラウンドジョブ
  • バックグラウンドジョブ: コマンド実行時に,コマンドライン最後尾に「&」を付ける
  • 順次実行
    $command1 ; $command2 ; $command3
  • コマンド1が正常終了ならコマンド2を実行
    $command1 && $command2
  • コマンド1が異常終了ならコマンド2を実行
    $command1 || $command2

11.7 ヒストリ機能

  • history
  • C^p, C^n もしくはカーソルキーの上下
  • !


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-18 (木) 15:00:21 (855d)