web-dev-qa-db-ja.com

作成したディレクトリに適切なアクセス許可を設定するためにsambaを取得できない

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が正しい許可を設定しないのはなぜですか?

16
Zaz

次のパラメーターを使用する必要があると思います。

# 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が許可をマップする方法は少し奇妙です。

18
Panther

多くの試行錯誤の後、これは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では、指定するディレクティブが少ないほど機能します。

8
Andrius K

私は同じ問題を抱えていましたが、マスク指示のようなものはすべて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

必要に応じてすべてのフォルダーとファイルのアクセス許可を変更するだけで、将来のフォルダーとファイルは同じアクセス許可を継承します。

6
Medox

他のUnix/Linux/OSX/MacOSデバイスから接続する場合、非常に似た問題があります。指定しない限り、すべての設定は無視されます

[global]

unix extensions = no

そして、smb://<serverhost>の代わりにcifs://<serverhost>で接続します。

2
Erik Carlseen
 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
0