Saturday, 31 January 2015

windows 与 linux 之间的 ftp



本文分为两个 part, 分别是 centOS 6 连接去 win8.1(ip 10.8.7.158) 的 ftp server, 以及 win8.1 连接去 centOS 6(ip 10.8.7.144)  的 ftp server。例子中, centOS 直接用 root #。


Part A: centOS 6 连接去 win8.1 的 ftp server


首先, 目标是建立 win8.1 ftp server。win+s 搜索打开 Programs and Features


按左下角的 Turn Windows features on or off, 确保 Internet Information Services, FTP Server, Web Management Tools   3 个的空格都有点或勾。 然后 OK。



然后 win+s 搜索打开 Administrative Tools


双击打开  Internet Information Services (IIS) Manager



选 No 不鸟它。


expand 然后右键点击 Sites,选 Add FTP Site...


帮 FTP site 取个名字, 然后 browse 要分享的 folder path。 Next。


拉下选你的 lan IP 地址。 圈上 No SSL 。Next。
I





打勾 Anonymous。 Allow access to: 选 All users。打勾 Read 权限就够了。


有时可能会 connect 不到, 可以尝试选 site 然后点击图中右下角的 Restart


直接用firefox 浏览成功了(用 File explorer 也能浏览)。 看得见我分享的 C:\holeftp 的 lala folder。


 cmd 也成功了。 ftp IP 地址。 输入 anonymous 用户名, 因为没放密码所以 password 只按 [Enter] 就行。 dir 看得见 C:\holeftp 的 lala folder。



可是其它电脑, centOS 仍然 connect 不到 windows ftp server。 是为什么呢 ? 那就要 check firewall 了。



win+s 搜索打开 Windows Firewall


选左下角的 Advanced settings


右键 Inbound RulesNew Rule...

PortNext

输入  20, 21Next

Allow the connectionNext

打勾 Domain 和 Private。Next


随便帮这个 rule 命名, 小白 ftp ruleFinished

CentOS 成功 connect 了。 但是又有另一个 error。 输入指令 dir, 它会讲 "Entering Passive Mode", hang 在那里一直到 timed out。


So, 在刚刚新建的 小白 ftp rule, 右键选 Properties


进去 Protocols and ports tab, 把 20, 21 改成 All ports。 Apply


 然后去 Scope tab。Local IP address 点选 These IP addresses:, 按 Add...
This IP address range。 输入愿意分享的 lan IP 范围。

然后 Remote IP address 也一样步骤。


按 Apply。 OK。CentOS 那边也立马带来捷报 :)


Part B: win8.1 连接去 centOS 6 的 ftp server

如果还没有安装的话就 yum install vsftpd。


service vsftpd start 启动 server。vsftpd 对小白来说这个字有点难记, 但是只需要铭记在心 Very Secure  + ftp + Daemon 就不会难了。


centOS 自己 connect 自己, 搞掂。可是默认的 pub directory 是在哪里呢?

哦, pub 是 under /var/ftp/。ok, 想法子改成别的 path。


vi /etc/vsftpd/vsftpd.conf 然后加上这条 line (如果还没有 anon_root 的话)

anon_root=/root/Videos/

anon_root 故名思义就是给 anonymous 的 root directory。 /root/Videos/ 就是我要分享的 directory path。我之前已经加过 Downloads 了,所以图中用 # comment out 旧的。


改了 config file 就要 restart。service vsftpd restart


"500 OOPS: cannot change directory:/root/Videos/ #Downloads/" error 。



setsebool -P ftp_home_dir on (别忘了 restart vsftpd)可以解决这个问题。哎, 我之前也是用这招解决的, 做么现在不能 liao neh?


转念一想, error 信息把 comment 都  print 出来, 可能 trailing comment 不 support。就把 comment #/Downloads/ 丢了


终于可以了 :)


centOS 已经可以 connect 回来自己。但是 windows 8.1 那边 connect 不到 centOS ftp server。


如果我用 iptables -F flush 掉全部 chains/rules


windows 8.1 那里马上传来捷报。


不过要深入探索原因。总不能丢完全部 rule 吧, 看完下面你会发现其实跟之前的 windows 一样道理。
首先,  service iptables restart 弄回开机时的 /etc/sysconfig/iptables。

