CentoOS 7 Samba共有USB NTFS

CentoOS 7 Samba共有USB NTFS

私の状況のすべての詳細をカバーする答えが見つからないようです。私は以下の指示に従いました。CentOS7でSambaとマウントされたドライブを共有するしかし、まだ問題があります。 CentOS 7とNTFS USBドライブが接続されています。 Sambaを使用して、このドライブを他のWindowsコンピュータ(Windows 10)と共有したいと思います。ドライブを/mymnt/winフォルダに正常にマウントし、Linuxホストからドライブを読み取り、Windows 10システムで共有を表示できます。ただし、Windowsで共有を閲覧しようとすると、「\ mediapc \ LewisData7TBにアクセスする権限がありません」というメッセージが表示されます。 Windowsで匿名で純粋なLinux共有にアクセスすることもできます。

関連する/etc/fstabファイルエントリは次のとおりです。

/dev/sda2 /mymnt/win ntfs-3g rw,umask=0000, デフォルト 0 0 -o context="system_u:object_r:samba_share_t:s0"

これは私の/etc/samba/smb.confファイルです(homes/printers/print$はすべてコメントアウトされています)。

[global]
workgroup = LEWISFAM
server string = Samba Server %v
netbios name = mediapc
dns proxy = no
security = user
map to guest = Bad User
passdb backend = tdbsam

printing = cups
printcap name = cups
load printers = yes
cups options = raw

[Anonymous]
path = /shares/anonymous
guest ok = yes
browsable = yes
writeable = yes

[LewisData7TB]
path = /mymnt/win
browsable =yes
writable = yes
guest ok = yes
read only = no

SELinux を設定しようとすると、次のコマンドを実行します。

chcon -t samba_share_t /mymnt/win/

次のエラーが発生します。

chcon: /mymnt/win/ のコンテキストを system_w:object_r:samba_share_t:s0 に変更できません。ジョブはサポートされていません。

だから私の目標は、Windowsがこのドライブへの読み書きにアクセスすることです。しかし、まだそこまでは届いていません。

ベストアンサー1

進捗のいくつかの形でより多くのエラーメッセージを投稿しようとしましたが、いくつかのコマンドを再試行したいと思いました。 。 Kennethさん、私に役立つ内容をここに直接追加しました。

これにより、exFAT USB外付けハードドライブを搭載したFedora Linux 35ワークステーションで問題が発生しました。私はすでに私のユーザーアカウントでのみ利用可能なFiles / Nautilusでうまく使用していました。

Sambaに初めて接する人ではないことを確認するために、man smb.confより多くの知識を持って/etc/samba/smb.confファイルを編集し、testparm設定を確認するなどのコマンドを使用しました。

sudo mount /dev/sd?? '/mnt/...' -o 'nosuid,nodev,nofail,noauto,x-gvfs-show,context="system_u:object_r:samba_share_t:s0"'

https://ask.fedoraproject.org/en/question/62838/selinux-ntfs-samba-share-problemworkaround/

私の解決策を完了するためのコマンドは次のとおりです。

Fedora Linuxディストリビューションのチュートリアルページで見つかったファイルシステムのプロパティをマスクするのと同じ方法を使用します。https://docs.fedoraproject.org/en-US/quick-docs/samba/ https://www.tecmint.com/setup-samba-file-sharing-for-linux-windows-clients/

sudo semanage fcontext --add --type "samba_share_t" /mnt/...
sudo restorecon -R /mnt/...

次のようなより広範なコマンドを使用して、これが必要かどうかをテストできました。

> sudo setenforce Permissive
> sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

https://www.thegeekdiary.com/centos-redhat-how-to-set-selinux-modes/ また、インストールされていない場合はデフォルトディレクトリが、インストールされてmnt_tSambaが利用できない場合はデフォルトディレクトリはdosfs_t

私は次のコマンドでこれを確認しました。 ls -ldZ鍵はどこにありますか?私にとっては十分ですが、一部はより詳細に表示することです。Zlgetfacls

https://superuser.com/questions/617777/how-do-i-auto-mount-a-usb-drive-that-all-users-can-write-to マウントオプションも検討しましたが、user今は必要ありません。少なくともこの問題を解決する必要はありません。

2つの異なるSELinuxコマンドが役に立ちますが、「-d」オプションがあるかどうかにかかわらず、それを使用してコンソールまたはログ出力を生成することはできませんでしaudit2whyaudit2allowhttps://opensource.com/article/18/12/troubleshooting-hardware-problems-linux

ファイアウォールコマンドを使用すると、他のシステムを接続できます。

以下を使用してローカルでテストできます。

> smbclient --user="<user>%<password>" -L '//<machine>/<share>'

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    ...             Disk      
    smbtest         Disk      testing
    IPC$            IPC       IPC Service (Samba #.#.#)
SMB1 disabled -- no workgroup available

> smbclient --user="<user>%<password>" '//<machine>/<share>' --command 'ls'
`NT_STATUS_ACCESS_DENIED listing \*`
> journalctl -u smb -b
......
chdir_current_service: vfs_ChDir(<path>) failed: Permission denied. Current token: uid=#, gid=#, 1 groups: #
......
...NT_STATUS_INTERNAL_ERROR...

/etc/fstabディスクGUIを使用してカスタム手動インストールラインを設定し、私のユーザーの代わりに私のユーザーの下に手動でインストールしました。より/mnt/...多くの/run/...ユーザーやグループに対して権限を開こうとしましたが、他のユーザーには常に読み取り権限があるため、誤解を招く可能性があります。 。

私はこの記事のような他の方法を試しましたが、混乱したエラーメッセージを発見し、完全に効果がないと思いました。 CentOS7でSambaとマウントされたドライブを共有する

mount: <path>: wrong fs type, bad option, bad superblock on /dev/sd??, missing codepage or helper program, or other error.

SELinux: mount invalid.  Same superblock, different security settings for (dev sd??, type exfat)
> sudo semanage fcontext --add --type "samba_share_t" '/mnt/...'
ValueError: File specification can not include spaces

とにかく、前述のマスキングオプションをインストールする必要があるため、これは正しくないため、サフィックスやワイルドカードを含む部分名などの正しいファイルコンテキストパターンを見つける必要はありません(/.*)?。次のアイデアコマンドがありますsudo semanage fcontext -l | less

再インストールしてセキュリティ設定を変更できないことがわかったので、これは私にはうまくいきませんでした。したがって、後でcontext完了したと思ったオプションでのみ機能しました。

ファイルシステムテーブルファイルを更新しましたが、端末を使用してドライブをマウントすることとディスクGUIを使用することにはまだ奇妙なことがあります。同じオプション行と正しい順序があると思いますが、1つの方法はまだdosfs_t..

その他の便利なコマンド: sudo umount '/mnt/...'
lsblk
dmesg | lessvarフォルダにはサービスのログがほとんどないため、systemdを使用してそれらを含めることができます。
smbpasswd
smbstatus
sudo pdbedit -L
cat /etc/passwd | grep <user>

おすすめ記事