Linux および SMB 権限が期待どおりに機能しません。

Linux および SMB 権限が期待どおりに機能しません。

クライアントファイルを安全に受信するために、CentOSサーバーをSFTPサーバーとして構成しました。その後、SMBを介してこれらのファイルにアクセスできる必要があります。

  • 私のSFTP "root"は/var/inbound/にあります。
  • その後、/var/inbound/の下に各顧客のディレクトリがあります(例:/var/inbound/customer1/
  • その後、ユーザーを刑務所に送信するために、各顧客ディレクトリの下にuploadsというサブディレクトリがあります(例:/var/inbound/customer1/uploads/)。

期待どおりに機能する権限があり、SFTPへのクライアントアクセスをサポートするためにすべてが正常です。 1つの重要な側面は、ユーザーを/var/inbound/ディレクトリに「閉じ込める」ことです。

これで/var/inboundディレクトリを作成しました。

sudo mkdir /var/inbound
sudo chown root.root /var/inbound #root must be owner of directory

各クライアントのサブディレクトリを作成する方法は次のとおりです。

sudo mkdir -p /var/inbound/[username]/uploads
sudo chown root /var/inbound/[username]
sudo chmod go-w /var/inbound/[username]
sudo chown [username]: /var/inbound/[username]/uploads
sudo chmod 770 /var/inbound/[username]/uploads

メモ:/var/inbound/[username]/ および /var/inbound/[username]/uploads/ ディレクトリには特別な権限セットが必要です。 [username]をそのユーザーに置き換えて、次のコマンドを実行します。

次に、SSH/SFTP 構成の残りの部分について説明します。ただし、ユーザーを自分のディレクトリに閉じ込め、SCPONLYを使用してSSH /コンソールアクセスを無効にできるだけで十分です。

これで状況が複雑になります。

これで、特定のアカウントにSMBアクセス権を付与する必要があります。ファイルアクセス)をWindows Serverホストからアクセス可能な/ var / inbound /ディレクトリにコピーします。私はサブディレクトリを含む/var/inboundディレクトリをWindows共有として扱いました。ただし、一部のファイルを表示できず、必要なファイルへの書き込みアクセス権がありません。

$ ls -l /var/inbound
total 0
drwxr-xr-x. 3 root root 20 Jan  5 11:53 testuser

$ ls -l /var/inbound/testuser
total 0
drwxrwxr-x. 2 testuser sftponly 53 Jan  5 12:26 uploads

今これは私がアクセスしたいディレクトリですファイルアクセスアカウント:

$ ls -la /var/inbound/testuser/uploads/ 
total 12 
drwxrwx---. 2 testuser    sftponly   53 Jan 5 15:12  . 
drwxr-xr-x. 3 root        root       20 Jan 5 11:53  .. 
-rw-r--r--. 1 fileaccess  sftponly   30 Jan 5 12:26  test2.txt 
-rw-r--r--. 1 testuser    sftponly   26 Jan 5 12:25  test3.txt 
-rw-rw-r--. 1 dmgmadmin   dmgmadmin  14 Jan 5 11:53  test.txt

SMB経由で接続する場合ファイルアクセスアカウントではtest.txtしか表示できませんが、ファイルを開くことはできません(アクセスが拒否されました)。

これは私のsmb.confです。ご覧のとおり、私はさまざまなオプションを試してきました。

    [global]
    workgroup = <MYDOMAINNAMEGOESHERE>
    security = user

    passdb backend = tdbsam

    [inbound]
    comment = Incoming files (as %u)
    path = /var/inbound/
    valid users = fileaccess
    guest ok = No
    read only = No
    writeable = Yes
    browseable = Yes
    create mask = 0640
    directory mask = 0750

メモ:ドメインはありますが、このCentOSシステムはドメインの一部ではありません。私のWindows AD DNSにエントリがあり、DNSサーバーを使用するように構成されていますが、それは終わりです。このマシンを隔離したいです。したがって、ローカルCentOSアカウントを使用してサーバーに接続してみてください。

特に、これがLinuxファイルシステムアクセスの問題であり、必要な変更が必要なSFTP権限と競合する可能性があることが懸念されます。たとえば、SFTP では、/var/inbound// ディレクトリをルートが所有する必要があります。

アカウントに参照/読み取り/権限があるように、SMB.confで問題のアカウントへのアクセス権を適用する方法があるかどうか疑問に思います。 smb.confでさまざまな設定オプションを試しました(smb.confのマニュアルを読みました)。ここ)。

ベストアンサー1

また、「acl」パッケージを確認することをお勧めします。 Advanced ACLは従来のUnix ACLよりもはるかに便利なので、今はいつも使用しています。

おすすめ記事