2011年1月24日 星期一

vsftpd結合mysql管理ftp使用者

文章來源
http://walile.info/blog/?p=107

模組請安裝pam_mysql.so
設定前說明:
其實這要綁定vsftpd是利用unix帳號做登入帳號管理,所以想利用mysql做管理的話(一般叫做建立vsftpd虛擬使用者),必需要透過linux中做認證管理的PAM(Pluggable Authentication Modules)做處理,這樣才能將vsftp+mysql+unix帳號綁定管理。
—————————————————————-開始了……
STEP1. 先下載vsftpd以及mysql先安裝好….(unbuntu 不用說吧?apt-get install 套件名稱)
STEP2. 設定/etc/vsftpd.conf 檔,將設定檔加上以下二個個設定:
guest_enable=YES
guest_name=使用者名稱,本例使用名稱為virtual (這個使用都必需是在unix account中建立的,之後要提供給使用者使用的)
STEP3. 設定mysql:
mysql中,先在mysql資料庫的user這個table中,建立一個專門讓pam認證使用登入的使用者,在本例中使用的名稱叫virtual,並且只能做select的動作,並且用localhost登入。
接下來,建立一個db叫做vsftpd,裡面建立了一個table叫做users,這個是要用來管理虛擬使用者的table。其中的table我建立了username和passwd二個欄位(注意!如果有使用加密,像mysql的password加密欄位,其password欄位請開超過60,否則會認證失敗)。記得要先在這個table中先建立一個使用者,等一下用來測試用。(ex. user,密碼暫設為pass)
STEP4. 開始來設定pam了….
/etc/pam.d/common-auth
這個檔案要加入以下這個
auth sufficient pam_mysql.so user=virtual passwd=pass host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=passwd crypt=2
/etc/pam.d/common-account
這個檔案要加入的
account sufficient pam_mysql.so user=virtual passwd=pass host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=passwd crypt=2
其中,在pam_mysql.so後面出現的user=virtual和passwd=pass是指在mysql中mysql資料庫user這個table中,剛剛有設定可以登入mysql的使用者帳號及密碼。另外,crypt=2代表密碼是用mysql password hash做為加密。(1為unix DES加密、2為mysql password hash加密、3為MD5加密、4為SHA)若要使用SHA加密,其pam_mysql.so的版本需要0.7以上版本才有支援(但是目前都為RC版本)
接下來,重啟服務:
/etc/init.d/vsftpd restart
這樣就完成了!
接下來,進一步想要讓虛擬帳號移到自己的資料夾中,只需要做接下來的動作:
在/etc/中建立一個資料夾為vsftpd_user_config,然後在/etc/vsftpd.conf中,加入二行:
user_config_dir=/etc/vsftpd_user_config
user_sub_token=$USER
然後,在vsftpd_user_config這個資料夾中,建立以虛擬使用者為名稱的檔案。ex. user。然後檔案內只需要加一行來指定登入後要移至的位置:
local_root=/home/user
再重啟服務就完成了!

使用者啟動php

 vi php5.conf

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
  
  #註解掉
 #   <IfModule mod_userdir.c>
 #       <Directory /home/*/public_html>
 #           php_admin_value engine Off
 #       </Directory>
 #   </IfModule>
   
   
   
   
</IfModule>
                                      
/etc/init.d/apache2 restart

加速php網頁

加速php網頁
資料來源 紀老師
http://163.23.89.100/~chi/blog/index.php?load=read&id=145


1.確定您的系統有 tmpfs 的功能
以前使用MDK架站時須加 devfs 這個套件,現在用 Ubunu 它自己就內建了
2.建好一個要連結的目錄,準備放虛擬磁碟
mkdir /tmp/ramdisk
3.vi /etc/fstab 加入下行
tmpfs           /tmp/ramdisk   tmpfs   size=32m,mode=1777 0 0
4.馬上掛上來用
mount    /tmp/ramdisk
5.vi /etc/php5/apache2/php.ini
session.save_path = /tmp/ramdisk
6.重新啟動 Web
/etc/init.d/apache2 restart

php 的 session 預設是檔案的形式存在
每次取用都須讀/寫硬碟,但它的用途大都用於驗證使用者
這種密集的 取用,實在不利硬碟的 使用 壽命
有些強調線上人數的更應注意這點

vsftp

vi /etc/vsftpd.conf

#write_enable=YES
write_enable=YES

不讓某帳號離開家目錄

vi /etc/vsftpd.conf
修改vsftpd.conf  只允許某些人登錄ftp
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list  //列在裡面的使用者可登錄,無法離開家目錄

vi /etc/vsftpd.chroot_list //列入允許帳號 
stu1
stu2

/etc/init.d/vsftpd restart

2011年1月22日 星期六

ubuntu10安裝mono2.8

install2.8 mono
vi install_mono-2.8.sh
----------------------
#!/bin/bash
TOPDIR=$(pwd)
BUILDDIR=$TOPDIR/build
DLDDIR=$TOPDIR/downloads
export PATH=/opt/mono-2.8.1/bin:$PATH
echo "updating existing system"
sudo apt-get update
sudo apt-get upgrade -y
echo "installing prerequisites"
sudo apt-get install -y build-essential libc6-dev g++ gcc libglib2.0-dev pkg-config subversion apache2 apache2-threaded-dev bison gettext autoconf automake libtool libpango1.0-dev libatk1.0-dev libgtk2.0-dev libtiff4-dev libgif-dev libglade2-dev
# temp hack. removed later.
sudo ln -s /opt/mono-2.8.1/lib/pkgconfig/mono-nunit.pc /usr/lib/pkgconfig/mono-nunit.pc
mkdir -p $BUILDDIR
echo
echo "downloading mono packages"
echo
cd $BUILDDIR
wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.8.1.tar.bz2
wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.8.tar.bz2
wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.1.tar.bz2
wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.8.1.tar.bz2
wget http://ftp.novell.com/pub/mono/sources/gtk-sharp212/gtk-sharp-2.12.10.tar.bz2
cd $BUILDDIR
bunzip2 -df xsp-2.8.1.tar.bz2
tar -xvf xsp-2.8.1.tar
bunzip2 -df mod_mono-2.8.tar.bz2
tar -xvf mod_mono-2.8.tar
bunzip2 -df mono-2.8.1.tar.bz2
tar -xvf mono-2.8.1.tar
bunzip2 -df libgdiplus-2.8.1.tar.bz2
tar -xvf libgdiplus-2.8.1.tar
bunzip2 -df gtk-sharp-2.12.10.tar.bz2
tar -xvf gtk-sharp-2.12.10.tar
echo
echo "building and installing mono packages"
echo
cd $BUILDDIR
cd libgdiplus-2.8.1
./configure --prefix=/opt/mono-2.8.1
make
sudo make install
cd $BUILDDIR
cd mono-2.8.1
./configure --prefix=/opt/mono-2.8.1
make
sudo make install
cd $BUILDDIR
cd gtk-sharp-2.12.10
./configure --prefix=/opt/mono-2.8.1
make
sudo make install
cd $BUILDDIR
cd xsp-2.8.1
./configure --prefix=/opt/mono-2.8.1
make
sudo make install
cd $BUILDDIR
cd mod_mono-2.8
./configure --prefix=/opt/mono-2.8.1
make
sudo make install
cd $BUILDDIR
#clean up
sudo rm /usr/lib/pkgconfig/mono-nunit.pc
echo
echo "done"
echo "If you want to use this version as the default on your platform (may not work for everything with this bare install), set your PATH to include /opt/mono-2.8.1/bin. Otherwise for Asp.NET, you can just update your virtual host config to use mod-mono-server2 from the install path directly."
-----------------------
chmod 755 install_mono-2.8.sh
./install_mono-2.8.sh





