2013年2月28日星期四

RaspberryPi配置L2TP VPN过程(2)

这是第二章,介绍L2TP VPN的搭建方法

安装VPN
VPN的安装过程主要参考了这一教程:
配置的VPN类型为L2TP/IPSec,之所以不使用更为简单的OpenVPN,是因为windows系统连接OpenVPN不太方便。
主要的安装步骤和配置文件按照教程中的设置没有问题。但在树莓派上,由于库文件有缺失,有几个步骤可以作为先导过程。
首先是库文件的更新,在终端中输入:
    sudo apt-get install  libpcap0.8-dev libpcap0.8 libcap-dev
等待完成库的更新。
然后安装lsof。openswan的运行脚本中使用了lsof命令,因此需要安装,输入:
    sudo apt-get install lsof
下面给出VPN安装的具体步骤:
一、安装 IPSec
用以下命令安装 openswan:
    sudo apt-get install openswan
二、用文字编辑器打开 /etc/ipsec.conf:
    sudo leafpad /etc/ipsec.conf
改成这样:
version 2.0
config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=YOUR.SERVER.IP.ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
注意缩进和格式。
三、用文字编辑器打开 /etc/ipsec.secrets,改成这样:
YOUR.SERVER.IP.ADDRESS   %any:  PSK "YourSharedSecret"
(别忘了把「YOUR.SERVER.IP.ADDRESS」这部分换成你的服务器的 IP 地址,把「YourSharedSecret」部分换成随便一个字串,例如你喜欢的一句话,等等。)
四、运行以下命令:
    for each in /proc/sys/net/ipv4/conf/*
    do
        echo 0 > $each/accept_redirects
        echo 0 > $each/send_redirects
    done 
五、检查一下 IPSec 能否正常工作:
    sudo ipsec verify
如果在结果中看到Opportunistic Encryption Support被禁用了,没关系,其他项 OK 即可。
如果看到Checking /bin/sh is not /bin/dash显示[Warning],没有关系,因为ubtuntu和debian系统已经使用dash来代替bash脚本执行器。虽然dash更快更方便,但在某些脚本兼容性上还是不太稳定。我们可以将ubuntu默认的脚本执行方式改回bash来执行,执行以下命令
    sudo dpkg-reconfigure dash
按英文提示,选择no,就可以把dash切换成bash。再执行ipsec verify就不会出现WARNING的提示了。
六、重启 openswan:
    sudo /etc/init.d/ipsec restart
 
七、安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。
运行以下命令:
    sudo apt-get install xl2tpd  
也可以从官方网站下载最新的安装包编译安装。
八、用文字编辑器打开 /etc/xl2tpd/xl2tpd.conf,改成这样:
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。
九、安装 ppp。这是用来管理 VPN 用户的。
    sudo apt-get install ppp 
十、检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个,文件内容如下:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 222.201.130.30
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
注意 ms-dns 两行填的是谷歌的公共 DNS和教育网的DNS,请自行更换。
十一、现在可以添加一个 VPN 用户了。用文字编辑器打开 /etc/ppp/chap-secrets:
# user      server      password            ip
test        l2tpd       testpassword        *
如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表。你只要把 test l2tpd testpassword * 这样加到后面即可。
十二、重启 xl2tpd:
    sudo /etc/init.d/xl2tpd restart
十三、设置 iptables 的数据包转发:
    iptables --table nat --append POSTROUTING --jump MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
十四、因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在/etc/rc.local 文件里写入如下语句:
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart
这样启动时就会自动启动了。
然后在Windows客户端上新建连接到工作区的连接,再进行设置,如果可以连接到服务器,
则说明配置成功,如果出现789错误,说明需要修改注册表来允许通过NAT建立VPN。

RaspberryPi配置L2TP VPN过程(1)

全文分为两章,第一章主要介绍树莓派的安装和静态IP设置

前几天买的树莓派到货了,按捺不住兴奋的心情,立刻完成了系统的安装和VPN的搭建。具体的安装过程参考了数篇网络上的教程,将会在文章中一一列出。

首先是雷锋网的一篇上手报告:

硬件的安装就不多说了。我购买PI的同时还附加了一个透明的外壳,以及散热片3块。从后来使用时的温度状况来看,散热片是有必要的。

安装Raspbian系统
系统的安装过程和雷锋网的上手报告一样,由于树莓派没有板载的外部存储器,因此需要依靠SD卡作为存储介质。根据使用情况,建议使用4G或更大的SD卡。
然后下载以下文件:
Raspbain系统镜像:即debian(linux的一个发行版本)的raspberry pi版本。事实证明它和普通PC上使用的debian没有太大差异。
Win32DiskImager:用于把系统镜像写入SD卡的软件,和我们装机时常用的ghost原理类似,只不过磁盘分区变成了SD卡而已
根据文章中的方法对SD卡进行写入,注意设备不要选错了:

然后将SD卡插入树莓派的卡槽中,插上电源,树莓派便根据SD卡的引导进行启动了。
树莓派的启动速度很慢,通常需要1分钟以上,因此在启动过程遇到没有响应的情况,请耐心等待。(如果超过5分钟,那应该是有问题了...)
首次启动将出现系统初始配置的界面:

 
具体设置的细节依照教程中的设置即可,不多说了。我按照教程更改了2,4,5,6,7项,ssdh server和图形界面是默认打开的。由于网络环境的原因(静态IP),没有进行最后一项。配置完成后重启进入X-window界面。大家可以根据自己的需要选择是否安装中文语言和输入法。
别忘了设置root用户的密码,打开terminal,输入: 
    sudo passwd
然后设置密码即可。

静态IP的设置
在网络上查找了各种linux下静态IP设置的方法。最为常见的是修改 /etc/sysconfig/network-script/ifcfg-eth0 文件,在其中添加静态IP信息。但Raspbian中没有sysconfig文件夹(囧),此法不可行。
解决的办法是修改/etc/network/interfaces文件,打开LX terminal,输入:
    sudo vi /etc/network/interfaces
把其中的
    iface eth0 inet dhcp
改为
    iface eth0 inet static
并在其下加入以下信息:
    address YOUR.IP.ADD.RESS
    netmask YOUR.IP.NET.MASK
    gateway YOUR.IP.GATE.WAY
其中的大写英文字母改成对应的IP地址信息即可。
保存文件后重启树莓派。
重启之后先检查一下网络连通性:
    ping www.baidu.com
如果已经连通,更新一下系统:
    sudo apt-get update
更新过程比较慢,需要二十分钟的过程。

至此,树莓派系统安装配置完毕。

繁重的工作,闲适的生活,还有口水歌

原先定下的论文目标,眼看就要截止,碍于思维混乱,冲刺无望,多少有些失落。十月不得不说是遇到了低潮,内心彷徨却又要故作镇定,细细地安排着各种琐事,全然没有向前的动力。既然这样,到不如索性放任,让生活更加悠闲一些。
虽是周末,楼下的篮球场一早便有些热闹,此起彼伏的闷响,伴随着人群的嘈杂与喧闹。稍稍起身,望见阳台仍是一片光亮,便知时间尚早。再稍稍清醒了会儿,起身下床,八点三十。简单洗漱过后,便奔往实验室,打发一日的生活。
一罐混合奶,一个小蛋糕,早餐的内容并不丰富。打开豆瓣fm,来些轻松的音乐,更能让人平静。说到豆瓣电台,似乎我给红心的大多都是些口水歌。记得毕业前,曾有人装模做样地说着各种口水歌如何没有品位,自己如何讨厌之类的,当时我也只是呵呵了一下,既可以掩饰自己令人讨厌的品味,又能让对方虚伪的优雅之心获得满足,何乐而不为?
说到这里,又不禁想到前天好友邀请我同往观看昆曲的事。她是个文学迷,兼爱古代文化,于是戏曲什么的自然也不可救药地迷上了,每一见面便滔滔不绝。虽然我多少对于文学和文化感兴趣,但远未达到她那般境界,况且本人对于戏曲并不感冒,于是每当她谈到戏曲之类的,为了不扫她的好兴致,便呵呵过去了。不想敷衍也会带来困扰,只得找些理由搪塞,最后不得已还是说破了,恐怕之后得费一番功夫解释了吧。
昨天室友组团参加迎新晚会,节目便是演唱,不用说,也是口水歌一首,因为太过文艺清新的歌,大多数人是玩不来的。人们常说曲高和寡,可当今却总有伪雅之士愿意附和,正如我叶公好龙之举,不知究竟如何。记得初中时学过丰子恺的《山中喜雨》,其中乐以教和的道理甚是深刻,而如今却将音乐分得三六九等,不得不唏嘘一番。
或许,从明天开始,不再纠结这些或优雅或庸俗的事,率性而为。可是,明天又是哪一天呢?无解的问题总会越积越多,不如重新回到工作中,将这份闲适淡忘过去吧。

2012年10月14日星期日

Turing机、人工智能以及我们的世界

转自:matrix67.com

 Turing机、人工智能以及我们的世界

 

    昨天终于读完了《The Annotated Turing》一书,第一次完整地阅读了 Turing 最经典的那篇论文,理解了 Turing 机提出的动机和由此带来的一系列结论。不过,这本书的最大价值,则是让我开始重新认识和思考这个世界。在这里,我想把我以前积累的哲学观点和最近一些新的 思考记下来,与大家一同分享。《The Annotated Turing》一书中的一些学术内容,留待以后几篇日志与大家分享。今年是 Alan Turing 诞辰 100 周年,图灵公司将推出这本书的中译本《图灵的秘密》,现在正在紧张的编辑排版中,不久之后就能和大家见面。
    1928 年, David Hilbert 提出了一个著名的问题:是否存在一系列有限的步骤,它能判定任意一个给定的数学命题的真假?这个问题就叫做 Entscheidungsproblem ,德语“判定性问题”的意思。大家普遍认为,这样的一套步骤是不存在的,也就是说我们没有一种判断一个数学命题是否为真的通用方法。为了证明这一点,真正 的难题是将问题形式化:什么叫做“一系列有限的步骤”?当然,现在大家知道,这里所说的“有限的步骤”指的就是由条件语句、循环语句等元素搭建而成的一个 机械过程,也就是我们常说的“算法”。不过,在没有计算机的时代,人们只能模模糊糊地体会“一个机械过程”的意思。 1936 年,Alan Turing 在著名的论文《On computable numbers, with an application to the Entscheidungsproblem》中提出了一种假想的机器,第一次给了“机械过程”一个确凿的含义。

    Turing 提出的机器非常简单。假设有一张无穷向右延伸的纸条,从左至右分成一个一个的小格子。每一个小格子里都可以填写一个字符(通常是单个数字或者字母)。纸条 下方有一个用来标识“当前格子”的箭头,在机器运行过程中,箭头的位置会不断移动,颜色也会不断变化。不妨假设初始时所有格子都是空白,箭头的颜色是红 色,并且指向左起第一个格子。为了让机器实现不同的功能,我们需要给它制定一大堆指令。每条指令都是由五个参数构成,格式非常单一,只能形如“如果当前箭 头是红色,箭头所在格子写的是字符 A ,则把这个格子里的字符改为 B ,箭头变为绿色并且向右移动一格”,其中最后箭头的移动只能是“左移一格”、“右移一格”、“不动”中的一个。
    精心设计不同的指令集合,我们就能得到功能不同的 Turing 机。你可以设计一个生成自然数序列的 Turing 机,或者是计算根号 2 的 Turing 机,甚至是打印圆周率的 Turing 机。 Turing 本人甚至在论文中实现了这么一种特殊的 Turing 机叫做通用 Turing 机,它可以模拟别的 Turing 机的运行。具体地说,如果把任意一个 Turing 机的指令集用 Turing 自己提出的一种规范方式编码并预存在纸条上,那么通用 Turing 机就能够根据纸条上已有的信息,在纸条的空白处模拟那台 Turing 机的运作,输出那台 Turing 机应该输出的东西。
    但是, Turing 机并不是无所不能的。 Turing 证明了一个看似有些惊人的事实:不存在这样的一个 Turing 机,它能读取任意一个 Turing 机的指令集,并判断该 Turing 机是否将会在纸条上打印出至少一个 0 。注意,简单地用通用 Turing 机做模拟并不是一个可行的方案,因为模拟到现在还没有打出 0 ,不意味着今后也就永远不会打出 0 。这个定理有一个更深刻的含义,即没有一种通用的方法可以预测一台 Turing 机无穷远后的将来(后人把这个结论简化为了著名的停机问题)。正如《The Annotated Turing》封底上的一段文字所说:在没有计算机的时代, Turing 不但探索了计算机能做的事,还指出了计算机永远不能做到的事。
    在论文的最后一章, Turing 给出了一种 Turing 机指令集和一阶逻辑表达式的转换规则,使得这个 Turing 机将会打出 0 来,当且仅当对应的一阶逻辑表达式为真。然而,我们没有一种判断 Turing 机是否会输出 0 的算法,因此我们也就没有一种判断数学命题是否为真的通用办法。于是, Entscheidungsproblem 有了一个完美的解答。
    有趣的是,Turing 机本身的提出比 Entscheidungsproblem 的解决意义更大。计算机诞生以后,出现了五花八门的高级编程语言,一个比一个帅气,但它们的表达能力实际上都没有超过 Turing 机。事实上,再庞大的流程图,再复杂的数学关系,再怪异的语法规则,最终都可以用 Turing 机来描述。 Turing 机似乎是一个终极工具,它似乎能够表达一切形式的计算方法,可以描述一切事物背后的规律。在同一时代,美国数学家 Alonzo Church 创立了 λ 算子(λ-calculus),用数学的方法去阐释“机械过程”的含义。后来人们发现, Turing 机和 λ 算子是等价的,它们具有相同的表达能力,是描述“可计算性”的两种不同的模型。 Turing 机和 λ 算子真的能够描述所有直观意义上的“可计算数”、“可计算数列”、“可计算函数”吗?有没有什么东西超出了它们的表达能力?这个深刻的哲学问题就叫做 Church–Turing thesis 。当然,我们没法用形式化的方法对其进行论证,不过大家普遍认为, Turing 机和 λ 算子确实已经具有描述世间一切复杂关系的能力了。人们曾经提出过一些 hypercomputer ,即超出 Turing 机范围的假想机器,比如能在有限时间里运行无穷多步的机器,能真正处理实数的机器,等等。不过这在理论上都是不可能实现的。
    事实上, Turing 在他的论文中就已经指出,人的思维也没有跳出 Turing 机的范围。对此, Turing 有一段非常漂亮的论证:人在思考过程中,总能在任意时刻停下来,把当前进度记录在一张纸上,然后彻底走开并把它完全抛之脑后,过一会儿再回来,并完全凭借 纸上的内容拾起记忆,读取进度,继续演算。也就是说,人的每一帧思维,都可以完全由上一帧思维推过来,不依赖于历史的思维过程。而 Turing 机所做的,也就是把人的思维步骤拆分到最细罢了。
    没错,这意味着,或许一个人的语言、计算甚至学习能力,完全等价于一个 Turing 机,只不过这个 Turing 机的指令集可能异常庞大。1950 年, Turing 的另 一篇经典论文《Computing Machinery and Intelligence》中正式把人和机器放到了相同的高度:让一个真 人 C 先后与一台计算机 A 和另一个真人 B 进行聊天,但事先不告诉他 A 和 B 哪个是机器哪个是人;如果 C 无法通过聊天内容分辨出谁是机器谁是人,我们就认为计算机 A 具有了所谓的人工智能。这就是 Turing 测试。
    计算机拥有智能?这岂不意味着计算机也能学习,也能思考,也拥有喜怒哀乐?人类似乎瞬间失去了不少优越感,于是不少科学家都旗帜鲜明地提出 了反对意见。其中最为经典的恐怕要数美国哲学家 John Searle 在 1980 年提出的“中文屋子”思想实验了。把一个不懂汉语的老外关在一个屋子里,屋子里放有足够多的草稿纸和铅笔,以及一本汉语机器聊天程序的源代码。屋子外面则 坐着一个地地道道的中国人。屋里屋外只能通过纸条传递信息。老外可以用人工模拟程序运行的方式,与屋外的人进行文字聊天,但这能说明老外就懂中文了吗?显 然不能。每次讲到中文屋子时,我往往会换一种更具戏剧效果的说法。一群微软研究员在小屋子里研究代码研究了半天,最后某人指着草稿纸一角的某个数字一拍大 腿说,哦,原来屋外的人传进来的是一段笑话!于是,研究员们派一个代表到屋子外面捧腹大笑——但是,显然这个研究员是在装笑,他完全不懂笑点在哪儿。这个 例子非常有力地说明了,机器虽然能通过 Turing 测试,但它并不具有真正的智能。
    当然,有反方必有正方。另一派观点则认为,计算机拥有智能是一件理所当然的事。这涉及到一个更为根本的问题:究竟什么是智能?
    记得我曾经看过一本科幻小说,书名不记得了,情节内容也完全不记得了,只记得当我看完小说第一页时的那种震撼。在小说的开头,作者发问,什么是自 我意识?作者继续写到,草履虫、蚯蚓之类的小动物,通常是谈不上自我意识的。猫猫狗狗之类的动物,或许会有一些自我意识吧。至于人呢,其实我只敢保证我自 己有自我意识,其他人有没有自我意识我就不知道了。看到这里我被吓得毛骨悚然:完全有可能整个世界就只有我一个人有自我意识,其他所有人都是装出一副有意 识的样子的无生命物!
    有一次做汉语语义识别的演讲时,讲到利用语义角色模型结合内置的知识库,计算机就能区别出“我吃完了”和“苹果吃完了”的不同,可以推出“孩子吃 完了”多半指的是什么。一位听众举手说,难道计算机真的“理解”句子的意思了?我的回答是,没有冒犯的意思,你认为你能理解一个汉语句子的意思对吧,那你 怎样证明这一点呢?听众朋友立即明白了。你怎样证明,你真的懂了某一句话?你或许会说,我能对其进行扩句缩句啊,我能换一种句型表达同样的意思啊,我能顺 着这句话讲下去,讲出与这句话有关的故事、笑话或者典故,我甚至还能在纸上画出句子里的场景来呢!那好,现在某台电脑也能做到这样的事情了,怎么办?
    这就是所谓的“功能主义”:只要它的输入输出表现得和人一样,不管它是什么,不管它是怎么工作的,哪怕它只是一块石头,我们也认为它是有智能的。 永远不要觉得规则化、机械化的东西就没有智能。你觉得你能一拍脑袋想一个随机数,并且嘲笑计算机永远无法生成真正的随机数。但是,你凭什么认为你想的数真 的就是随机的呢?事实上,你想的数究竟是什么,这也是由你的大脑机器一步一步产生的。你的大脑逃不出 Turing 机。
    事实上,整个世界也逃不出 Turing 机的范围。 Newton 系统地总结了物体运动规律后,人类豁然开朗,原来世界万事万物都是由“力”来支配的,扔出一个东西后,这个东西将以怎样的路线做怎样的运动,会撞击到哪些 其他的物体,它们分别又会受到怎样的影响,这都是可以算出来的。这便是所谓的机械唯物主义:我们的世界是一个简单的、确定的、线性的、无生的世界。 1814 年,法国数学家 Laplace 给出一个更加漂亮的诠释:如果有一个妖精,它知道宇宙某个时刻所有基本粒子的位置和动量,那么它就能够根据物理规律,计算出今后每一时刻整个宇宙的状态, 从而预测未来。刘慈欣在科幻小说《镜子》中更加极端地把初始状态取到宇宙大爆炸的时刻,因为宇宙诞生之初的状态极其简单,调整到正确的参数就可以生成我们 所处的这个宇宙。这就是所谓的决定论。
    我特别相信这些说法。我的拖延症有一个非常怪异的缘由,那就是我会告诉自己,截止的那一天总会到来的,这堆破事儿总会被我做完的。遇上纠结的问 题,我不会做过多的思考,而会让一切顺其自然。其实,结果已经是确定的了,我真正需要做的不过是亲自把这个过程经历一遍。就仿佛我没有自由意志了一样。
    不过,现代物理学的观念,尤其是量子理论的诞生,开始质疑上帝究竟会不会掷骰子了。然而,上帝会不会掷骰子,对于我们来说其实并不重要。 Turing 的结论告诉我们,即使未来是注定的,我们也没有一种算法去预测它,除非模拟它运行一遍。但是,要想模拟这个宇宙的运行,需要的计算量必然超出了这个宇宙自 身的所有资源。运行这个宇宙的唯一方式,就是运行这个宇宙本身。 Seth Lloyd 在《Programming the Universe》里说到,“我们体会到的自由意志很像 Turing 的停机问题:一旦把某个想法付诸实践,我们完全不知道它会通向一个怎样的结局,除非我们亲身经历这一切,目睹结局的到来。”
    未来很可能是既定的,但是谁也不知道未来究竟是什么样。每个人的将来依旧充满了未知数,依旧充满了不确定性。所以,努力吧,未来仍然是属于你的。

2012年10月12日星期五

CRUX中Samba的安装和配置

CRUX中Samba的安装和配置

此教程适用于在VMware中安装的CRUX2.7
  •  安装samba

首先下载samba:
   # cd /home
   # mkdir samba
   # cd samba
   # wget http://www.samba.org/samba/ftp/stable/samba-3.6.8.tar.gz

然后解压缩:

   # tar zxvf samba-3.6.8.tar.gz

配置编译:

   # cd samba-3.6.8.tar.gz
   # cd source3
   # ./autogen.sh
   # ./configure
   # make
   # make install

samba就安装好了

  • 配置samba

复制配置文件到samba目录下:
   # cp /home/samba/samba-3.6.8/examples/smb.conf.default/usr/local/samba/lib/smb.conf

验证参数:
  # /usr/local/samba/bin/testparm

出现错误:
testparm: error while loading shared libraries: libtalloc.so.2: cannot open shared object file: No such file or directory

在源代码路径下的./bin/路径下找到该文件,复制到系统库文件夹中:
  # cp /home/samba/samba-3.6.8/source3/bin/libtalloc.so.2 /usr/lib/libtalloc.so.2

用相同的方法解决libtdb.so.1文件的问题
  # cp /home/samba/samba-3.6.8/source3/bin/libtdb.so.1 /usr/lib/libtdb.so.1

配置smb.conf:
  # vi /usr/local/samba/lib/smb.conf

找到[global],在其下面增加以下三行:
   display charset=cp936
   dos charset=cp936
   unix charset=cp936

这三行设置的目的是在win 机上使用“网络邻居“共享到linux 上的文件夹和文件时,显示汉字。
找到[home],在其下加入:
   path=/usr

这样Samba 用户在windows 机器中登录Samba 服务器后就可以看到/usr 下的所有文件
创建一个新用户:
  # useradd user1 -p 123456

复制一个库文件:
  # cp /home/samba/samba-3.6.8/source3/bin/libwbclient.so.0 /usr/lib/libwbclient.so.0

否则smbpasswd提示缺少库文件。
为samba添加用户:
  # /usr/local/samba/bin/smbpasswd -a user1

输入密码(可以与linux密码不同,这里为了方便设置为相同值):123456
再次输入后确认。

  • 启动samba服务

在启动服务前,首先需要创建一个空的打印机文件:
  # touch /etc/printcap

否则服务会报错:
Unable to open printcap file /etc/printcap for read!

然后启动samba服务:
  # /usr/local/samba/sbin/nmbd -D
  # /usr/local/samba/sbin/smbd –D

此时,在同网络的其他机器上访问\\[name or ip]\user1即可访问其共享文件夹。

  • 设置samba在系统启动时自动运行:

首先在/etc/rc.d/中建立符号链接:
  # ln -s /etc/rc.local /etc/rc.d

然后编辑配置文件
  # vim /etc/rc.d/rc.local

添加:
   echo “Samba Server is started!”
   /usr/local/samba/sbin/nmbd –D
   /usr/local/samba/sbin/smbd –D

保存退出。

转:Linux find 用法示例

转自:http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html

Linux中find常见用法示例

·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
====================================================
-name   filename             #查找名为filename的文件
-perm                        #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n               #按文件访问时间来查GIN: 0px">
-ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2              找文件,-n指n天以内,+n指n天以前
-ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                      #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2               #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]               #查长度为n块[或n字节]的文件
-depth                       #使查找在进入子目录前先行查找完本目录
-fstype                     #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]               #查长度为n块[或n字节]的文件
-depth                       #使查找在进入子目录前先行查找完本目录
-fstype                      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                %;      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                        #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                       #忽略某个目录
=====================================================
$find   ~   -name   "*.txt"   -print    #在$HOME中查.txt文件并显示
$find   .    -name   "*.txt"   -print
$find   .    -name   "[A-Z]*"   -print   #查以大写字母开头的文件
$find   /etc   -name   "host*"   -print #查以host开头的文件
$find   .   -name   "[a-z][a-z][0–9][0–9].txt"    -print   #查以两个小写字母和两个数字开头的txt文件
$find .   -perm   755   -print
$find   .   -perm -007   -exec ls -l {} \;   #查所有用户都可读写执行的文件同-perm 777
$find   . -type d   -print
$find   .   !   -type   d   -print
$find   .   -type l   -print
$find   .   -size   +1000000c   -print        #查长度大于1Mb的文件
$find   .   -size   100c         -print       # 查长度为100c的文件
$find   .   -size   +10   -print              #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find   etc   home   apps    -depth   -print   | cpio   -ivcdC65536   -o   /dev/rmt0
$find   /etc -name "passwd*"   -exec grep   "cnscn"   {}   \;   #看是否存在cnscn用户
$find . -name "yao*"   | xargs file
$find   . -name "yao*"   |   xargs   echo    "" > /tmp/core.log
$find   . -name "yao*"   | xargs   chmod   o-w

2012年10月11日星期四

VMware中CRUX网络环境配置

VMware中CRUX网络环境配置


最近折腾CRUX花了不少时间,也走了不少弯路,把遇到的问题记录下来,希望能够给人以帮助。

在VMware中安装完成CRUX后,一般而言是上不了网的。这是因为我们没有配置好CRUX的网络环境,也可以说我们刚刚安装好的CRUX不能适应我们的VMware环境。因此需要通过修改网络配置文件来完成。

为了确保我们的网卡驱动没有问题,我们首先使用ifconfig命令检查一下网络接口,应该会有:

    # ifconfig
    eth0      Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
              inet addr:192.168.1.100   Bcast:192.168.1.255   Mask:255.255.255.0
     ......
    lo        Link encap:Local Loopback
     ......
这说明我们的网卡驱动已经成功安装了。如果没有eth0的选项,那么说明缺少网卡驱动,需要重新配置和编译CRUX内核以添加网卡驱动。网卡驱动的选项如下:
      Devices Drivers --->
        Network device support --->
          Ethernet (10 or 100Mbit) --->
            <*>AMD PCnet32 PCI SUPPORT

相应的步骤可以参考之前的blog

确认网卡驱动没有问题之后,就可以配置相应的设置了。首先要确保在VMware里:
      VM --> Settings... --> Network Adapter --> NAT:Used to share the host's IP 
是选中的,也就是说虚拟机通过NAT的方式连接到互联网。
首先停止网络服务:
      $ sh /etc/rc.d/net stop
然后,我们参照官网的配置教程来配置CRUX虚拟机中的/etc/rc.d/net文件:
      $ vi /etc/rc.d/net
修改为以下内容即可:
  #!/bin/sh
  #
  # /etc/rc.d/net: start/stop network
  #

  case $1 in
  start)
 # loopback
 /sbin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host
 /sbin/ip link set lo up
 # ethernet
 /sbin/dhcpcd -t 10 -h $HOSTNAME eth0
 ;;
  stop)
 /usr/bin/killall -q /sbin/dhcpcd
 /sbin/ip link set lo down
 /sbin/ip addr del 127.0.0.1/8 dev lo
 ;;
  restart)
 $0 stop
 $0 start
 ;;
  *)
 echo "usage: $0 [start|stop|restart]"
 ;;
  esac

  # End of file
也就是说,以DHCP的方式连接到子网中。当然,你也可以按照教程配置为固定IP地址。
最后,执行start: 
      $ sh /etc/rc.d/net start 
以启动网络,等待DHCP服务启动完成,就可以连接到互联网了。你可以使用wget命令下载内容。
如果虚拟机仍然无法访问网络,则关闭VMware,尝试在系统服务中把VMware开头的所有服务重启一遍。
如果还不能够访问,可能问题出在其他地方,爱莫能助。