2010/08/19

Windows的遠端桌面連到Linux的桌面XRDP

Windows的遠端桌面連到Linux的桌面XRDP

XRDP 是一個開放原始碼的程式模擬微軟 rdp 的服務,提供使用者
在 Linux 下遠端連線的一種選擇,但是他還是架構於 vnc server 之上,
 xrdp 是用來當作中介的伺服器用途.

office site: http://xrdp.sourceforge.net/

(1)server 安裝 xrdp
目前 ubuntu 10.04 對於安裝 xrdp 顯的非常的友善,只要使用 apt-get install xrdp
就可以安裝完成.相依套件的安裝會一併自動安裝到好.

 apt-get install xrdp

(2)設定 vnc  的遠端桌面 ( vino-preferences套件), 你可以從 Gnome 的
system -> Preferences -> Redesktop 找到並啟動. 如果找不到可以
直接在 console 下指令

 vino-preferences

然後就會出現下面設定的視窗了,請一下列圖示設定即可:


遠端桌面 ( vino-preferences套件) 設定畫面
(3) RDP client
接下來就是 RDP client 端的工作了,請開啟你的 RDP client , Windows 稱之為遠端桌面連線
通常藏在附屬應用程式裡面, 然後輸入該 xrdp server ip 就可以連線了..登入畫面如下:




因為 xrdp 是呼叫 vnc 用 127.0.0.1 登入,所以
登入用系統 /etc/passwd 的帳號及密碼就可以登入...故 root 也可以登入 (^^!!!這不是好事)

除了windows 有 rdp 在 linux 上面也有 rdesktop 可以提供遠端連線的服務
http://www.rdesktop.org/

針對 MAC OS M$也有出了 for mac 版本的 rdp client
http://www.microsoft.com/mac/products/remote-desktop/default.mspx

另外 xrdp 在使用時會出現另外一種隱憂,他沒有很方便的連線ip權限控管機制
雖然跑得是 RDP 3189 port 但是只能用 Linux 內建的 netfilter (iptables) 來作限制
相對的很不方便,如果可以支援tcp-wrapper 用hosts.allow and hosts.deny 來限制就會方便許多

2010/08/18

把 Ubuntu 改裝成為 Windows7 樣式佈景

剛發現一個超強大的 Windows 7 Gnome 樣板,他幾乎把 windows7 的全部icon 都 copy 過來了
並且也把很多應用程式的佈景也都更改為 windows 7 的佈景,沒仔細看根本看不出來

http://www.omgubuntu.co.uk/2010/04/windows-7-theme-for-ubuntu.html



包含了這些項目都有被改到


The main element of the pack comprises: -
  • Windows 7 style icon themes
  • Windows 7 style GTK, Metacity & Emerald themes
  • Windows 7 sound theme
  • Wallpapers
Added into this are: -
  • Emesene theme
  • Terminal theme
  • GNOMenu themes
  • Pidgin tweaks
  • OpenOffice splash screen
  • Fonts
  • Emoticons
  • DockBar theme

下載請從 Gnome-Look.org 下載
http://gnome-look.org/content/show.php/Win2-7+Pack?content=113264&PHPSESSID=6b4d386702c5aa9851736766665d7f74

下載連結
下載完成後會是一個 .lzma 的壓縮檔,按滑鼠右鍵解開後
執行檔案內的  GUIInstall.sh 他會出現圖形介面引導你安裝
基本上只要下一步,下一步就可以完成安裝的動作.
算是非常簡單的安裝方式。因為我的 Ubuntu 是安裝英文版,所以更是感覺不出來他是ubuntu.

2010/08/09

GRUB 2 的開機選單修改及預設開機啟動

GRUB2 改進了 GRUB 的優點,讓他變功能更強大???

* command mode 修改法:
原本的 menu.lst 變成 /etc/grub.d/ 和 /etc/default/grub 兩個地方來修改
通常是修改 /etc/default/grub.cfg 的設定檔
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=8
* 再透過 update-grub 程式產生更新 boot/grub/grub.cfg 檔案才可以修改成功(變得真是麻煩)
# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-24-generic
Found initrd image: /boot/initrd.img-2.6.32-24-generic
Found linux image: /boot/vmlinuz-2.6.32-23-generic
Found initrd image: /boot/initrd.img-2.6.32-23-generic
Found linux image: /boot/vmlinuz-2.6.32-21-generic
Found initrd image: /boot/initrd.img-2.6.32-21-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done

but..對於使用者而言並不如以前的 GRUB 設定來的簡單,
所以其實他是告訴我們...請用圖形介面設定....

* 用圖形介面程式 StartUp-Manager 設定 Grub2
* 安裝
sudo apt-get install startupmanager
* 安裝完成後可在 "系統" -> "管理" -> "StartUP-Manager" 開啟本程式
* 然後圖例如下:


* 接下來不用我說你應該會做了

* 參考:
* https://help.ubuntu.com/community/Grub2 GRUB2 說明(英文)
* http://wiki.ubuntu-tw.org/index.php?title=GRUB_2_%E4%B8%AD%E6%96%87%E6%8C%87%E5%8D%97 Grub2 說明(中文)