網頁格式

網頁格式設定檔
/etc/apache2/mods-available/dir.conf


sudo /etc/init.d/apache2 restart

ubuntu環境apache設定



安裝apache支援php
apt-get install apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi
--------------------------------------------

/etc/apache2/apache2.conf 這是apache 的全域設定

/etc/apache2/httpd.conf 內容為空,傳統的設定檔,為相容於其它版本的設定

/etc/apache2/ports.conf 監聽 port 的設定

/etc/apache2/mods-available/ 所有可用的模組( module)
/etc/apache2/mods-enabled/ 已啟用的模組 (可用指令 a2enmod、a2dismod 來啟用、停用模組)

/etc/apache2/sites-available/ 所有可用虛擬站台
/etc/apache2/sites-enabled/ 己啟用的虛擬站台 (指令 a2ensite、a2dissite 可啟用、停用虛擬站台)


-----------
啟動、停止、重啟 apache 等指令
/etc/init.d/apache2 start | stop | restart

apache 設定檔測試指令 (apache 設定檔的語法若寫錯,會使apache無法啟動,可用此指令測試)
apache2ctl configtest
/etc/rc.d/init.d/httpd start | stop | restart
---------------

開機就啟動的設定在
/etc/default/apache2
預設是開機啟動 (NO_START=0),不想開機啟動請改成 1

--------------------

apache2.conf
位置 /etc/apache2/apache2.conf
Listen 80 port的設定
在apache2.conf 有一行 Include /etc/apache2/ports.conf
vim /etc/apache2/ports.conf 加入你要監聽的port
預設的使用者與群組
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}


debian環境apache 啟動的身份與群組皆為 www-data


-----------------------------

目錄加密碼

有兩種方法,一設定在 apache 檔內。二目錄底下設定一個 .htaccess 檔。
a.編輯 apache 設定檔
vim /etc/apache2/apache2.conf
例如,我們有兩個目錄要加密碼保護,分別為 /mydata1和 /mytada2
apache 設定檔內加入
#受密碼保護的目錄
<Directory "/mydata1">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
</Directory>
<Directory "/mydata2">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
</Directory>

-----------------------------------
檢查 apache2.conf 設定檔內是否還有同一目錄的設定,
若有請把它加#號,否則密碼保護無法成功。
例如: /mydata1 是對應到 /var/www/84/mydata1/wwwroot 這目錄,
但這目錄也有針對它的設定必須將其取消
否則密碼保護不會設定成功。
#<Directory "/var/www/84/mydata1/wwwroot">
#    Options None
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

設完之後重啟 apache
/etc/init.d/apache2 restart

------------------

建密碼檔
建一密碼檔名為apache.passwd 存放在 /home/backup
htpasswd -c /home/backup/apache.passwd user1
接著輸入密碼 xxxxxxxx
密碼檔內建第二個使用者 (不加 -c 參數了)
htpasswd /home/backup/apache.passwd user2

註:user1和user2為你自訂的使用者帳號,xxxxx為你自訂的密碼

改變檔案屬性
chown www /home/backup/apache.passwd
chgrp users /home/backup/apache.passwd


在要被保護的目錄下建.htaccess檔
先進到你要密碼保護的目錄底下
cd /var/www/84/mydata1/wwwroot/
vim .htaccess
=====加入以下內容==================
AuthName     "This is Private directory"
Authtype     Basic
AuthUserFile 
/home/backup/apache.passwd
require user 
user1 user2
#require:後面接可以使用的帳號。
#如果要讓該密碼檔內的使用者都能夠登入,就改成『require valid-user』即可

===================================
改變檔案屬性
chown www .htaccess
chgrp users .htaccess
然後再把此檔copy到你要密碼保護的 另一個目錄底下去
cp .htaccess /usr/share/mydata2/site