問題
新しく作成したテキストファイルのパーミッションを変更し、自分だけが読み書きできるようにしてください。
解答
$ touch newfile.txt $ chmod 600 newfile.txt
解説
chmod: ファイルのパーミッションを変更するコマンドです。
600: パーミッションを表す8進数です。
6: 所有者(自分)のパーミッション。読み書きの権限を意味します。
0: グループとその他ユーザーのパーミッション。読み書き実行の全ての権限を禁止します。
ファイルのパーミッションについての詳細を見てきます。
$ ls -l newfile.txt
をすると、newfile.txtに付与されたファイルパーミッション(アクセス権限)を確認することができます。
上記コマンドを実行すると
-rw------- 1 pi pi 0 Nov 22 11:22 newfile.txt
のような値が出力され、-rw-------がパーミッションに関する内容になります。
最初の1文字目の - はファイルタイプになりまして、各々の値は下記になります。
-: ファイル
d: ディレクトリ
l: シンボリックリンク
b: ブロックデバイス
c: キャラクタデバイス
p: パイプ
s: ソケット
ファイルタイプに関しては今回の内容とは関係ありませんので、ここまでにしておきます。
-rw-------は、最初の一文字がファイルタイプで、残りの文字列でオーナー、グループとその他のユーザに設定したファイルパーミッションになります。
構成は-(ファイルタイプ)rw-(オーナー)---(グループ)---(その他のユーザ)になりまして、今回の内容では、オーナーにのみ rw- のパーミッションが付与されていることがわかります。
rw-等の意味ですが、
r: 読み取り
w: 書き込み
x: 実行
-: 権限なし
になりまして、オーナーにのみ読み取りと書き込みの権限が付与されていることがわかります。
グループにもオーナーと同じ権限が付与されていた場合は、-rw-rw---- の表記になります。
上記の内容を踏まえた上で、
$ chmod 600 newfile.txt
の600の値について見ていきます。
6(オーナー)0(グループ)0(その他のユーザ)になりまして、オーナーにのみ 6 の権限を付与するという意味になります。
rwxの各々の文字には8進数の数値が振り分けられていて、
r: 4
w: 2
x: 1
になります。
読み書き(rとw)を付与したい場合は、これらを合算して、r(4) + w(2) で 6 を付与すれば良いことになります。
実行権限も付与したい場合は、r(4) + w(2) + x(1) で 7 になります。
グループにも読み書き権限を付与したい場合は、chmodの後に 660 を付与すれば良いです。
シェルスクリプトを実行する前に、
$ chmod +x sample.sh
でファイルに権限を付与する必要がありますが、この時は x の実行権限を付与するという意味になります。