基于 Samba 实现 NAS 系统

摆弄了几天Raspberry Pi,在搞定了无线网络、FTP服务之后,打算更进一步,通过Samba实现NAS系统与PC共享文件。
需要安装的软件:
sudo apt-get install samba samba-common-bin
sudo apt-get install netatalk (可选,用于支持AFP)
sudo apt-get install avahi-daemon(可选,用于支持网内的计算机自动发现)
接下来就是配置了:
[Samba 配置] /etc/samba/smb.conf 文件尾部增加

[public]
comment = Public Storage
path = /home/pi
read only = no#任何人都具有了访问修改的权限
#因为是公共文件夹,所以给了所有用户全部权限,可以自定义
create mask = 0777#新创建文件的默认属性
directory mask = 0777#新创建文件夹的默认属性
guest ok = yes#默认的访问用户名为guest
browseable = yes

有关 Samba 的详细配置可以参考资料1资料2。然后就可以 smbd restart 了。这时候已经可以通过网上邻居看到共享文件目录,只是进不去。提示需要输入口令,尝试用本地帐户也无法进入。查了资料原来因为 Samba 使用了自己一套用户帐号资料库。要登录的话还需要向该库添加帐号信息,方法有两种:
1.直接用 mksmbpasswd.sh 将系统用户转换成 Samba 用户:

cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd

2.用 smbpasswd 命令直接设置,需要首先要添加系统用户然后用 smbpasswd -a 用户名 添加 Samba 用户;smbpasswd -e 用户名 激活用户。
[Netatalk 配置] /etc/netatalk/AppleVolumes.default 方法参考资料3
最后就是挂载USB移动硬盘了:

mount /dev/sda1 /home/shares/public/

有时候卸载USB移动硬盘的时候会提示设备忙(Device is busy),只需要加上 –l 参数就行了:

umount -l /home/shares/public/

via

通过SSH配置Wi-Fi连接

脚本如下,修改其中的SSID、ENCRYPTION以及PASSWORD。

#! /bin/sh
# SSID (aka. network name).
SSID='Tenda'

# Network encryption method.
# * 'WPA' for WPA-PSK/WPA2-PSK (note: most Wi-Fi networks use WPA);
# * 'WEP' for WEP;
# * 'Open' for open network (aka. no password).
ENCRYPTION='WPA'

# Network password. (WPA-PSK/WPA2-PSK password, or WEP key)
PASSWORD='pass'

if [ $(id -u) -ne 0 ]; then
printf "This script must be run as root. \n"
exit 1
fi

NETID=$(wpa_cli add_network | tail -n 1)
wpa_cli set_network $NETID ssid \"$SSID\"
case $ENCRYPTION in
'WPA')
wpa_cli set_network $NETID key_mgmt WPA-PSK
wpa_cli set_network $NETID psk \"$PASSWORD\"
;;
'WEP')
wpa_cli set_network $NETID wep_key0 $PASSWORD
wpa_cli set_network $NETID wep_key1 $PASSWORD
wpa_cli set_network $NETID wep_key2 $PASSWORD
wpa_cli set_network $NETID wep_key3 $PASSWORD
;;
*)
;;
esac
wpa_cli enable_network $NETID
wpa_cli save_config

等待几秒钟之后,无线网卡上的指示灯亮起,树莓派即连接成功。
可能用到的命令:
lsusb – 查看USB设备,检查无线网卡。
lsmod – 查看系统已加载的模块。rt2x00 是 Ralink 芯片组的统一驱动。
iwconfig – 查看网卡信息。
ifconfig – 查看连接信息。ifconfig wlan0 up 启动网卡 wlan0。
供电不足可能会导致USB无线网卡易掉线等问题,需要保持电力供应。
如果在wpa_gui中找不到网卡适配器,在 /etc/wpa_supplicant/wpa_supplicant.conf 中加入这两行配置就行了:

# needed for wpa_gui to work
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
# needed to allow wpa_gui to alter the configuration
update_config=1

via