Help us understand the problem. What is going on with this article?

Azure Linux VMでFile storageをマウントしても権限は後から変更できない

More than 1 year has passed since last update.

[結論]

Azure Linux VMではAzure File Storage(ファイルストレージ)をcifs mountができるが、cifs mountの仕様上、後から権限や所有者を変更することはできない

[検証]

Linux VMにAzure File Storageをマウントする方法はこちらから

Linux で Azure Files を使用する https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-linux

使用環境はこちら

[root@standard-c74 ~]# uname -r
3.10.0-693.11.6.el7.x86_64
[root@standard-c74 ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

まずは前提パッケージのインストール

[root@standard-c74 ~]# sudo yum install samba-client samba-common cifs-utils

続いてマウントするためのコマンドを取得。
Azureポータル > すべてのサービス > ストレージアカウントストレージアカウント > ストレージアカウント名

ファイル > マウントしたい共有名(なければ新規作成する) > "接続" > "Linuxからの接続"
image.png

マウントしたいディレクトリを作成して、マウント。パスワードは伏せています

[root@standard-c74 ~]# mkdir /mountshare
[root@standard-c74 ~]# sudo mount -t cifs //standarddiag392.file.core.windows.net/fileshare /mountshare/ -o vers=3.0,username=standarddiag392,password=xxxxxxxxxxxxxxxxxxxxxx,dir_mode=0777,file_mode=0777,sec=ntlmssp

結果の確認。最後の行で、マウントできているのがわかる

[root@standard-c74 ~]# df
Filesystem                                         1K-blocks    Used  Available Use% Mounted on
/dev/sda2                                           30929148 1252536   29676612   5% /
devtmpfs                                             8196964       0    8196964   0% /dev
tmpfs                                                8207772       0    8207772   0% /dev/shm
tmpfs                                                8207772   24876    8182896   1% /run
tmpfs                                                8207772       0    8207772   0% /sys/fs/cgroup
/dev/sda1                                             508580   80480     428100  16% /boot
/dev/sdb1                                           32895696   49180   31152468   1% /mnt/resource
tmpfs                                                1641556       0    1641556   0% /run/user/1000
//standarddiag392.file.core.windows.net/fileshare 5368709120       0 5368709120   0% /mountshare

適当にファイルを作ってみる。権限は777で持ち主はrootのようだ。

[root@standard-c74 ~]# touch /mountshare/hoge
[root@standard-c74 ~]# ls -ltr /mountshare/hoge
-rwxrwxrwx. 1 root root 0 Feb 27 12:58 /mountshare/hoge

権限を変えてみるも、変わらないことがわかる。

[root@standard-c74 ~]# chmod 755 /mountshare/hoge
[root@standard-c74 ~]# ls -ltr /mountshare/hoge
-rwxrwxrwx. 1 root root 0 Feb 27 12:58 /mountshare/hoge

[原因]

改めてマウントしたときのコマンドを確認してみると、権限を777にしているような記載が見える

[root@standard-c74 ~]# sudo mount -t cifs //standarddiag392.file.core.windows.net/fileshare /mountshare/ -o vers=3.0,username=standarddiag392,password=xxxxxxxxxxxxxxxxxxxxxx,dir_mode=0777,file_mode=0777,sec=ntlmssp

これ=> dir_mode=0777,file_mode=0777`

mount.cifsのドキュメントを読んでみる。

https://linux.die.net/man/8/mount.cifs

dir_modeを変更することでディレクトリのアクセス権限、file_modeを変更することでファイルのアクセス権限を指定できるようだ。
また、uid, gidを設定することで所有者や所有グループも指定できるようだ。

たとえば、所有者をnmikuniというユーザにしてアクセス権をディレクトリは755, ファイルは744にしてみる(一旦アンマウントするのを忘れずに)

[root@standard-c74 ~]# id nmikuni
uid=1000(nmikuni) gid=1000(nmikuni) groups=1000(nmikuni)
[root@standard-c74 ~]# sudo mount -t cifs //standarddiag392.file.core.windows.net/fileshare /mountshare/ -o vers=3.0,username=standarddiag392,password=xxxxxxxxxxxxxxxxxxxxxx,dir_mode=0755,file_mode=0744,sec=ntlmssp,uid=1000,gid=1000```

ディレクトリの中身を増やして、再度確認。

```shell-session

[root@standard-c74 ~]# ls -ltr /mountshare
total 0
-rwxr--r--. 1 nmikuni nmikuni 0 Feb 27 12:58 hoge
drwxr-xr-x. 2 nmikuni nmikuni 0 Feb 27 13:17 foodir

変わっていることが確認できた。しかし、権限は一律であり、マウントオプションで「見え方」が変わるだけである。

[まとめ]

Azure Linux VMでAzure File Storageをcifsマウントする際は、mountする際に権限や所有者を設定できるものの、後から変更することができない。
しかしながら、一律の権限でよければ以下のパラメータを指定することで設定ができる。

  • dir_mode
  • file_mode
  • uid
  • gid
n_mikuni
IoTとAzureが好きです。株式会社ソラコムのCustomer Reliability Engineer
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした