【翻译】简便安全地访问远程文件

【原文 Accessing Remote Files Easily and Securely 】

安全 shell - ssh 以及 scp 是我每天基本上都会用到的工具。当在多系统上工作时,不设置 SAMBA 或者 NFS 就能在机器之间移动文件是非常便利的。而你所需要的就是打开安全 shell 守护进程 - sshd
在我们进入 sshfs 的细节之前,让我们来快速看一下 ssh 。安全 shell 守护进程默认运行的端口 22 上。它使得可以运行一个加密的 shell 交互。带上 -Y 选项,你可以运行 X11 转发机制,允许你在远程机器上运行 X11 等图形程序以及在你当前的终端上显示窗口。
你可以通过 /etc/ssh/sshd_config (这个位置是在 Kubuntu 系统上,不同发行版可能不同)文件来配置 sshd 。这里,你可以禁用 root 访问,旧的协议,X11 转发等。一般的见解是,你限制越多的远程访问,你的系统对于潜在的攻击来说就越安全。如果你打算暴露你的 sshd 到英特网,你可能要调整你的 hosts.allow  和 hosts.deny 文件。有很多强化服务器和 ssh 的指南,这里就不讲细节了。
要使用 ssh,你需要安装 sshd 。在 Ubuntu 系统,也就是 openssh-server 包。为了外部访问,你也需要在路由器/防火墙使用端口22的转发已经找出你的外部 IP 。现在你需要使用你的普通用户权限登录到你的机器。
$ ssh user@192.168.1.100
user@192.168.1.100's password:
输入密码,你就可以完全访问远程系统了。
便捷的安全拷贝命令 - scp ,也以同样的方式工作。要拷贝 test.txt 文件到用户的远程主目录,简单地输入:
$ scp test.txt user@192.168.1.100:
你将会被提示输入密码。你也可以同样的拷贝远程系统的文件到本地。写明的命令演示了怎么样拷贝一个完全路径的文件到本地机器:
$ scp user@192.168.1.100:/var/log/messages remote-message
 这两个命令意味着你可以自由地在机器之间拷贝文件。而 sshfs 作为一个可以挂载的文件系统提供了这样的功能。在进入怎样设置 sshfs 之前,我们来快速看看什么是 sshfs 。
sshfs 是用 FUSE ,以及依赖 ssh 的 sftp 部分来访问远程机器。作为一个远程文件访问协议,sshfs 不是非常好,例如,多用户同时写入同一文件,将造成损坏。而有点是继承了安全性和容易建立。
那么,怎么用呢?让我们来看一个非常简短的示例。
$ sshfs user@192.168.1.100: remote-home
$ ls remote-home
Desktop  Documents  Downloads  Music
$ fusermount -u remote-home
初始的 sshfs 命令挂载用户远程的主目录到 remote-home 。你可以在冒号后指定另一个路径来挂载远程文件系统的任何一个部分。访问仅仅受用户的访问权限限制。
在挂载的文件夹上使用 ls 或其他原始命令,就像远程主目录被本地挂载一样。所有的工具都工作,例如你可以登录到你的远程机器,使用你本地安装的构建工具构建软件。
要卸载文件系统,使用 FUSE 工具包中的 fusermount 命令。
总结,sshfs 是一个容易建立的远程文件访问工具。如果涉及多个用户,它应该被小心使用。它使得可以易如反掌地临时访问远程文件系统,也方便从虚拟机挂载文件系统来访问和监视,也方便远程安装,编译和调试。总之,是我一直保留在我的工具箱中的工具之一。

哥德堡之行

昨天周六,来瑞典的最后一个周末啦!所以决定要去哥德堡玩一玩。

我们有四个同事一起去,周五下午就把票买好了!有意思的是,瑞典这边20到25岁还可以买“青年票”,比成人票便宜很多,正好我和另一个同事25岁(其实再过十几天我就26啦!)。所以只花了163kr 到哥德堡,而另外两个同事却花了 400kr 。

第二天早上,我们起了个大早,火车是7点45分的,大约一个多小时到了一个叫 Emmaboda 的地方转了一辆 SJ 的火车去哥德堡,在车上其实检票员根本没有检查是否是青年票,于是那两个同事很郁闷,决定回来的时候也买青年票。

大约又坐了三个多小时后才到哥德堡。哥德堡是瑞典的第二大城市,果然比 KA 这个小地方好多啦!

我们下车出火车站之后,就直接到火车站西边的一个很多的购物商场里面的一家 Information 店拿了一些地图,然后各自买了一张24小时的哥德堡城市卡,285kr,可以免费乘坐公交和城市有轨电车,已经很多玩的地方的门票,很划算。之后我们沿着市中心的道路逛了一些广场,哥德堡这个城市的有轨电车很发达,有看起来比较老式的,也有看起来新式一点的。城市到处都有雕像,我们就沿着主要的街道逛和拍照。

之后走到一个博物馆,我们用买的城市卡进去看了一下,里面大部分是画和雕像艺术。出博物馆之后,附近就是哥德堡大学的音乐与戏剧学院。我们从学院里穿过,学院里的草坪上坐,躺了很多人,都是在享受阳光,还有在玩飞盘的。

穿过学院之后,我们来到了科技馆,同样用城市卡可以免费进去。我们先到最高层,是一些爬行动物和水族类的展览。然后进入一个模拟的热带雨林,里面有热带雨林植物,喷水(下雨),里面很热,估计30度以上。在里面稍微逛了一下后,我们去了另外一层的一些科技展览,有蛮多好玩的东西,比如模式识别啊,一些智力游戏。

逛完科技馆后我们搭了一辆老式的有轨电车到市中心乘观赏轮船的地方,我们搭了周六的最后一班。刚开始从出发点沿着河道形式,导游还一边介绍两边的建筑历史。在出海口处,有个很低的桥,游客都必须蹲下才能过去。然后就是到港口,有很多大的游轮,货轮,还开到了哥德堡比较出名的一个四帏帆船那里去恍了一圈。然后再港口转了一圈,其中还看到了爱立信公司在哥德堡的办公楼。之后又沿着河道的入口返回到了上船的地方。

游完船之后,差不多下午6点啦!我们正打算步行去找旅馆,去发现一条主要街道人越来越多,而且都没有车行驶了。我们跟着人群走过去,才发现是警察将道路给栏起来啦,好像是要搞什么游行。打听了一下,说是每天五一的前一天哥德堡都有组织搞一个纪念上一年事件的游行。路两边都站满了人,我们也跟着想看看,结果等了好久,连发对这个游行的人都游行过了,正式的游行还没开始!我们实在等不下去啦!就先去找旅馆啦!

我们按照地图,走了好久才找到了我们之前在网上查到的“青年旅舍”。我们住了一个4人间,两张高低床,275一个人。郁闷的是连床单和被套还得自己套。

我们在旅店稍微休息了一下之后,打算出去吃饭,然后继续玩!出来后,又看到一些比较漂亮的建筑,还有到了老城,其中有个山坡,上面是一个比较古老的小城堡,我们顶着肚子饿爬上去看了一下!上面好多年轻人在喝酒。瑞典这边一到晚上到处都可以看到人拿着酒在喝!我们下山之后看到一家批萨店,我们就打算在这吃了,结果进去后就应该搞头在弄批萨,说是要等20多分钟,他让我们去另个地方吃。这还是第一次遇到,在国内,餐厅老板及时要等很久,也会说“坐坐坐,很快”,哪有有生意不做的啊!!

于是我们在附近找到了一家上海餐馆,里面服务员是个华侨,不过不会说中文。我们点了炒饭,有肉有蛋的炒饭 79 kr,能吃饱,还算不错啦!吃完饭后差不多10点啦,其实天刚刚黑完。

我们搭车去之前查好的一个赌场,叫做 Cassino Cosmopol。因为城市卡是可以免门票的。在进赌区前,穿外套需要脱掉。我刚开始一直看怎么玩。有个同事会玩,于是之后兑换了一些筹码。他运气相当好,第一把就赢了差不错700多kr。之后我们几个还帮他输掉一下,最后他大概赢了 600 多,我们就撤啦!

出了赌场,我们又沿着这海走到那个四帏帆船那里去看了一下之后,差不多凌晨12点啦,我们就坐车回到了旅舍睡觉。

第二天,一个同事起得比较早,一个人去植物园逛了一圈。我们另外三个睡到9点才起来。之后我们打算去沃尔沃汽车博物馆看看。于是搭了电车到一个比较远的地方后,才发现还需要转公交车才能到,看了下时间,我们决定不去啦!于是回到市区,打算去游乐场,不过我们先到了火车站,打算先把回去的票买好!结果悲剧的是,下午的票已经买不到啦,我们最后选择中午12点的票,就放弃了去游乐场,也没来得及逛购物中心。

坐了3个多小时的火车到 Eemmada 之后,我们刚开始还以为是换另一辆火车。结果发现我们错啦!这次是要换乘一个大巴!大概1个多小时后,又回到了 KA !基本上这次旅行还算可以。就是火车票买晚了有点失败,不然还可以玩玩的!最划得来的是买了那张城市卡,如果单个算那些门票费的话,都差不错1000多啦!



出差瑞典

工作快蛮三年了,终于有了一次出差的机会!没想到还是走出国门,目的地是瑞典的 Karlskrona (KA) 。
幸好之前在深圳的时候已经办理好了护照,不然就没这次出国的机会啦!4月15号拿到了签证,同事一起的订的飞机票是北京时间17号23:30分,从上海浦东到法兰克福机场转机到哥本哈根,然后再转火车到 KA。
17号下午19点,吃完晚饭后,就打了个的士,然后上外环直奔浦东机场。和出租车司机刚开始聊天还挺好,不过这个上海人有很大的排外思想,这让我很不爽!不到1个小时就到了浦东机场,车费花了 193 rmb 。到机场后上了个厕所后碰到了比我还早到的同事,然后就坐着等其他同事。
差不多21点多,我们托运完行李后直接过关进入了候机厅,然后去逛了浦东机场的免税店。有同事在里面订购了很多化妆品,我什么也没买,只是看了下有些酒还挺好,打算回去的时候整两瓶回去。
之后就等着登记,我们乘坐的是汉莎航空,好像是一架 A340 这个飞机比较长,我们订的座位在最后面。从中国出发的飞机就是人多,几乎没有空余的座位,而且经济舱的位置相当的狭小。飞机起飞后不久,就开是发晚餐,我选了中餐的牛肉饭,味道还可以,还喝了两杯红酒。正是由于喝了两杯红酒,导致我后面把吃的东西全吐出来啦!吃完晚餐后,就坐着看看电影。后面感觉很不舒服,一个是吃多了,酒也喝多了,还有就是位置很不舒服,导致我睡了一个觉之后难受,之后就不停地去厕所呕吐。大半夜的时候睡不着和另个同事都机舱最后面去喝茶,结果一个中国的乘务员还非要让我们坐回位置去!

法兰克福机场
法兰克福机场
大概欧洲时间凌晨 5:30 分,终于到达了法兰克福机场,那时天还没亮。我直接下飞机过了一个德国的关检,由于飞往哥本哈根的飞机是8点多,所以我们在法兰克福机场里面逛了一下,里面也有很多商店。之后天慢慢就亮啦!8点多我们乘坐飞机飞往哥本哈根。当时德国的天气是阴天,飞机起飞后不久冲出了云层,阳光普照,感觉真是舒服,看着下面的云层就像棉花糖一样铺到天边。

飞离法兰克福
飞离法兰克福

冲出云层
冲出云层
一个多小时,飞机下降又穿过云层后直接就降落到哥本哈根机场,这个机场比较,就在海边。

哥本哈根机场
哥本哈根机场

哥本哈根火车
哥本哈根火车
下飞机取了行李之后,我们直接到机场下面的火车站坐火车前往 KA,大概12点多我们坐上了火车。这边的火车就像地铁一样,但是人很少,就三节车厢的火车多坐不满。火车开出站没多久就到了丹麦和瑞典跨海大桥,进入瑞典之后天气非常好,阳光明媚。在火车上看到这边的感觉非常好!大概坐了1个多小时,火车停在一个叫 Kristianstad 的小镇,我们需要在离这转另一辆火车才能到 KA 。这小镇的火车站下来就随便出去,对面是一个教堂,我们在周围逛了一圈,拍了几张照片。

Kristianstad火车站
Kristianstad火车站

教堂
教堂
在这个小镇等了差不多一个小时,我们上了去往 KA 的火车,再坐了差不多2个小时,我们终于到这次出差的目的地 Karlskrona 。 这也是一个镇,火车站还没之前转车那里的好。

Karlskrona火车站
Karlskrona火车站
我们下了火车差不多下午 3点多啦!于是我拖着行李去找我们已经订好的住的地方,我订的是一个类似租房的那种地方。房间里有简单的厨房之类的。找到了之后,发现这边的所有门,不管是外面的大门还是每个房间的门都是使用密码来开的,我们之前订好房就已经发给了我每个房间的密码,我们到了之后也没个什么人,因为是周末。
我们直接就用密码打开各自的房间。每个人的房间的布局都不同。我都看了下,我这间算是最小。不过很精致,什么都有!

房间
房间
房间房间
整个过来的行程就是这样。由于我来的时候忘记带相机的读卡器啦,所以一直无法上传照片。幸好今天有个一个同事从上海过来,多亏他帮忙把数据卡带过来,我今天才能上传了前几天照的照片,哈哈!

调试 shell 脚本的 unexpected EOF while looking for matching `"' 错误

今天在写一个 shell 脚本的时候遇到了如下的错误
line 225: unexpected EOF while looking for matching `"'
line 233: syntax error: unexpected end of file
可是认真查看它提示出错的行时,却发现 " 号是配对的。

225 行是如下的代码
if [ ${options} = "ALL" ]; then
很明显报错的行数不对,由于前面的代码比较多,一行行看也不容易看错错误。
既然说文件结尾有问题,于是我在文件尾加上一个 " 符号,再运行。现在提示给出了正确的错误行号。

原来是前面有这样的代码

echo "${PACKAGENAME" >> ${file}
是变量的引用时少了相应的 } 号。


所以,如果以后遇到类似的问题,可以尝试加一些符号来调试,也许会有帮助。

openSUSE 11.3 上每天的 cron 任务时间


前段时间,发现每次开机后一段时间机器就会很慢,似乎在跑些什么任务,于是查看系统任务,发现有updatadb (为 locate 构建数据索引)在运行。这些任务是由 cron 触发的。
于是我用 crontab 命令来查看当前的 cron 任务列表,可是得到如下返回:
$sudo crontab -u root -l 
root’s password: 
no crontab for root
可是我发现在 /etc/cron.daily/ 目录下有一些脚本, 其中就有一个 suse-updatedb 。哪些进程就是由这个脚本启动的。
接下来,我查看了一下 /etc/crontab 文件
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
这说明系统会每 15 分钟调用一次 /usr/lib/cron/run-crons 脚本,接着查看了一下那个脚本,其中发现了一行注释:
# if DAILY_TIME set, run only at a fixed time of day
而 DAILY_TIME 这个变量应该在 /etc/sysconfig/cron 配置文件里指定,在文件中有这么一段:
## Type:         string
## Default:      “”
#
# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be “14:00″.
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.
DAILY_TIME=”"
也就是说如果没有指定 DAILY_TIME ,则 cron.daily 将在系统启动后的 15 分钟触发,并且如果要指定特定时间,也只能指定在每小时的 00/15/30/45 分钟。
于是我把这个时间设定为 01:45 ,这样就在每天的凌晨 1点45分的时候才会触发哪些 cron 任务。
不过我看了下 /usr/lib/cron/run-crons ,还是没有完全弄明白这个 cron 框架是如何去按照指定时间触发的。
好像 openSUSE 11.4 将使用新的 cronie 1.4.4 替代现在的 vixie-cron 4.1 ,看看这里 SDB:Cron 。

KDE 4.6 - 平台更新

上一篇中,介绍了 KDE 4.6 关于应用程序方面一些更新,现在我们来看看新的 4.6 平台给我们带来了什么样的更新。

Plasma 工作空间和 KDE 应用程序构建于 KDE 平台之上,新的平台带来了应用于所有 KDE 应用的新功能。“移动构建目标”使为移动设备的开发更容易。Plasma 框架支持用 QML(描述性 Qt 语言) 来写桌面小工具, 以及为数据交互提供了新的 Javascript 接口。KDE 应用中基于元数据和语义搜索的技术- Nepomuk,现在提供了一个图形界面来备份和恢复数据。UPower,UDev 和 UDisks 可以用来替换过时的 HAL。还改进了蓝牙支持。改进了 Oxygen 小工具和风格设置以及一个为 GTK 应用的新 Oxygen 主题,它允许应用无缝地合并到 Plasma 工作空间,看起来就像是 KDE 应用程序。
 

更容易的移动开发工具链


  由于 KDE 库更加模块化,部分 KDE 平台现在可以为移动和嵌入式目标系统构建。减少了交叉库的依赖,以及允许关闭某些功能,现在 KDE 框架很容易部署到移动设备。移动配置文件以及用于移动和平板版本的 KDE 应用程序,比如 Kontact Touch - KDE 的移动办公套件,以及平板电脑和手持设备的 Plasma 用户接口。

 

用 QML 来管理 Plasma


  随着新版本的发布,Plasma 框架支持用 QML 来写小工具。同时已经存在的小工具继续像之前一样可用。现在,QML 是构建新的小工具的首选方法。Plasma 数据引擎增加了新的功能,包括使用 Javascript 插件共享文件,一个允许数据引擎为离线使用缓存数据的存储服务。还有新的 KPart,使得开发者更容易地集成这些新的和之前已存在的 plasma 技术到他们的应用中。

 

支持 UPower,UDev,UDisks,和元数据备份


  由于新的 UPower,UDev 和 UDisks 后端,过时的 HAL 已经不再需要在 Linux 上管理硬件。使用这些新的后端,应该程序不需要被更新。在不支持 UPower 的系统上,HAL 仍然可用。
  KDE 平台的语义桌面技术-Nepomuk,具备了备份和同步支持,使得在设备间传输元数据更容易。用户现在可以使用图形接口来备份他们的语义数据。附加的同步功能当钱只能在命令行模式可用。
Semantic data can now be easily backed up and restored using a graphical interface

 

KWin可脚本化,Oxygen-GTK 增强交叉桌面集成


  KDE 的窗口复合管理器-KWin,现在有了脚本接口。这让高级用户和分发者有更多的能力来在 Plasma 工作空间控制窗口的行为,例如可以设置窗口为“保持在上”直到它被最大化,当最大化时作为普通窗口将被覆盖,当非最大化时,又自动设置成“保持在上”。现在,KWin 小组正在为支持 OpenGL-ES 工作,希望能在 2011 年夏天的 4.7 版本中首次亮相,那时 KWin 将能在手持系统上使用。
  Plasma 平台的视觉组件-Oxygen,也扩大地与一整套重做的 mimetype 图标工作,Oxygen-GTK 主题引擎的介绍,使得 GTK 应用程序更好地与 KDE Plasma 工作空间集成,包括渐变和许多用户期盼的 Oxygen 功能。
he Oxygen-GTK theme allows KDE and GTK applications to be mixed seamlessly

 

新的蓝牙框架使得设备配对更容易


  一个著名的蓝牙框架-BlueDevil,使得设备配对和管理更容易。BlueDevil 替代了 KBluetooth,构建在 BlueZ 软件栈之上。
  • 现在你可以使用一个向导来配对设备
  • 使用 Dolphin 或者 Konqueror 来浏览蓝牙设备上的文件
  • 从 KDE 的系统管理或者系统托盘来管理蓝牙设置
  • 新的框架监听接入请求,如接收文件或者输入 PIN 密码

  关于 KDE 4.6 在平台方面的更新就介绍到这。三篇关于 KDE 4.6 版本带来的新特性也介绍完啦! 有兴趣尝试 KDE 的话,可以到 www.kde.org 了解更多信息。

  (注:以上大部分内容和图片翻译来自 http://www.kde.org/announcements/4.6/platform.php

  [上一篇: KDE 4.6-应用更新 ]

KDE 4.6 - 应用更新

上一篇介绍了 KDE 4.6 在工作空间(Workspaces)方面的一些更新。这一篇,我们来看看在应用程序方面,KDE 4.6 带来了哪些更新。
很多 KDE 应用程序小组都发布了新的版本。特别的亮点包括: 在虚拟地球(Marble) 中选路能力的改进; 以及在 KDE 文件管理器(Dolhin)里使用文件元数据来过滤和搜索的改进。KDE 游戏集也带来了许多增强; 图片浏览器(Gwenview)和截屏程序(KSnapshot)具备了将图片及时分享到许多流行的社交网站的能力。下面来看看具体内容:

Dolphin 添加了称为 Faceted 的浏览功能

Kfind 和 Dolphin 的搜索界面已经统一到了一个新的简单的搜索栏。Faceted 浏览首次公开亮相了过滤面板的形式,这使得你可以轻松地使用文件的元数据索引它们。一个新的侧边烂允许层次搜索,也就是使用元数据作为额外过滤来增强传统的文件浏览。
Dolphin's faceted browsing lets you use multiple filters to find files by metadata
  • 列视图改进了可用性。现在列的宽度可以自动或者由用户来调整,文件选择使用橡皮条指示,以及导航到临近的列不再需要水平滚动条了。
  • 为了完成将 KDE 的开发从 SVN 迁移到 Git,Dolphin 新增了一个 Git 插件功能,可以直接从 GUI 更新和提交代码。 当然,SVN 插件仍然可用。
  • 服务菜单多方面的改进(具体可以查看 http://ppenz.blogspot.com/2010/11/improved-service-menus.html

Kate 具备了 SQL 客户端功能

Kate,强大的文本编辑器,这次发布带来了大量闪光的新的功能。特别地,新版本提供了如下功能:
  • 在 Kate 下一次启动时恢复未保存的本地文件(支持交换文件)
  • 总是加载插件
  • 添加脚本到菜单以及绑定快捷键
  • 新的 SQL 查询插件给 Kate 带来了基本的 SQL 客户端的功能,以及通过 Qt 的 SQL 模块支持很多种类的数据库
  • 一个新的 GNU 调式(GDB)插件
  • 一个新的高亮选择文本插件

管理社交网络的图像应用程序

KDE 的图像查看器 Gwenview,添加了一个“分享”按钮来将图片导出到流行的图片分享和社交网站。

Gwenview can share images to many popular social networking sites


KSnapshot 现在可以进行套索区域截屏,可以选择包括鼠标指针,还有“发送到”按钮可以及时将截屏进行分享。


KSnapshot
KSnapshot can directly export screenshots to a number of 3rd party services

许多其它 KDE 应用程序更新也带来了新的功能和修复了许多错误,同时也从 KDE 平台获得了最新的改进来增强速度和稳定性。

Marble 带你回家,由于 OpenGL,KStars 渲染更快

KDE 的虚拟地球(Marble),继续因其改进的选路计划支持而发亮,现在也允许选路数据的下载。同时,它的移动版本 MarbleToGo 能进行路线规划导航。dot.kde.org 上有图片和视频,可以到这里找到功能指导的演示。

Marble’s advanced routing can use a variety of configurable backends
The mobile version of Marble is a capable personal navigation tool
KDE 的桌面天文馆,具备了使用 OpenGL 来渲染的可选支持,以 OpenGL 的能力来在硬件傻瓜你增强性能。

KDE 游戏

  • Klickety,一个 Clickomania 游戏的改写版本,它也通过兼容模式取代了 KSame。
  • KGameRenderer 框架统一了游戏主题,带来了一致性和平滑的感观。大约十几个 KDE 游戏已经移植到了这个新的架构,减少了内存使用,已经允许它们利用多核处理器。
  • Palapeli 新的剪贴猜谜游戏,将图像剪辑成不同的和看起来可信的小片,斜角效果使得这些小片呈现三维效果。
  • Palapeli, the KDE puzzle game, makes it easy to create jigsaws from your own images
  • Kajongg 新改进的文档为新手解释了这个游戏。更多的只能机器人玩家,改进的可用性和可玩性,由于更好的瓦片处理使得这个传统的游戏更好玩。

好了,关于 KDE 4.6 在应用程序方面的更新就介绍到这吧!
如果想知道如何安装使用 KDE 应用程序,请到 KDE 了解更多信息。
(注:以上内容和图片大部分翻译自 http://www.kde.org/announcements/4.6/applications.php