Solaris のシステム管理

ファイルアクセスの問題を解決する

以前はアクセスできていたファイルまたはディレクトリにアクセスできない場合、そのファイルまたはディレクトリのアクセス権または所有権が変更されていることがあります。

ファイルのアクセス権の変更

表 71-1 は、ファイルとディレクトリのアクセス権を設定する 8 進数値を示しています。これらの数を 3 つのセットで使用して、所有者、グループ、およびその他のユーザーのアクセス権を (この順番で) 設定します。たとえば、値 644 は、所有者に読み取り権と書き込み権を設定して、グループとその他のユーザーに読み取り権のみを設定します。

表 71-1 ファイルのアクセス権を示す 8 進数値

値 

説明 

アクセス権なし 

実行権のみ 

書き込み権のみ 

書き込み権と実行権 

読み取り権のみ 

読み取り権と実行権 

読み取り権と書き込み権 

読み取り権、書き込み権、および実行権 

ファイルとグループの所有権の変更

誰かがスーパーユーザーとしてファイルを編集したために、ファイルやディレクトリの所有権が変更されていることがあります。新しいユーザーのためにホームディレクトリを作成するときは、そのホームディレクトリのドット (.) ファイルの所有者をそのユーザーにすることを忘れないようにしてください。ユーザーが「.」を所有していない場合、そのユーザーは自分のホームディレクトリにファイルを作成できません。

アクセスに関する問題は、グループの所有権が変更されたとき、またはユーザーがメンバーであるグループが /etc/group データベースから削除されたときにも発生します。

ファイルの所有権を変更するには、chown コマンドを使用します。

# chown new-owner filename

new-owner

ファイルの新しい所有者のユーザー名または UID を指定する。指定したユーザー名のエントリが passwd ファイルに存在しなければならない

filename

ファイルまたはディレクトリを指定する 

グループの所有権を変更するには、chgrp コマンドを使用します。

# chgrp new-owner filename

new-owner

新しいグループの所有者のグループ名または GID を指定する。指定したグループ名のエントリが group ファイルに存在しなければならない

filename

ファイルまたはディレクトリを指定する 

ファイルのアクセス権を変更する方法

  1. ファイルのアクセス権を表示します。

    # ls -l filename
    

    -l

    ファイルの現在のアクセス権を含む、長いリストを表示する 

    filename

    ファイルまたはディレクトリを指定する 

  2. ファイルのアクセス権を変更します。

    # chmod nnn filename
    

    nnn

    ファイルの所有者、グループの所有者、およびその他のすべてのユーザーに (この順番で) 割り当てるアクセス権を表す数値 

    filename

    ファイルまたはディレクトリを指定する 

    アクセス権は、指定した数値を使用して変更されます。


    注 -

    ファイル名にメタキャラクタ (* など) を指定したり、ファイル名とメタキャラクタを組み合わせたりすることによって、ディレクトリ内の複数のファイルまたはすべてのファイルのアクセス権を変更できます。


  3. ls -l コマンドを使用して、アクセス権が変更されていることを確認します。

    $ ls -l filename
    

    長いリストによって、ファイルの現在のアクセス権が表示されます。

例 - ファイルのアクセス権を変更する

次の例は、公開ディレクトリのアクセス権を、744 (読み取り/書き込み/実行、読み取り専用、読み取り専用) から 755 (読み取り/書き込み/実行、読み取り/実行、読み取り/実行) に変更する方法を示しています。

$ ls -ld public_dir
drwxr--r--  1 ignatz   staff    6023 Aug  5 12:06 public_dir
$ chmod 755 public_dir
$ ls -ld public_dir
drwxr-xr-x  1 ignatz   staff    6023 Aug  5 12:06 public_dir

次の例は、実行可能なシェルスクリプトのアクセス権を、読み取り/書き込みから読み取り/書き込み/実行に変更する方法を示しています。

$ ls -l my_script
-rw------- 1 ignatz   staff    6023 Aug  5 12:06 my_script
$ chmod 700 my_script
$ ls -l my_script
-rwx------ 1 ignatz   staff    6023 Aug  5 12:06 my_script

ファイルの所有権を変更する方法


注 -

ファイルまたはディレクトリの所有者を変更するには、そのファイルまたはディレクトリを所有していなければなりません (または、ルートのアクセス権を持っていなければなりません)。


  1. スーパーユーザーになります。

  2. ファイルのアクセス権を表示します。

    # ls -l filename
    

    -l

    ファイルの所有権 (3 番目の列に表示される) を含む、長いリストを表示する 

    filename

    ファイルまたはディレクトリを指定する 

  3. ファイルの所有者を変更します。

    # chown new-owner filename
    

    所有権は、指定した新しい所有者に割り当てられます。

  4. ファイルの所有権が変更されていることを確認します。

    # ls -l filename
    

例 - ファイルの所有権を変更する

# ls -l quest
-rw-r--r--  1 fred   staff    6023 Aug  5 12:06 quest
# chown ignatz quest
# ls -l quest
-rw-r--r--  1 ignatz   staff    6023 Aug  5 12:06 quest

グループの所有権を変更する方法

  1. ファイルのアクセス権を表示します。

    # ls -l filename
    
  2. ファイルまたはディレクトリを所有するグループを変更します。

    $ chgrp GID filename
    

    指定したファイルまたはディレクトリのグループ ID が変更されます。

  3. ファイルの所有権が変更されていることを確認します。

    # ls -l filename
    

例 - グループの所有権を変更する

$ ls -l junk
-rw-r--r-- 1 kryten other 3138 Oct 31 14:49 junk
$ chgrp staff junk
$ ls -l junk
-rw-r--r-- 1 kryten staff 3138 Oct 31 14:49 junk

グループアカウントを編集する方法については、第 51 章「ファイルのセキュリティの適用手順」を参照してください。