A certain engineer "COMPLEX"

.NETでLinuxと遊んでみる Visual Studio Code編 第4回

Introduction


前回は、System.IO.DirectoryInfoを使って、ファイルの一覧を列挙してみました。

.NETでLinuxと遊んでみる Visual Studio Code編 第3回
Introduction前回は、デバッグ時に引数を指定して実行してみました。今回はファイルパスを使ったAPIのメモです。System.IO.DirectoryInfo相対パス扱いなの?前回、デバッ...

今回はファイルへのアクセス可否についてです。

May I open this file?


Windows上のC#なら、ファイルに書き込みできるかどうか等は、実際にファイルへのストリームを作成してみたりします。

では、Linuxでこれを実施するとどうなるでしょう?
ありがちなのは、所有者がrootになっていて、root以外が読み込みも出来ないパターンです。
例えば、/etc/sudo.confがそうです。

なので、こんなソースを用意してみました。

引数で指定したファイルを開くことが出来れば、'' can be opened!!と表示されます。
ファイルを開こうとして、例外を投げれば、開けなかった理由が表示される、というシンプルなテストです。

ソースを記述したら、プロジェクトフォルダで

を実行します。
これでビルドが成功するはずです。

まずは、一般ユーザで確認します。
whichでdotnetコマンドの場所を調べているのは、rootユーザでdotnetまでのパスが通っていなかったので、実施しているだけです。
パスが通っているなら不要です。
引数のファイルパスはdotnet runの直後に追記することで指定できます。

アクセスが拒否されています。

続いて、rootで確認します。

無事にアクセスできました。

Conclusion


基本的なアクセス権も.NET Coreで対処できそうです。
次回は、もう少し高度な方法で読み書きできるかを調べてみたいと思います。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。