如果这时候丢掉可疑的 line 9 reject-with icmp-host-prohibited (可疑个屁,其实小白我是每一条 line 一个个丢才找到。)


iptables -D INPUT 9


windows 8.1 那边也一样 works 了。

service iptables restart, 试验

 iptables -I INPUT 9 -m iprange --src-range 10.8.7.0-10.8.7.255 -p tcp  -j ACCEPT




一样成功。其实跟 windows 一样允许 lan IP range。

9 就是飞去第九条 line(要配合 -I INPUT, 不是 -A INPUT ) , 原本第九条 line 的 reject-with icmp-host-prohibited 就往后移。上面的 priority 较高, 所以才放在 reject-with icmp-host-prohibited 前面。当然, 放 INPUT 1 也行。


把现在的状态 save 进去, iptables 重启就会使用这个更改了。


chkconfig vsftpd on 可以让它在 boot runlevels 5 时自动启动。


bonus note:

1. 如何下载名字太长的文件~


2. 要重新输入 IP 通常都是想不起来,必须特意去目标电脑输入 ifconfig/ipconfig 找。 所以我们就来制作一个方便输入 shortcut。
(1.) win+x+a 打开 admin 权限的 cmd。
(2.) C:\Windows\System32> mkdir c:\windows\hole
(3)  C:\Windows\System32> notepad
(4) 打开notepad 后, 输入 @doskey centftp=ftp -A 10.8.7.144
(5) 然后菜单 File -> Save As... -> 去 C:\Windows\hole 那里,输入 holedoskey.bat 文件名, Save ad type:  则选 All Files。Save。
(6) win+r 输入打开 regedit, 一路狂奔 HKEY_CURRENT_USER ->Software ->Micorsoft -> Command Processor。
(7) 对着 Command Processor 右键选 New -> String Value。改名为 Autorun。然后右键那个 Autorun, 选 Modify..., 在 Value data 输入 c:\windows\hole\holedoskey.bat (就是刚才 notepad 新建的文件 path)。OK。
(8) win+r+c 打开新的 cmd (旧的还没有 refresh), 输入 centftp, 就等同于 ftp -A 10.8.7.144(-A 是 login as anonymous)。


3. 
如果是  centos 那边, 可以在 ~/.bashrc 增加 alias winftp="ftp 10.8.7.158"
. ~/.bashrc refresh 即可。不过跟 windows 不一样, 似乎没有 -A。不过我们可以使用 ~/.netrc 文件 (man 5 netrc)。 这个文件坐落在 home directory (如果没有就新建吧)。

default login anonymous password love

那么登入 anonymous 用户就会自动输入 love 密码。由于 anonymous 不需要密码,所以 love 是放爽的。

如果要暂时阻止 ~/.netrc, 可以放 -n argument。

4. File may not have transferred correctly. 错误信息。默认下不 expect 传送图片/binary。收到的图片是 corrupted "有时"不能打开的。



换去 bin (binary mode) 即可解决。(注: 只发生在 CentOS,  Windows 没有这个必要)



5. 要在不储存的情况下,窥看文件的内容, 可以使用 get 文件名字 减号




最后,来一只 pikachu 镇楼。

Thursday, 22 January 2015

第一次用 windows


不会安装 windows 的我 (不包括 virtual machine), 一路来只能靠 linux 苟且偷生。

昨天老板给我一台 Dell 电脑用, 有 windows 8.1 预安装, 所以我就能顺便学下 windows 。

关于 windows 的记忆都忘光了, 只记得 ctrl+Alt+Del 会有东西弹出来, 那告东西叫什么名字想很久也想不起来。 Google 才知道那告东西叫 Task Manager。

不会安装 windows, 不会 task manager, windows 小白就是我了。


开机:

经过漫长的 email registration,密码设置。看到有 send data 给 IE/mircosoft  for better experience 的选项 。我会选 custom 然后再 untick 它。


安装 firefox:

我的 ram 很少, 所以就没打算把 chrome 当成日用品, 就用 IE 下载 firefox。 然后 firefox 下又出现要求 send report。 当然是 untick 完全部。 全球 30 亿的网民, report 多我一个少我一个不相紧。



print screen:


按 win+PrtSc 键就能自动 saved 在 Picture folder 里面, 不过它还是在 clipboard 里头。 虽然没有 clipboard viewer, 但是打开 paint 再  paste 就是刚才 的 print screen。




搜索:

win+s 搜索, 傻傻分不清楚为什么有些选了会跳出去 internet search, 有些会打开 program。本来想在 PC settings -> Search and apps, disable 掉 Using Bing to search online。 后来仔细看就发现, 旁边没有 icon 的属于 internet search, 轮子的是 settings, program 是自己特别 icon:


Administrator:

主要有两方面:
1. 更改 command prompt 权限:
虽说 win+x,再按 a 就能 pop up 有 admin 权限的 cmd, 不如更改永远用 admin 运行。
首先, win+s 搜索 cmd,  然后出现 command prompt, 就右键选 Pin To Taskbar。

然后 icon 出现在 desktop 下面的 Taskbar。右键那个 icon, 看见 Command Prompt  一行字, 再在那个Command Prompt 那行字右键选 Properties。

然后选 Shortcut tab -> Advanced 按钮, 打勾 Run as administrator -> OK -> OK

那么以后click 那个 icon 就会是 administrator 权限了。

2. 激活 admin 账号:
用 admin 权限打开 cmd, 然后输入指令:

net user administrator /active:yes

就能开通 administrator 了。


blue screen:

我在写这个 blog 时突然 blue screen, 而且每次 reboot 才进去 desktop 又重复 blue screen。
错误信息是 DRIVER VERIFIER DETECTED VIOLATION。不清楚原因, 重开机次数多, 会出现建议选项, 我选了 refresh windows, 等了 20 分钟左右就可以了。  firefox 那些自己安装的 app 都丢掉了, 不过 Documents/Downloads...etc 那些资料还在。网上有人教用 verifier 来 check。 我就 win+r 输入 verifier 打开 driver Verifier Manager。选 Display existing settings 按 Next。

全部都是 No, 现在已经看不出来当时的肇因。

refresh 后, Desktop 会多一个 xml 文件,用 firefox 打开, 原来 refresh 被移除的程序都有 list 出来:
McAfee 可以去登入官网再 reinstall, 至于 Dell System Detect , 直接点击就能下载 dellsystemdetect manifest 文件, 再安装, 也能用 notepad 看下 manifest 内容:


dual monitor:

因为我需要用 hdmi 连接去别的 2nd monitor, 所以就选了 Extend these displays。 Extend 成功后, 才能勾选 Make this my main display, 把别的 monitor 变成主要的, 那么按 win 键出来的 metro 就只出现在主要的 monitor。


消失的声音:

插入耳机发现没声音。明明之前 Narrator 会出声音。然后去 2nd monitor 那里发现声音是 0%。就调上去, 现在 2nd monitor 有声音了,可是耳机还是没声音。拔去耳机, 连 laptop 也没声音。
查下 Google 有人提起 device manager。 就 win+s 搜索打开 device manager(win+x 那边也有,不过本人比较习惯搜索...)。

不熟悉 device manager, 看不出来怎样。没关系,看到两个 audio driver 就联想到我的两个 monitor。 unplug monitor 看看, 哎, 其中一个 Intel(R) Display Audio 不见了。

右键看下, 两个 driver 都是出现 Disable 选项 (就是已经 Enabled 了)。
这样一来, 答案呼之欲出, 上面的 Intel(R) Display Audio override 掉 laptop 本身的 Realtek High Definition Audio, 所以 laptop 以及连接在 laptop 的耳机才没声音。 最后, Disable 掉 Intel(R) Display Audio, reboot,耳机就有声音了。

插了耳机, 不要忘记按这个 OK dialog。
有次我打开太多 window 掩埋了这个 dialog, 奇怪耳机没声音。


吵死人的声音:
有了声音后,第一件事就觉得那个会自己讲话的 Narrator 很吵。 就 ctrl+s 输入 narrator 就会出现 Narrator settings。 然后按 ENTER 进去把 Start Narrator AutomaticallyNarrator 两个选项 turn off 。记得是两个哦, 只关掉 Narrator 是不够的。而且渣到的是 Start Narrator Automatically 必须在 Narrator turn on 的时候才能按, 所以要先 turn off Start Narrator Automatically才 turn off Narrator


