Sambaを使用していくつかのフォルダーを共有するUbuntuサーバーがあります。クライアントが新しいフォルダーまたはファイルを作成するとき、アクセス許可はsmb.confの設定に従って設定されません。
特定の共有の現在の設定:
[share]
path = /mnt/share
browsable = yes
guest ok = no
writable = yes
read only = no
create mask = 0774
directory mask = 0774
write list = netuser
Sambaクライアント(Windows 7ボックス)が「netuser」アカウントを使用してファイルまたはディレクトリを作成する場合、アクセス許可は
drwxr-sr-- 2 netuser sambashare 4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare 0 2012-01-22 21:07 New Text Document.txt
親ディレクトリにはグループIDフラグが設定されているため、sambashareグループ所有者になります。アイデアは、sambaユーザーとサーバーユーザーの両方がsambashareグループに属しているため、ファイルとディレクトリを編集、削除、作成できるようにすることです。ただし、作成されたフォルダーにはグループセットの書き込みフラグがないため、サーバーユーザーはSudoなしでそれらのフォルダーに新しいファイルまたはフォルダーを作成できません。
ディレクトリマスクの追加と削除、ディレクトリモードの強制、ディレクトリセキュリティモード、ディレクトリセキュリティの強制モードをテストしましたが、動作はまだ残っています。新しく作成されたファイルとフォルダーは、意図された774のアクセス許可ではなく、それぞれ764と754を取得します。
私は何が欠けていますか? sambaが正しい許可を設定しないのはなぜですか?
次のパラメーターを使用する必要があると思います。
# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
これらの設定がどのように機能するかについての素敵な説明を探していましたが、 man smb.conf
これらのオプションを使用するには、少し下にスクロールする必要があります。
基本的に、一言で言えば、Windowsの許可はunix(linux)と同じではなく、sambaが許可をマップする方法は少し奇妙です。
多くの試行錯誤の後、これはSGIDとUNIXグループを使用してsamba dirを共有する正しいコードです。ユーザーが匿名で接続するとr/oが取得され、ログインして割り当てられたグループのメンバーである場合はr/wが取得されます。
「admin」という名前のグループを、書き込み特権を持つユーザーのプライマリグループとして設定しました。他のすべてのユーザーは読み取り専用権限を取得します。
私はユーザーに誰も強制しないので、同じファイルで作業している異なる人々が互いに干渉することはありません。
共有ディレクトリにchmod 2755を設定したため、同じグループ「admin」で作成されたディレクトリを継承します
$ chmod -R 2755 /home/shares/test
すべてが正常かどうかを確認します。
$ stat /home/shares/test
Access: (2755/drwxr-sr-x) Uid: (65534/ nobody) Gid: ( 1001/ admin)
/etc/samba/smb.confの関連部分:
[test]
comment = test
path = /home/shares/test
force user = nobody
read only = No
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
この投稿は私を正しい方向に導きましたが、testparmは4つの誤ったディレクティブを明らかにしたので、ここで修正された構成を共有しています。 Sambaでは、指定するディレクティブが少ないほど機能します。
私は同じ問題を抱えていましたが、マスク指示のようなものはすべてdid not私のために働きます(Samba 4.3.11):
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
機能した唯一のオプションは、[global]またはshareセクションの下にありました。
inherit permissions = yes
必要に応じてすべてのフォルダーとファイルのアクセス許可を変更するだけで、将来のフォルダーとファイルは同じアクセス許可を継承します。
他のUnix/Linux/OSX/MacOSデバイスから接続する場合、非常に似た問題があります。指定しない限り、すべての設定は無視されます
[global]
unix extensions = no
そして、smb://<serverhost>
の代わりにcifs://<serverhost>
で接続します。
Here add this code to the Sudo nano smb.conf
and restart Sudo service smbd restart and access from another local PC/computer using connect with smb://<serverhost> to create or edit files/folder html is folder name
[html]
comment = admin access
path = /var/www/html
browsable = yes
guest ok = no
writable = yes
valid users = @admin
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775