Fedora 21共享NTFS分区下的目录

1 前言

我的需求很简单,用安卓平板看电脑上的720p电影。试验了几种方式,还是SMB共享最靠谱,外挂字幕和电影内的音轨都能完美支持。

2 /etc/samba/smb.conf

[global]
	workgroup = MYGROUP
	server string = Samba Server Version %v

	# log files split per-machine:
	log file = /var/log/samba/log.%m
	# maximum size of 50KB per log file, then rotate:
	max log size = 50

	security = user
	map to guest = Bad User
	passdb backend = tdbsam

	load printers = yes
	cups options = raw


[homes]
	comment = Home Directories
	browseable = no
	writable = yes

[printers]
	comment = All Printers
	path = /var/spool/samba
	browseable = no
	guest ok = no
	writable = no
	printable = yes

# My Own Configuration
	[Videos]
	comment = Videos
	path = /media/MDATA/Videos
	public = yes

上面是我系统现在的samba配置文件。斜体字部分是我自己添加的内容,其他都是Fedora21默认配置,未修改。

map to guest = Bad User
我需要的是匿名共享。当security = user时,需要设置此参数才能实现。Bad User的含义,是在密码错误时拒绝登录,但如果用户名不存在,则视作guest登录,把用户映射到guest账户。
[Videos]
“[]”是配置片段(section,后面简称片段)开始的标记,同时也意味着上一片段的结束。[global]、[homes]和[printers]是三个特殊的片段,本文不深入解释。片段可以代表文件共享服务或打印服务。我这里创建的是文件共享服务,“[]”里面的内容即是客户端看到的共享名,不区分大小写。
comment = Videos
这是一个文本子段,当客户端通过网上邻居或net view查询服务器时,会在共享名旁边看到这里写的内容。
path = /media/MDATA/Videos
共享的目录。
public = yes
本选项与guest ok作用相同,用在配置片段中表示连接此片段所提供的服务不需要密码,其权限是guest账户的权限。

3 ntfs分区的特殊设置

3.1 问题

共享的目录在NTFS分区下就会出现可看到共享目录但服务端拒绝访问的情况。拒绝访问是selinux引起的,其主要原因是NTFS目录不支持selinux context设置,无法通过chcon来设置。

# Set SELinux labels only on files and directories you have created. Use the
# chcon command to temporarily change a label:
sudo chcon -t samba_share_t /path/to/directory

通过加载分区的参数可以强制设置,具体配置方法如下。

3.2 设置fstab

#edit /etc/fstab file.
sudo vi /etc/fstab

我的电影存放在/dev/sdb2,使用其UUID(查看分区UUID的命令是blkid)在fstab作如下设置。设置完后umount /dev/sdb2并mount -a重新挂载分区生效。

UUID=7428E25E28E21EBC /media/MDATA ntfs-3g context="system_u:object_r:samba_share_t:s0",defaults 0 0

3.3 设置selinux

# Turn the samba_share_fusefs Boolean on if you want to share ntfs
# directories via Samba. Run the following command as the root user to turn this
# Boolean on:
sudo setsebool -P samba_share_fusefs on

3.4 重启smb

#restart smb service by systemctl command
sudo systemctl restart smb.service

4 参考文档

4.1 Fedora 21 System Administrators Guide

4.2 Fedora20中通过SAMBA共享NTFS分区目录的配置

4.3 man smb.conf

点击量:58

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 13 =