Posts Tagged ‘ Linux

常用的 .bashrc 設定

以下是我常用的 .bashrc 設定:

#格式化 ls 的顏色
alias ls='ls -F --color'
#關閉喇叭的 "BEEP" 聲
setterm -bfreq
#用上/下鍵搜尋執行過的指令
bind '"\x1b\x5b\x41":history-search-backward'
bind '"\x1b\x5b\x42":history-search-forward'
#其它
alias h='history 25'
alias vi='vim'
#設定提示字元的顏色
PS1="\e[0;32m[\u@\h \W]$ \e[m"

在 Redhat Linux 9.0 驅動華碩 P4P800 的網路卡

第一次安裝 Redhat Linux 9.0 就遇到華碩 P4P800 的網路卡 (3COM 3C940) 無法驅動的問題,就算裝了華碩網站下載的驅動程式也不行,反覆試了好久,也重裝了 Linux 幾次,終於解決了問題…但不確定是不是正確的做法。
Read more

如何將伺服器上「查無此人」的郵件改由特定的用戶接收

這是一個蠻實用的技巧,當外面的用戶將信件寄到伺服器時,如果寫錯了收件者,或收信的用戶不存在,該信件就會被退回,寄件者會收到一封「查無此人」的信件。

以下這個技巧,就是為了把伺服器上「查無此人」的信件,改由特定的「用戶」或其它的「電子信箱」接收,修改步驟:

1. 編輯 /etc/mail/sendmail.mc,搜尋有關「LUSER_RELAY」的設定 (如果沒有搜尋到,也可以新增下面的設定),改成:

define(`LUSER_RELAY',`local:nodoby')dnl

(表示將「查無此人」的信件由本機上的「nobody」用戶接收)

或者改成:

define(`LUSER_RELAY',`smtp:[email protected]')dnl

(表示將「查無此人」的信件轉寄給「[email protected]」這個電子信箱)

2. 重新製作 /etc/sendmail.cf,並重新啟動 sendmail:

m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

這樣就完成了。

[轉載]Linux 的搜尋技巧

轉載自: Sam Tang @ Blog


在檔案內搜尋指定文字,search_key 是搜尋字串,/path/to/filename 是檔案名稱:

grep search_key /path/to/filename

功能同上,但不分大小寫:

grep -i search_key /path/to/filename

搜尋檔案:在指定目錄中搜尋檔案,以下是在 /var/www/ 目錄下搜尋 upload.php 的檔案:

find /var/www/ -name upload.php

功能同上,但目標不是檔案,而是目錄:

find /var/www/ -name uploads -type d

還有更多有用的功能,以上只列出較常用的用法。

安裝 JSP 環境 - tomcat *

tomcat 可讓 Linux 支援 JSP 的環境,系統必須先安裝 Sun 的 J2SDK 之後,再安裝 tomcat。而 tomcat 已是一個可獨立執行的網頁伺服器,也可以跟 apache 相結合。

Read more

tar 指令的常用語法

常用參數

  • -c 打包檔案
  • -x 解開壓縮檔
  • -t 檢視壓縮檔的內容
  • -z 使用 gzip 壓縮
  • -v 顯示執行過程
  • -P 使用絕對路徑
  • -f 指定壓縮檔的檔案名稱。此參數的後面要接檔案名稱,因此要注意參數的順序 (通常是把 f 參數寫在最後一個,或是與其它參數分開使用)

常用語法

  • 建立壓縮檔:
    tar -czvf 壓縮檔名稱.tgz 來源檔案

    來源檔案 壓縮後,打包成一個名稱為 壓縮檔名稱.tgz 的檔案,來源檔案 可以是多個檔案或目錄。
    如果有多個 來源檔案 時,以空白字元分隔不同檔案名稱:

    tar -czvf 檔案名稱.tgz 來源檔案1 來源檔案2 ... 來源檔案n
  • 檢視壓縮檔的內容:
    tar -tzvf 壓縮檔名稱.tgz
  • 解開壓縮檔到目前的目錄:
    tar -xzvf 壓縮檔名稱.tgz
  • 複製目錄:
    tar -cvf - 來源目錄 | tar -xvf -

    來源目錄 下的所有檔案及子目錄複製到目前的目錄,這樣做的好處是可以保留原來的檔案屬性

ProFTP 的時區設定

我的伺服器的時區設為「Asia/Taipei」(/etc/sysconfig/clock),但我用 ftp 登入伺服器時,裡面所顯示的時間,卻慢了 8 個小時,今天找了一下原因,原來是 ProFTP 的問題。ProFTP 預設使用 GMT 時間,把這個設定關掉即可。

請編輯「/etc/proftpd.conf」,加入

TimesGMT off

再重新啟動 ProFTP 即可。

dig、host 與 nslookup 指令的查詢語法

在 Linux 下執行 nslookup 指令都會出現下列訊息:

Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.

告訴你使用 dig 或 host 指令來取代 nslookup,但可惜在 Windows 系統並沒有 dig 與 host 指令。

Read more

將 Samba 昇級成 3.0.13

為什麼要將 Samba 昇級成 3.0.13 呢? 唉…還不是為了 Unicode。原本的 2.2.7 版本,我再怎麼設定,都無法顯示 Unicode 字元。所以本來在 Windows 裡顯示得好好的 Unicode 檔名,放到 Samba 裡就破功了! 我想,這個問題應該是很難讓人接受的吧?!

而最後結論就是,昇級成 3.0.13 就搞定了。

Read more

安裝 Samba 伺服器 *

Samba 這個套件的功用,可以讓你把 Linux 伺服器變成 Windows 裡的「網路上的芳鄰」中的一台電腦,提供檔案伺服器的服務,即使在沒有網域管理(Domain)的區域網路環境中,也可以提供比 Windows 網路上的芳鄰更多的權限控管。

本教學只介紹兩種常用的配置方式:

  • 開放式的設定
  • 需要身份驗證的設定
  • 安裝好 Samba 套件之後,就可以開始進行設定了。

    安裝 Samba

  • 使用 Apt 安裝 Samba 套件:
  • apt-get install samba
  • 啟用 Samba 服務:
  • service smb start
    爾後如果有修改 Samba 的設定,只要輸入下列指令重新載入即可:
    service smb reload

    開放式的設定

    開放式的意思,就是不用任何身份驗證,就可以存取提供 Samba 服務的伺服器。以下的範例,是設定區域網路裡的任何用戶都可存取伺服器,並分享 [/tmp] 裡的檔案:

  • 編輯 /etc/samba/smb.conf,設定如下:
  • [global]
    #欲加入的群組名稱
    workgroup = WORKGROUP
    #在「網路上的芳鄰」顯示的電腦名稱,如果不設定,就會以目前的 HostName 去掉網域名稱顯示。
    netbios name = FileServer
    #伺服器的註解
    server string = Samba 檔案伺服器
    #設定哪些電腦可以存取伺服器(以空白隔開)
    hosts allow = 192.168.1.0/255.255.255.0 127.0.0.1
    #顯示繁體中文
    client code page = 950
    #身份驗證的方式
    security = share
    
    #分享 [/tmp]
    [tmp]
      path = /tmp
      comment = 檔案暫存區
      public = yes
      writable = yes
      create mode = 0666
      directory mode = 0777
  • 重新啟動 Samba 服務:
  • service smb restart

    需要身份驗證的設定

    如果你希望用戶要連到伺服器時,必須先輸入帳號、密碼才可以進入,並且可以存取自己的家目錄及 [/tmp],請依照下列設定:

  • 編輯 /etc/samba/smb.conf,設定如下:
  • [global]
    #欲加入的群組名稱
    workgroup = WORKGROUP
    #在「網路上的芳鄰」顯示的電腦名稱,如果不設定,就會以目前的 HostName 去掉網域名稱顯示。
    netbios name = FileServer
    #伺服器的註解
    server string = Samba 檔案伺服器
    #設定哪些電腦可以存取伺服器(以空白隔開)
    hosts allow = 192.168.1.0/255.255.255.0 127.0.0.1
    #顯示繁體中文
    client code page = 950
    #身份驗證的方式
    security = user
    #將密碼加密傳輸
    encrypt passwords = yes
    #指定密碼檔位置
    smb passwd file = /etc/samba/smbpasswd
    
    #讓用戶可以存取自己的家目錄
    [homes]
      comment = 個人資料夾
      public = no
      browseable = no
      valid users = %S
      writable = yes
      create mode = 0600
      directory mode = 0700
    
    #分享 [/tmp]
    [tmp]
      path = /tmp
      comment = 檔案暫存區
      public = no
      writable = yes
      create mode = 0666
      directory mode = 0777
  • 建立 Samba 的密碼檔,並轉換用戶到這個密碼檔:
  • cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
    chmod 600 /etc/samba/smbpasswd
    chown root.root /etc/samba/smbpasswd
  • 重新啟動 Samba 服務:
  • service smb restart
  • 你必須要再設定用戶的密碼才可以存取:
  • smbpasswd UserName

    其它有用的參數

    以下介紹其它有用的參數,這些參數必須放在宣告的分享資源的區段下:

  • public = yes|no
  • 設定針對 Guest 是否「顯示」該分享項目。
  • browseable = yes|no
  • 設定是否「顯示」分享項目。
  • valid users = 用戶列表
  • 允許「檢視」該分享項目的用戶,可輸入「用戶名稱」或「@群組名稱」,如有多個項目,請用「,」分隔。
  • invalid users = 用戶列表
  • 不允許「檢視」該分享項目的用戶,可輸入「用戶名稱」或「@群組名稱」,如有多個項目,請用「,」分隔。
  • read only = yes|no
  • 是否唯讀。
  • writable = yes|no
  • 是否可以寫入。
  • write list = 用戶列表
  • 允許「寫入」該分享項目的用戶,可輸入「用戶名稱」或「@群組名稱」,如有多個項目,請用「,」分隔。
  • create mode = 權限
  • 建立檔案時預設的權限。
  • directory mode = 權限
  • 建立目錄時預設的權限。
  • force user = 用戶名稱
  • 建立檔案或目錄時預設的用戶。
  • force group = 群組名稱
  • 建立檔案或目錄時預設的群組。

    Samba 的變數

  • %S: 取代目前的「資源名稱」,所謂的「資源名稱」就是在 [ ] 裡面的內容。
  • ex: valid users = %S
  • %U: 代表目前登入的使用者的使用者名稱。
  • %m: 代表 Client 端的 NetBIOS 名稱。
  • %g: 代表登入的使用者的群組名稱。
  • %M: 代表 Client 端的 Internet 主機名稱,就是 HOSTNAME。
  • %L: 代表 SAMBA 主機的 NetBIOS 名稱。
  • %h: 代表目前這部 SAMBA 主機的 HOSTNAME。
  • %H: 代表使用者的家目錄。
  • %I: 代表 Client 端的 IP。
  • %T: 代表目前的日期與時間。
  • 新增 Samba 用戶

    關於 Samba 上的用戶帳號,有一些規則要說明:

  • Samba 上的用戶帳號必須是已存在於 Linux 系統的帳號。
  • Linux 系統與 Samba 用戶的密碼是不同的,它們有各自的密碼檔。
  • Samba 的密碼檔位於 /etc/samba/smbpasswd。
  • 因此,如果你要新增 Samba 用戶,你就必須先在 Linux 系統增加一個本機用戶,新增本機用戶之後,再輸入下列指令將用戶的帳號及密碼加入至 Samba 的密碼檔:

    smbpasswd -a UserName

    以後如果只是要變更該用戶的密碼,只要輸入:

    smbpasswd UserName

    用戶自行變更密碼

    原本 Samba 有提供一個 Swat 套件,就是 Samba 的網頁管理介面,不過,我覺得似乎不太夠用(給管理者用還可以)。如果我希望用戶可以自行變更 Linux 系統的密碼,並同步變更 Samba 的密碼,那就要試試 ChangePassword 套件:

  • 從本站下載 ChangePassword 套件至 [/tmp]
  • cd /tmp
    wget http://www.vixual.net/download/source/ChangePassword/changepassword-0.9.tar.gz
    tar -xzvf changepassword-0.9.tar.gz
    cd changepassword-0.9
    ./configure --enable-cgidir=/var/www/cgi-bin --enable-smbpasswd=/etc/samba/smbpasswd --disable-squidpasswd
    請注意,上面(第 5 行)的 “/var/www/cgi-bin” 請改為你的網站的 cgi-bin 路徑。
  • 然後繼續下列步驟:
  • make
    make install

    這樣就安裝完成了,以後你就可以到 “http://host.example.com/cgi-bin/changepassword.cgi” 同步變更 Linux 系統及 Samba 的密碼。

    網頁管理介面

    這個套件(Swat)其實不是那麼必要(尤其是有了上面的 ChangePassword 套件之後),但仍然列出安裝步驟給大家參考:

  • 安裝 Samba-Swat 套件:
  • apt-get install samba-swat
  • 編輯 /etc/xinetd.d/swat,搜尋:
  • disable = yes
    改成:
    disable = no
    繼續搜尋:
    only_from = 127.0.0.1
    改成允許連線的位址:
    only_from = 192.168.1.0/24
  • 重新啟動 Xinetd:
  • service xinetd restart
  • 從瀏覽器輸入連線位址:
  • http://host.example.com:901/

    參考網頁

  • Samba: User and Group Based Controls
  • Samba Documentation
  • 鳥哥的 Linux 私房菜
  • 網管專區
  • Samba 設定
  • return top