Java - ファイルのアクセス権を確認し、変更

JavaでファイルのRead、Write、Execute権限を変更する方法について紹介します。

1. Fileがどのアクセス権を持っているかを確認する

Fileは、次のようにパーミッションを確認できるAPIを提供します。

  • File.canExecute():ファイルがexecuteパーミッションを持っていればtrueを返し、そうでない場合はfalseをリ
  • File.canWrite():ファイルがwrite権限を持っていればtrueを返し、そうでない場合はfalseをリ
  • File.canRead():ファイルがread権限を持っていればtrueを返し、そうでない場合はfalseをリ

2. Fileへのアクセス権 Read, Write, Execute 付与

Fileは、次のようにパーミッションを設定することができるAPIを提供します。

  • File.setExecutable():ファイルにexecute許可と、設定が成功した場合trueをリ
  • File.setReadable():ファイルにread権限の付与、設定が成功した場合trueをリ
  • File.setWritable():ファイルにwrite権限の付与、設定が成功した場合trueをリ

3. 権限の変更例

まず、以下のファイルのアクセス権を確認し、変更します。 shellで権限を確認してみると、OwnerにRead、Write、Execute権限がすべて付与されています。

$ ls -al sample.txt
-rwxrwxrwx 1 js js 0 10월 10 12:06 sample.txt

以下は、ファイルのアクセス権を確認し、アクセス権を変更する例です。 Read、Write、Execute権限をすべて制限します。

import java.io.File;
import java.io.IOException;

public class FilePermission {
    public static void main(String[] args) throws IOException {

        File file = new File("/var/tmp/sample.txt");
        if(file.exists()){
            System.out.println("canExecute: " + file.canExecute());
            System.out.println("canWrite: " + file.canWrite());
            System.out.println("canRead: " + file.canRead());

            file.setExecutable(false);
            file.setReadable(false);
            file.setWritable(false);

            System.out.println("- After changing permissions");
            System.out.println("canExecute: " + file.canExecute());
            System.out.println("canWrite: " + file.canWrite());
            System.out.println("canRead: " + file.canRead());
        }

    }
}

Output:

canExecute: true
canWrite: true
canRead: true
- After changing permissions
canExecute: false
canWrite: false
canRead: false

上記のコードを実行した後、shellから再度ファイルのアクセス権を確認してみると、Ownerのアクセス権rwxがすべて回収されたことを確認することができます。

$ ls -al sample.txt
----rwxrwx 1 js js 0 10월 10 12:06 sample.txt

References

Related Posts

codechachaCopyright ©2019 codechacha