LinuxServer ファイル管理について 所有者とアクセス権
ファイル、ディレクトリの所有者
ファイルやディレクトリを作成すると、作成したユーザが所有者として設定されます。
また、作成したユーザが所属するグループがファイル、ディレクトリの所有グループとして設定されます。
‘ls -l’コマンドでファイルを所有しているユーザとグループを確認できます。
[コマンド実行例]hoge1.txtはユーザ’test’、グループ’experiment’が所有している
$ ls -l hoge1.txt
-rw-rw-r– 1 test experiment 3777 11月 2 13:31 hoge1.txt
ファイル、ディレクトリのアクセス権
アクセス権とはユーザに対し、ファイルやディレクトリへどのような操作を許可するかを設定する機能です。
権限には「読取(Read)」「書込(Write)」「実行(eXecute)」の3種類があり、ルートユーザ(root)は全てのファイルにアクセス許可があります。
アクセス権
権限 | 表記 | ファイルへの権限 | ディレクトリへの権限 |
読取 | r | ファイルの読込(表示)を許可します | ディレクトリ内のファイル一覧の表示を許可します |
書込 | w | ファイル内容の更新(編集)を許可します | ディレクトリ内でファイルの作成と削除を許可します |
実行 | x | ファイルの実行を許可します コマンドやプログラムの実行を許可します |
ディレクトリ内のファイルへアクセスを許可します cdコマンドでディレクトリ内に移動を許可します |
アクセス権の表記
‘ls -l’コマンドでファイルを所有しているユーザとグループを確認できます。
[コマンド実行例]
$ ls -l hoge1.txt
-rw-rw-r– 1 test experiment 3777 11月 2 13:31 hoge1.txt
drwxrwxr-x 3 test experiment 4096 11月 8 12:04 testdir01
ls -lコマンドでは実行結果の行頭でファイルの種別を表す1文字が付与されます。
「-」はファイル、「d」はディレクトリを表します。
ファイル種別の次から9文字のアルファベットががアクセス権を表示しています。
実行結果において、hoge1.txtでは「rw-rw-r–」が、testdir01では「rwxrwxr-x」がアクセス権にあたります。
アクセス権は3種類のアルファベット(r、w、x)を用いて前から3文字ずつ、所有ユーザ、グループ、
その他ユーザの9文字でパーミッションを表します。
また、アクセス権は読取=4,書込=2,実行=1の数字を用い、3種類のユーザーごとに、与えられた権限を表す数値の和で表すことも可能です。
hoge1.txtの所有ユーザ(test)へは読取(r)と書込(w)許可が付与されておりr(4)+w(2)で6になります。
所有グループ(experiment)へは読取(r)と書込(w)許可が付与されておりr(4)+w(2)で6になります。
非所有ユーザ/グループへは読取(r)のみ許可が付与されておりr(4)で4になります。
三つの数値を合わせて表記すると、hoge1.txtのアクセス権は「664」になります。
testdir01では所有ユーザ(test)は読取(r)と書込(w)と実行(x)の許可が付与されており、r(4)+w(2)+x(1)で7になります。
所有グループ(experiment)へも読取(r)と書込(w)と実行(x)の許可が付与されており、r(4)+w(2)+x(1)で7になります。
非所有ユーザ/グループへは読取(r)と実行(x)の許可が付与されており、r(4)+x(1)で5になります。
三つの数値を合わせて表記すると、testdir01のアクセス権は「775」になります。
数値表記のパーミッションは次のとおりです。
パーミッションの表記
アルファベット | 数値 | 意味 |
rwx | 7 | 全て許可します |
rw- | 6 | 読込と書込を許可します |
r-x | 5 | 読込と実行を許可します |
r– | 4 | 読込と実行を許可します |
-wx | 3 | 書込と実行を許可します |
-w- | 2 | 書込を許可します |
–x | 1 | 実行を許可します |
— | 0 | 権限がありません |
特殊なパーミッション
パーミッションにはSUID(Set User ID)と SGID(Set Group ID)、スティッキービットという特殊なアクセス権があります。
SUIDは実行ファイルに設定され、ファイルを実行したユーザーではなく、ファイルの所有者によって実行するよう設定するパーミッションです。
SUIDが設定されたファイルはファイル所有者の実行権限が「s」で表記され、数値の表記では「4000」を加算します。
passwdコマンド(/usr/bin/passwd)やmountコマンドにはsuidが設定されています。
$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 26688 1月 27 2012 /usr/bin/passwd
$ ls -l /bin/mount
-rwsr-xr-x. 1 root root 39960 6月 19 18:53 /bin/mount
passwdコマンドを例にとりますと、ユーザのパスワードを変更するには、/etc/shadowファイルを編集することになりますが、
一般ユーザーには/etc/shadowファイルを変更する権限はありません。
$ ls -l /etc/shadow
———- 1 root root 1589 11月 14 10:12 /etc/shadow
そこで、passwdコマンドにSUID属性を設定することで、一般ユーザーがpasswdコマンドを実行しても、
passwdコマンドの所有者であるrootの権限で/etc/shadowファイルを編集できるようになっています。