Category: Tech

  • Samba share config on Centos 5.5

    Opening Windows to a Wider World

    这个广告词我觉得写得不错,如前述,在FreeBSD下频繁的读写ext3分区有导致分区dirty的可能,所以我把接入磁盘阵列的笔记本操作系统换成了Centos5.5,使用LiveCD灌到U盘,然后通过VNC,局域网网络安装,没有图形界面,速度很快,十几分钟就欧了,这台笔记本配置很低,一枚VIA的800Mhz处理器,2G内存,80G硬盘,我最中意它的是因为它作为一台笔记本,是没有风扇的~大大减少了物理损坏的可能。装好Centos,yum了一个samba3x上去,mount上磁盘阵列,修改好配置文件,发现总是启动failed,我英明的查看了一下samba日志,然后上网搜了搜~

    [2011/04/01 15:28:20,  0] smbd/server.c:main(1275)
    smbd version 3.3.8-0.52.el5_5.2 started.
    Copyright Andrew Tridgell and the Samba Team 1992-2009
    [2011/04/01 15:28:20,  0] lib/messages_local.c:messaging_tdb_init(96)
    ERROR: Failed to initialise messages database: Permission denied
    [2011/04/01 15:28:20,  0] lib/messages.c:messaging_init(204)
    messaging_tdb_init failed: NT_STATUS_ACCESS_DENIED

    搜索的结果是,出现这些个错误的原因林林种种,什么数据库错误,编码问题,但很明显都不是我要的结果,就在我准备放弃的时候,我看见有人在其它的问题上抱怨SElinux……电光火石间,我意识到了这个问题。

    究其根本,是因为以前在安装Centos服务器的时候,考虑到使用Oracle数据库的可能,都装上了图形界面,而且我习惯性的在装好之后把SElinux和iptables都禁用掉,这次只安装了命令行,木有安装图形界面,于是,SElinux和iptables都在那运行着……找到了问题,解决起来就很简单,把SElinux直接disable掉(/etc/sysconfig/selinux),然后chkconfig iptables off,chkconfig ip6tables off,reboot。

    终于可以顺利的启动Samba服务,接下来进行配置,参考原来mybookworld中的配置文件,简单的说呢就是,有一些目录大家可读可写,有一些目录大家可读不可写,有一些目录大家不可读不可写,有一些目录我可读可写,嗯,还没晕的话说明你逻辑思维能力很强。

    smb.conf配置如下:

    [global]
    server string = MyBookWorld Version %v
    netbios name = mybookworld
    workgroup = WORKGROUP
    interfaces=192.168.151.5/24 127.0.0.1/8
    security=user
    smb passwd file=/etc/samba/smbusers
    guest account=www
    log file=/var/log/log.%m
    max log size=50
    dns proxy=No
    unix charset = utf8
    lock directory=/var/lock
    pid directory=/var/lock
    use sendfile=Yes
    map to guest = Bad User
    create mask = 755
    map hidden = Yes

    [dummy-1]
    include=/etc/samba/shares.inc

    其中,包含了一个配置文件,shares.inc,这个文件中含有所有的共享目录设置,配置如下:

    [PRIVATE]
    path=/shares/PRIVATE
    force user=www
    valid users=kenbaby
    write list=kenbaby

    [MOVIE]
    path=/shares/MOVIE
    force user=www
    guest ok=Yes
    valid users=kenbaby www
    write list=kenbaby
    read list=www

    [PUBLIC]
    path=/shares/PUBLIC
    force user=www
    valid users=www kenbaby
    write list=www kenbaby
    guest ok=Yes

    这个配置文件很简单,英文过了四级的都能看懂,第一个PRIVATE目录,只允许kenbaby进行读写,写入的文件权限赋给www用户,第二个MOVIE目录,所有用户都可以读取,但只有kenbaby可以写入,同样,写入的文件权限赋给www用户,第三个目录PUBLIC,所有的用户都可以进行读写。将写入的文件权限赋给www用户,很好的保证了文件在磁盘上的权限统一在一个用户下,前面的smb.conf配置文件中,已经将www用户指定为来宾用户,也就是说,在Windows PC访问共享的时候,默认的Guest用户就能够直接访问,不用输入用户名和密码了。

    最后一步,添加系统用户和samba用户,首先是添加系统用户:

    groupadd www
    useradd www -g www
    groupadd kenbaby
    useradd kenbaby -g kenbaby

    系统用户无需初始化密码,这样它们也无法通过shell登入操作系统。然后我们添加samba用户,由于www用户是指定的来宾帐户,不需要设置密码,我们只需要为kenbaby用户添加密码即可。

    smbpasswd -La kenbaby

    添加完成后,重新启动smb服务即可访问共享啦!当然,如果要使用netbios name,还需要启动nmbd服务(/etc/init.d/nmbd restart)

  • 不同操作系统之间的文件格式兼容性依然是个谜团

    经过我英明的测试,ext3格式的硬盘在FreeBSD下mount很不稳定,如果将其目录通过CIFS共享出来,在频繁写入的情况下,很大程度上这个硬盘组会被unclean unmount,一个体逼的硬盘组,经常性的fsck,那简直就是脑壳有包,看来是逼着我上Centos了……

  • 定时删除Unix过期文件

    服务器不像个人电脑,垃圾文件虽然不多,但日志还是蛮多的,如果没有合适的日志管理程序进行切割和备份,那么定期清理还是很有必要的。

    find /home/bbken.org/logs/ -type f -mtime +30 -exec rm -f {} \;

    说明:/home/bbken.org/logs/ 是查找文件的路径。
    -type f是指定文件类型为普通文件。
    -mtime +30是指修改时间距离现在30天的文件。
    -exec rm -f 指执行删除匹配出来的文件并且不提示,呵呵,force的嘛。