LoginSignup
3
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-02-27

[結論]

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
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4