Fedora 16 ,各种晕, 各种高科技,真是考验我的耐心啊,解决了 Gnome 3.2 的 Fallback 模式问题,http://www.linuxidc.com/Linux/2012-03/56380.htm
有些小激动,准备继续,然后继续安装其他软件,然后第一个软件就出问题了——Samba。
注 :我是在VirtualBox 虚拟机下安装的 32 位 Fedora 16, 自己水平有限,有些步骤没看资料,
如果有安全隐患或者错误,请不吝赐教。
Fedora 15 ,安装完 Samba ,会默认在 /etc/rc.d/init.d/目录下生成一个名为 smb 的脚本文件,
于是我们只要便可以运行:
/etc/rc.d/init.d/smb start 启动 samba;
/etc/rc.d/init.d/smb stop 停止 samba;
/etc/rc.d/init.d/smb restart 重新启动 samba ……
(start|stop|restart|reload|status|condrestart)
然后开机运行samba,只需要修改/etc/rc.d/rc.local 文件, 添加一行:
/etc/rc.d/init.d/smb start
即可。
可现在问题来了:
# yum install samba
安装完 samba,没有生成 /etc/rc.d/init.d/smb
然后 /etc/rc.d/rc.local 文件也不见了。
我晕,太高科技了!
于是到官方wiki搜索了一下:
http://docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/sect-Release_Notes-Changes_for_Sysadmin.html
———-———-———-———-
3.2.5. rc.local no longer packaged
The /etc/rc.d/rc.local local customization script is no longer included by default. Administrators who need this functionality merely have to create this file, make it executable, and it will run on boot.
Upgrades are not affected by this change.
———-———-———-———-
我英语四级不到380分,就当是她默认不支持 rc.local 了(Fedora 15 升级过来的仍然有效)。
我尝试新建一个rc.local,然后分配可执行权限,果然不起作用。
于是我又迷茫了,坑爹啊,我 Linux 基本命令还没看完,怎么改设置啊,ln -s 到 rcN.d 建立连接么……
然后我想到了 /etc/inittab 文件,虽然已经不用了,看一下也无妨:
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
#
# systemd uses ‘targets’ instead of runlevels. By default, there are two mai n targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To set a default target, run:
#
# ln -s /lib/systemd/system/<target name>.target /etc/systemd/system/default .target
15 #
哦,我就看懂了这个东西:/lib/systemd/system/ ,果断
# cd /lib/systemd/system/;ll
看到一堆文件,然后有许多runlevelN.target.wants 文件夹
果断
#cd /lib/systemd/system/runlevel5.target.wants; ll
里面有一个符号链接文件
systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service
于是我在 /lib/systemd/system/ 文件夹找到了 systemd-update-utmp-runlevel.service 文件,
然后我发现许多 runlevelN.target.wants 文件夹里都有这个符号链接;
而在 /lib/systemd/system/ 文件夹里有一个 smbd.service 和一个 nmbd.service 文件,
于是果断 vi 看了一下:
smbd.service:
[Unit]
Description=Samba SMB Daemon
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/run/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/sbin/smbd $SMBDOPTIONS
[Install]
WantedBy=multi-user.target
nmbd.service:
[Unit]
Description=Samba NMB Daemon
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/run/nmbd.pid
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/sbin/nmbd $NMBDOPTIONS
[Install]
WantedBy=multi-user.target
注:以下蓝色部分似乎不太正确
我还知道 smb 的两个命令 就是 /usr/sbin/smbd 与 /usr/sbin/nmbd
于是我尝试建立个符号链接到 cd /lib/systemd/system/runlevel5.target.wants
#ln -s /lib/systemd/system/smbd.service /lib/systemd/system/runlevel5.target.wants/smbd.service
#ln -s /lib/systemd/system/nmbd.service /lib/systemd/system/runlevel5.target.wants/nmbd.service
也可以将符号链接放到 /etc/systemd/system/grafical.target.wants 或者放到 /etc/systemd/system/default.grafical.target.wants
这两个文件夹的区别我还没有弄懂……
重启一下,果然启动samba;
用 systemctl enable 命令 即可
——————————
# systemctl is-enabled smb.service
屏幕显示:disabled
# systemctl enable smb.service
屏幕显示:ln -s ‘/lib/systemd/system/smb.service’ ‘/etc/systemd/system/multi-user.target.wants/smb.service’
# systemctl is-enabled smb.service
屏幕显示: enabled
——————————
# systemctl is-enabled nmb.service
屏幕显示:disabled
# systemctl enable nmb.service
屏幕显示:ln -s ‘/lib/systemd/system/nmb.service’ ‘/etc/systemd/system/multi-user.target.wants/nmb.service’
# systemctl is-enabled nmb.service
屏幕显示: enabled
——————————
然后就简单了,先在防火墙添加例外,如我的Win7电脑地址是192.168.1.3:
#vi /etc/sysconfig/iptables
在中间添加 :
-A INPUT -j ACCEPT -s 192.168.1.3
保存退出。
之后是 SELinux :
#setsebool -P samba_enable_home_dirs on
之后确认一下:
#getsebool -a | grep samba
若看到有一项 samba_enable_home_dirs –> on 则表示成功
然后建立 samba 验证密码:
#smbpasswd -a 用户名(Linux系统里必须存在)
好了,到 Windows 的网上邻居里查一下,看看能否访问 Fedora,
或者 开始 -> 运行 -> \\Fedora的 IP 地址 ,如 \\192.168.1.4
另外,Fedora的主机名,如果在默认安装时不改,会在 Windows 网上邻居里显示 LOCALHOST ,
这会与Windows 的本机冲突,双击 LOCALHOST 进入的是 Windows 本机,
所以需要在 Fedora 里修改:
#vi /etc/sysconfig/network
将HOSTNAME修改成其他名字。
好了,如此基本成,另附Samba 3.5 的 smb 脚本:
#!/bin/sh
#
# chkconfig: – 91 35
# description: Starts and stops the Samba smbd daemon \
# used to provide SMB network services.
#
# pidfile: /var/run/samba/smbd.pid
# config: /etc/samba/smb.conf
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 1
fi
# Avoid using root’s TMPDIR
unset TMPDIR
# Source networking configuration.
. /etc/sysconfig/network
if [ -f /etc/sysconfig/samba ]; then
. /etc/sysconfig/samba
fi
# Check that networking is up.
[ ${NETWORKING} = “no” ] && exit 1
# Check that smb.conf exists.
[ -f /etc/samba/smb.conf ] || exit 6
RETVAL=0
start() {
KIND=”SMB”
echo -n $”Starting $KIND services: “
daemon smbd $SMBDOPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/smb || \
RETVAL=1
return $RETVAL
}
stop() {
KIND=”SMB”
echo -n $”Shutting down $KIND services: “
killproc smbd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/smb
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $”Reloading smb.conf file: “
killproc smbd -HUP
RETVAL=$?
echo
return $RETVAL
}
rhstatus() {
status -l smb smbd
return $?
}
# Allow status as non-root.
if [ “$1” = status ]; then
rhstatus
exit $?
fi
uid=`id | cut -d\( -f1 | cut -d= -f2`
# Check that we stop here for non-root users
[ $uid -ne 0 ] && exit 4
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/smb ] && restart || :
;;
*)
echo $”Usage: $0 {start|stop|restart|reload|status|condrestart}”
exit 2
esac
exit $?