私はこれをDebian Jessieのクリーンインストールでテストしましたが、他のマシン(Ubuntu 12.04など)でもこの問題があります。基本インストールに加えて、Sudo
、samba
、およびcifs-utils
をインストールしました。
ルートファイルシステムでACLを有効にし、共有ディレクトリを作成しました。
Sudo mount -o remount,acl /
mkdir -p /home/ryan/shared
setfacl -d -m u:ryan:rwx /home/ryan/shared
すべてのデフォルトを/etc/samba/smb.conf
のままにして、1つの共有を追加しました。
[shared]
comment =
path = /home/ryan/shared
writable = yes
valid users = ryan
次に、自分をSambaユーザーとして追加し、サービスを再起動しました。
Sudo smbpasswd -a ryan
Sudo systemctl restart smbd
次に、Samba共有のマウントポイントを作成してマウントし、空のテキストファイルを作成しました。
mkdir -p /home/ryan/mnt/shared
Sudo mount -t cifs -o user=ryan //127.0.0.1/shared /home/ryan/mnt/shared
touch /home/ryan/mnt/shared/linux.txt
また、Windows 8マシンから接続し、windows.txt
という名前の空のテキストファイルを作成しました。
その後、/home/ryan/shared
のディレクトリリストは次のようになります。
-rw-r--r--+ 1 ryan ryan 0 Jun 20 23:45 linux.txt
-rwxrwxr--+ 1 ryan ryan 0 Jun 20 23:46 windows.txt
linux.txt
のACLは次のようになります。
# file: linux.txt
# owner: ryan
# group: ryan
user::rw-
user:ryan:rwx #effective:r--
group::r-x #effective:r--
mask::r--
other::r--
windows.txt
のACLは次のようになります。
# file: windows.txt
# owner: ryan
# group: ryan
user::rwx
user:ryan:rwx
group::r-x
mask::rwx
other::r--
Linuxクライアントからの動作は私が期待するものです。 Windowsクライアントを使用する場合、なぜ異なるのですか? WindowsクライアントにLinuxクライアントと同じ権限を設定するにはどうすればよいですか?
まず第一に、それらの権限のみでACLは必要ありません。 ACLは、ユーザー、グループなどよりもきめ細かいアクセス許可用です。
しかし、あなたの質問に答えるために、私の推測では、Linuxによって作成されたファイルは、ユーザーのumask設定からその権限を取得します。おそらく、他のディレクトリにファイルを作成するときに取得する権限と同じです。
Windows環境には、umaskなどはありません。UNIXグループの概念については何も知りません。 Windowsで作成されたファイルは、smb.confの設定から許可を取得します。このような設定を自分で入力しなかった場合でも、デフォルト値があります。これらの値は、testparm -s -v smb.conf | grep mask
コマンドで確認できます。 smb.confのマスクには、同じumaskと比較して逆の値があります。つまり、権限が-rw-r--r--のファイルを取得するには、022のumaskと644のSamba作成マスクが必要です。