2010/08/04

Apache2 使用CGI程式(perl,python,bash shell)

CGI 介紹 http://ind.ntou.edu.tw/~dada/cgi/CGIintro.htm
CGI是Common Gateway Interface的縮寫,中文翻做『共通閘道介面』。
它是一種標準介面程式,能讓你的網頁跟WWW server溝通,達到跟使用者互動的效果。
而且透過CGI程式,可以讓你動態的產生網頁,秀出server上的最新資料。
當你link到一個CGI物件時,你取回的文件並非是一份靜態資料, 而是一個藉由
程式動態產生的HTML資料流。傳回來的資料也許分分秒秒都在更改,或者針對使用者
的特殊查詢而有不同的反應,例如股票市場行情等等。 簡單來說,CGI程式就是能夠
動態產生WWW網頁,並讓一般使用者經由WWW取用現存在傳統資訊系統內的資料。

但是現在 CGI 的功能大多以備PHP 直接嵌入的方式取代了,但是還是有些語言程式仍然用著這種方式存在者。

參考:http://jangmt.com/wiki/index.php?title=253_unit8#LAB7.EF.BC.9A.E4.BD.BF.E7.94.A8_CGI_.E7.A8.8B.E5.BC.8F

* 如果要再 Apache2 上面使用 CGI 程式,只要透過下列設定即可使用:

* 使用 CGI 程式:Dynamic Content with CGI

* 使用root修改 httpd.conf 加入下列敘述,讓一般使用者的目錄可以使用cgi程式。
<VirtualHost *:80>

    DocumentRoot /home/student/public_html

    ServerName station1.example.com



<Directory /home/student/public_html/cgi-bin/>

    Options ExecCGI

    SetHandler cgi-script

</Directory>

# 底下這行 alias 需要加入,否則在虛擬主機無法看到結果。

Alias /cgi-bin/ "/home/student/public_html/cgi-bin/"

</VirtualHost>

* 使用一般使用者 student 建立一個 test.cgi 做測試
[student@station1 ~]$ mkdir -p /home/student/public_html/cgi-bin/
# 切換目錄
[student@station1 ~]$ cd /home/student/public_html/cgi-bin/
# 編寫 test.cgi 檔案,結果是使用perl顯示電腦資訊
[student@station1 cgi-bin]$ vim test.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<b>CGI test ok<b>\n";
print "<b>Date: ", scalar localtime, "</b><br>\n";
print "<hr>It worked!\n";
print "This script runs under: ".$ENV{"GATEWAY_INTERFACE"}."<hr></n";
$ENV{"SERVER_NAME"}="(Hidden for security purposes)";
$ENV{"SERVER_ADMIN"}="(Hidden for security purposes)";
$ENV{"SCRIPT_FILENAME"}="(Hidden for security purposes)";
$ENV{"SERVER_SOFTWARE"}="(Hidden for security purposes)";
$ENV{"SERVER_PORT"}="(Hidden for security purposes)";
$ENV{"SERVER_SIGNATURE"}="Apache-AdvancedExtranetServer (Complete info hidden)";
$ENV{"PATH"}="(Hidden for security purposes)";
$ENV{"SERVER_ADDR"}="(Hidden for security purposes)";
$ENV{"DOCUMENT_ROOT"}="(Hidden for security purposes)";
$ENV{"MOD_PERL"}="(Hidden for security purposes)";
print "%ENV: <br>\n", map { "$_ = $ENV{$_} <br>\n" } keys %ENV;

# 賦予可執行權限
[student@station1 cgi-bin]$ chmod +x test.cgi

* 測試網頁 http://172.24.0.1/~student/cgi-bin/test.cgi 或 http://station1.example.com/cgi-bin/test.cgi (前提為 Alias /cgi-bin/ "/home/student/public_html/cgi-bin/" 這行加入設定檔才能夠執行否則只能以 user_dir 方式執行)

* python 也可是 cgi 的程式,test 程式碼如下:

#!/usr/bin/env python

import cgi
import cgitb; cgitb.enable() # for troubleshooting

print "Content-type: text/html"
print

print """
<html>

<head><title>Sample CGI Script</title></head>

<body>

<h3> Sample CGI Script </h3>
"""

form = cgi.FieldStorage()
message = form.getvalue("message", "(no message)")

print """

<p>Previous message: %s</p>

<p>form

<form method="post" action="index.cgi">
<p>message: <input type="text" name="message"/></p>
</form>

</body>

</html>
""" % message

* 參考:http://wiki.python.org/moin/CgiScripts

* bash shell 也可以用來寫 CGI 程式

#!/bin/bash
echo "Content-type: text/html"
echo ""
# OK, so we've sent the header... now send some content
echo "<html><title>Crack This Server</title><body>"

username=`who`
echo "<h1>Hello, $username</h1>"

echo "<h2>Users on `/bin/hostname`</h2>"
echo "</body></html>"

* bash shell cgi 參考 http://bashlib.sourceforge.net/
* 延伸閱讀:官網 http://httpd.apache.org/docs/2.0/howto/cgi.html