打华语字:

 win+s 搜索 language 就能找到增加语言的页面了。 win+space 来转换输入法。

add 了新加坡, 就不能再选中华人民共和国了。有何区别, 不懂。


folder favorites:

把 folder 的 path 加去左边, 以后方便跳去。


30%:

试过 restart 时, windows  会自动 update。 等了一小时左右才好。 不过神奇的是 30% 就好了。 巴仙率不能反映真正的 progress 拿来干嘛。 win+s 搜索 Windows Update settings 可以看见 update history。 disable 掉它? 我本身是程序员, 所以能理解有 bug 不 update 的杯具。

但是, 还是不希望在我关机赶时间的时候, 玩野 " updating, pls don't turn off your computer"


Send To:

这个简单, ctrl+L ,然后输入 shell:sendto (其实不需要 shell: 也行) 按 ENTER 就来到类似下图的 path。 丢掉( 或 cut 去别的地方 backup) 你不要的, right-click 的 Send To 就会少了它。



思考人生的 right-click:

无论 desktop 也好, icon 也好, right-click  慢到鬼那样。

所以 win+r  输入打开 regedit, win+s 搜索也可以:

从 HKEY_CLASSES_ROOT(简称 HKCR) 一路 expand 去 Directory -> background -> shellex -> ContextMenuHandlers, 直接用键盘的上下左右键 expand 很方便。

也可以先输入 D 就会跳去 D 开头的地方。 输入 Di 会跳去 Di 的地方。 要时刻留意的是最下方的 absolute path。 因为名字可以重复使用, 所以要注意不要跳错地方。

比较可疑的是第三方软件, 比如说 Nvidia driver 有问题, 所以这里就试一试 NvCplDesktopContext (Nv 一看就懂是 Nvidia)。

先右键 Export 来 backup 一下。

 建立一个 folder 把它 save 进去。文件的命名 agak-agak 就可以了, 因为以后 restore 时它自己会跳回去它的地方。 但是别放 123。



backup 后, 右键 Delete 或键盘 Delete。  

Before Delete, ~16 秒:

After Delete,< 1 秒:

如果有问题, 选 Import, 然后选刚才 backup 的文件, 就可以 restore 回去:


问题来了, 我又怎能知道 HKCR 去 Directory -> background -> shellex -> ContextMenuHandlers 呢? 每个人的 case 不一样, 不是所有东西都可以 Google 。而且, 如果是从 Icon 那里又不一样path 了。我之前这里也 hang, 但是remove 又重新安装 McAfee 就没事了(我上面 Blue screen 是提过)。那我要怎么detect 呢?



答案就是下载安装微软官方的 Process Monitor。

 打开后就已经 start 了。按 ctrl+e 停止 capture events, 然后 ctrl+x 可以 clear 完全部。 请按 ctrl+e 暂停才按 ctrl+x clear, 不然就坐等 hang 吧。

通常我会 ctrl+e stop 和 ctrl+x clear, 然后才 ctrl+e start 和 right click, right click 完毕就赶紧去 ctrl+e stop。 然后留意时间, 找出刚才 right click 的 PID, 然后就去 ctrl+L选 Filter。


Filter 规则可以自由选 PID is xxxx, Result excludes NAME NOT FOUND 之类的。

下面的例子就是 Nvidia NvCplDesktopContext filter 出来的结果。 看见了吗? 它的 Path  Column 有我之前提过的 HKCR\Directory\background\shellex\ContextMenuHandler\NvCplDesktopContext (我 import 之前的那个 backup 来做这个试验的)。

也看得见其实还有其它 path 的, HKCU\Software\Classess\Directory\background\shellex\ContextMenuHandler\NvCplDesktopContext

但是留意那个 Result Column 是 NAME NOT FOUND, 所以才不需要 delete 掉。
试下去 regedit 看下, 会发现 HKCU\Software\Classess 接下去没有 \Directory,而是 CLSID 到 Extensions,  所以才 NAME NOT FOUND。

通过这个方法, 就算 Google 没有答案,小白们也能自行解决问题。