So Tired !_! 逆水行舟, 不进则退!

2Aug/18

Ubuntu 18.04修改IP地址

Posted by Nick Xu

注:配置/etc/network/interfaces已无用

root@ubuntu:~# vim /etc/netplan/50-cloud-init.yaml

network:
ethernets:
eth0:
addresses: [192.168.15.72/20]
gateway4: 192.168.12.2
nameservers:
addresses: [119.29.29.29, 223.5.5.5]
search: []
optional: true
version: 2

执行命令 使配置生效

root@ubuntu:~# netplan apply



子网掩码以32位的2进制存在,/24表示前24位是网络号,后8位是主机号,网络号相同的则表示处于同一网段中,且子网掩码不能单独存在,它必须结合IP地址一起使用。

255.255.255.0 换成二进制就是11111111.11111111.11111111.00000000 一共24个1
8+8+8+0=24
  • 1
  • 2

举例:

255.255.255.192 换成二进制就是11111111.11111111.11111111.11000000 一共26个1
8+8+8+2=26
  • 1
  • 2
 

 

Tagged as: Comments Off
17Jan/17

Ubuntu解决RTNETLINK answers: File exists

Posted by Nick Xu

出现这种问题有两种原因

1.有两个网关时候

在ip地址配置中有两个网关

    auto eth0
    iface eth0 inet static
    address 192.168.5.21
    netmask 255.255.2550
    gateway 192.168.5.1

    # VM traffic interface
    auto eth1
    iface eth1 inet static
    address 192.168.5.22
    netmask 255.255.255.0
    gateway 192.168.5.1

eth0eth1有不同ip但是有都配置的网关,这时候一个启动后,另一个启动失败

RTNETLINK answers: File exists
Failed to bring up eth2.

如果你修改后,还是出现这种情况,就要对eth0eth1进行下刷新

    ip addr flush dev eth0
    ip addre flush dev eth1
    ifdown eth0 && ifup eth0 && ifdown eth1 && ifup eth1

2.当删除桥接或者其他,把网络改正确,还是出现这种问题

#确保网络配置已经正确的情况下
ip addr flush dev eth0
#重启网络配置

ip addr flush also dumps all the deleted addresses in the format described in the previous subsection
这个命令刷新已经删除的先前已经选择的地址格式

18May/16

How To Mount a Remote Directory With SSHFS on a Linux

Posted by Nick Xu

How can I mount a remote directory with ssh on a Linux bases system? How do I use SSHFS to mount remote file systems over SSH on a Ubuntu or Debian/RHEL/CentOS/Arch Linux system?

SSH is a secure protocol and you can use it to mount a directory on a remote server or local laptop with the help of the SSHF service. With SSHFS you can mount remote server file system to your local development workstation/laptop powered by Linux.

More on SSHFS

sshfs is a filesystem based on the SSH file transfer protocol. It is used on a client system i.e. you need to install sshfs package on your local computer/laptop powered by CentOS/RHEL/Ubuntu/Debian/Arch Linux. No need to install anything on server (server1.cyberciti.biz). You only need an openssh server installed on server side. Our sample setup:

Fig.01: Our sample setup

Fig.01: Our sample setup

Installing SSHFS on a Ubuntu/Debian/Mint Linux

Type the following apt-get command:

sudo apt-get install sshfs

Sample outputs:

[sudo] password for nixcraft:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  sshfs
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 41.7 kB of archives.
After this operation, 138 kB of additional disk space will be used.
Get:1 http://mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/ trusty/main sshfs amd64 2.5-1ubuntu1 [41.7 kB]
Fetched 41.7 kB in 1s (27.8 kB/s)
Selecting previously unselected package sshfs.
(Reading database ... 247545 files and directories currently installed.)
Preparing to unpack .../sshfs_2.5-1ubuntu1_amd64.deb ...
Unpacking sshfs (2.5-1ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up sshfs (2.5-1ubuntu1) ...

Installing SSHFS on an Arch Linux

Type the following command:

sudo pacman -S sshfs fuse

Installing SSHFS on a RHEL (Red Hat)/CentOS Linux

First, turn on EPEL repo and then type the following yum command to install FUSE-Filesystem to access remote filesystems via SSH on a CentOS/RHEL:

sudo yum install fuse-sshfs

Sample outputs:

Loaded plugins: auto-update-debuginfo, protectbase, rhnplugin, security
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
0 packages excluded due to repository protections
Resolving Dependencies
--> Running transaction check
---> Package fuse-sshfs.x86_64 0:2.4-1.el6 will be installed
--> Processing Dependency: fuse >= 2.2 for package: fuse-sshfs-2.4-1.el6.x86_64
--> Running transaction check
---> Package fuse.x86_64 0:2.8.3-4.el6 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
=======================================================================================================================
 Package                   Arch                  Version                     Repository                           Size
=======================================================================================================================
Installing:
 fuse-sshfs                x86_64                2.4-1.el6                   epel                                 52 k
Installing for dependencies:
 fuse                      x86_64                2.8.3-4.el6                 rhel-x86_64-server-6                 71 k
 
Transaction Summary
=======================================================================================================================
Install       2 Package(s)
 
Total download size: 123 k
Installed size: 115 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): fuse-2.8.3-4.el6.x86_64.rpm                                                              |  71 kB     00:00
(2/2): fuse-sshfs-2.4-1.el6.x86_64.rpm                                                          |  52 kB     00:00
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                  173 kB/s | 123 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : fuse-2.8.3-4.el6.x86_64                                                                             1/2
  Installing : fuse-sshfs-2.4-1.el6.x86_64                                                                         2/2
  Verifying  : fuse-sshfs-2.4-1.el6.x86_64                                                                         1/2
  Verifying  : fuse-2.8.3-4.el6.x86_64                                                                             2/2
 
Installed:
  fuse-sshfs.x86_64 0:2.4-1.el6
 
Dependency Installed:
  fuse.x86_64 0:2.8.3-4.el6
 
Complete!

How do I mount the remote file system?

The syntax is

sshfs user@server /path/to/mountpoint
sshfs user@server /path/to/mountpoint options

First, create a directory using mkdir command:

sudo mkdir /mnt/server1

I’m going to mount file system using root user and you need to type root password when prompted:

sudo sshfs root@192.168.1.142:/ /mnt/server1/
 
##  OR use ssh key based login ##
sudo sshfs -o IdentityFile=~/.ssh/keyfile /mnt/server1/

Sample outputs:

Password for root@freebsd10:

Verify it:

sudo df -h

Sample outputs:

Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/wks05-root  487G  114G  350G  25% /
none                    4.1k     0  4.1k   0% /sys/fs/cgroup
udev                     17G  4.1k   17G   1% /dev
tmpfs                   3.4G  1.9M  3.4G   1% /run
none                    5.3M     0  5.3M   0% /run/lock
none                     17G  160k   17G   1% /run/shm
none                    105M   50k  105M   1% /run/user
/dev/sda1               239M   89M  138M  40% /boot
root@192.168.1.142:/     20G   12G  6.8G  64% /mnt/server1

To access and/or to see the remote file system, run:

sudo -s
cd /mnt/server1
ls -l

Sample ouputs:

Fig. 02: sshfs in action

Fig. 02: sshfs in action

Dealing with “Permission denied” error and recommended procedure for mounting the remote directory

If you get an error that read as cannot access server1: Permission denied, add yourself to a group called fuse:

$ sudo gpasswd -a "$USER" fuse
Adding user nixcraft to group fuse

Next, create a mount point inside your own home directory:

$ mkdir $HOME/server1
$ ls -ld !$
ls -ld $HOME/server1
drwxrwxr-x 2 nixcraft nixcraft 4096 Mar  8 04:34 /home/nixcraft/server1

To mount the remote file system, enter:

sshfs -o idmap=user  root@192.168.1.142:/ $HOME/server1
df
ls -l $HOME/server1
Fig.03: Using sshfs without root access on local laptop/desktop

Fig.03: Using sshfs without root access on local laptop/desktop

How do I unmount the remote file system?

The syntax is:

sudo umount /mnt/server1
 
## OR ##
fusermount -u /mnt/server1

Verify it:

df -h

How can I permanently mount the remote file system by updating /etc/fstab?

Edit the /etc/fstab file, enter:

sudo vi /etc/fstat

The syntax is:

userNameHere@FQDN_OR_IP_HERE:/path/to/source/  /local/mountdir/  fuse.sshfs  defaults,_netdev  0  0

Examples

Add the following entry at the bottom of the file:

sshfs#root@192.168.1.142:/ /mnt/server1

Another example with additional options:

sshfs#$root@192.168.1.142:/ /mnt/server1 fuse defaults,idmap=user,allow_other,reconnect,_netdev,users,IdentityFile=/path/to/.ssh/keyfile 0 0

Recommend option for on-demand mounting if you are using systemd:

vivek@server1.cyberciti.biz:/project/www/ /mnt/server1  fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/vivek/.ssh/id_rsa,allow_other,reconnect 0 0

Save and close the file. Where,

  1. root@192.168.1.142 : Remote server with sshd
  2. fuse : File system type.
  3. idmap=user : Only translate UID of connecting user.
  4. allow_other : Allow access to other users.
  5. reconnect : Reconnect to server.
  6. _netdev : The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system).
  7. users : Allow every user to mount and unmount the filesystem.
  8. IdentityFile=/path/to/.ssh/keyfile – SSH key file.
11Aug/15

install salt on ubuntu/debain

Posted by Nick Xu

WHEEZY (STABLE)

For wheezy, the following line is needed in either /etc/apt/sources.list or a file in /etc/apt/sources.list.d:

deb http://debian.saltstack.com/debian wheezy-saltstack main

IMPORT THE REPOSITORY KEY.

You will need to import the key used for signing.

wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -

UPDATE THE PACKAGE DATABASE

apt-get update

INSTALL PACKAGES

Install the Salt master, minion, or syndic from the repository with the apt-get command. These examples each install one daemon, but more than one package name may be given at a time:

apt-get install salt-master
apt-get install salt-minion
apt-get install salt-syndic

salt -L 'a,b,c' state.sls nginx

pillar

other link

配置主服务器和从服务器

主服务器和从服务器指的是控制器和被控制的服务器,这个主服务器本质上是中央协调中心对所有的从服务器,从服务器类似client/server配置,这里的主服务器是server,从服务器是client.

从服务器配置

在本文中,我配置salt-master和salt-minion 命令在同一台机器上,假如你在配置多台服务器,挑选其中一个为master,剩下的成为minions.根据你的需要来配置master和minion,接下来的我会解释如何配置一台服务器为master和另外的机器为minions.

Salt的配置文件在/etc/salt目录下,默认,这些文件被命名为minion和master,假如你在同一台机器安装了salt-master和salt-minion,你会看到不同的两个文件,master和minion

首先,你需要告诉你的minion怎样找到并连接你的Master服务器。即使你运行minion和Master在同一台服务器上,你仍然要告诉minion你的master在哪儿。

1,使用你最喜欢的文本编辑器,打开minion配置文件

2,取消注释行#master,移除# 替换为你的Master服务器的IP地址,应该是这样:master:你的master IP地址。(假如以上操作,在同一台服务器,此时增加 127.0.0.1)

3,命名一个昵称给你的服务器,查找到#id行,再一次移除#号,增加一个nameid:1st-salt-minion,(这个名字可以是任何字符串的)

4,为了重新加载新的配置,你需要使用sudo 重启你的salt-minion进程,-d 选项,启动salt-minion为一个后台进程,这样子的话,你可以访问您的命令行发布更多的命令。

认证 Minion Keys

现在你的minion 已经知道到master在哪里,接下来让他们进行彼此验证,Salt使用公共密钥加密来确保master和minions的安全通信。你需要通过在master端验证minion的证书来明确master和minion之间的是授信的。

认证minion的证书使用salt-key命令,Salt自动生成这些证书,你需要做的仅仅是认证你需要的证书。

1,输入salt-key -L 列出所以没有认证,认证过,拒绝认证的证书

2,你应该可以看到一个没有认证的证书1st-Salt-Minion(或者你自己选择的minion)

3,认证这个证书使用 sudo salt-key -a 1st-salt-minion

通信测试

现在你已经有了一台 salt-master和一台salt-minion,并且master和minion已经相互信任,你可以从master 使用一个test ping的命令来测试他们之间的连接。假如你的master能够连接到minion,将会返回一个"return".输入 salt '*' test.ping,它应该有如下输出:

>{1st-Salt-Minion: True}

注意,通配符 *代表所有minion,因为这里你只有一台服务器,算是一个简单的模拟测试(要比salt '1st-salt-Minion' test ping 快多了)假如你收到“True”,证明你已经成功安装和配置完成salt stack。

如果没有的话,你也许需要重启你的master和minion 不带-d参数,这样子的话,你能够获取到更多输出信息,更多的参考资料,请查看Salt 官方文档http://docs.saltstack.org/en/latest/topics/configuration.html

Salt的语法结构,包括命令,目标和动作,举个例子,* 指任何主机(* 是一个通配符),test.ping 是动作。

你可以在已经链接和信任的主机上执行任何可用的命令,关键提示:这些需要执行的命令在目标主机上必须可用,例如,如下命令:

sudo salt '*' cmd.run "service apache2 restart"

这个命令只会在已经安装了apach2e web服务器的主机上执行,另外,你也可以使用这样的命令:

sudo salt '*' cmd.run "service httpd restart"

另外一个例子,也许你想要查询你的主机已经运行了多长时间,你可以这样子做:

sudo salt '*' cmd.run "uptime"

在举另外一个例子,假如你的Apache Bench(译者注:一个apche 开源压力测试工具)安装在master上而没有安装在minion上,下面的命令:

sudo salt '*' cmd.run "ab -n 10 -c 2 http://www.google.com:80/index.html"

如果你尝试在minion上执行,你将会失败,因为Apache Bench 没有安装在minion上。

3Dec/13

Ubuntu下使用Pure-ftpd 透過 MySQL管理虛擬FTP用戶帳號

Posted by Nick Xu

應用趨勢
Pure-ftpd是一個很方便管理的FTP伺服器
我們利用它來提供基本的FTP服務是很容易的
在 Ubuntu 下它有幾個安裝類型選擇
(他們間彼此互斥..只能裝一類)

1.原始而單純的用法(和系統的實體帳號有關)
這種用法您只要安裝 pure-ftpd 就好了
sudo apt-get install pure-ftpd

2.配合 MySQL資料庫 作為認證的用法(和系統實體帳號無關)
這種用法您要安裝 pure-ftpd-mysql
sudo apt-get install pure-ftpd-mysql

3.配合 PostgreSQL資料庫 作為認證的用法(和系統實體帳號無關)
這種用法您要安裝 pure-ftpd-postgresql
sudo apt-get install pure-ftpd-postgresql

4.配合 LDAP資料庫 作為認證的用法(和系統實體帳號無關)
這種用法您要安裝 pure-ftpd-ldap
sudo apt-get install pure-ftpd-ldap

其實 proftpd 也有類似的作法..它可以提供的配合類型
還要多2種
proftpd-mod-ldap proftpd-mod-pgsql
proftpd-mod-mysql proftpd-mod-sqlite
proftpd-mod-odbc

OK 瞭解 FTP 伺服器的應用趨勢後
我們再回過神來專注在 我們今天的主題之內
利用 pure-ftpd-mysql 去建立一個具有虛擬帳號管理功能的FTP伺服器

虛擬帳號

先談談虛擬帳號,為何不要用真實帳號
在使用 Linux 主機時,有人要傳送檔案到伺服器上
一般我們會開立一個實體帳號,讓這個使用者使用
而這樣的作法,通常讓這個帳號可以登入到主機內,
而這些帳號,通常也是駭客下手的目標之一
(一般的使用者注重安全的程度通常遠低於系統管理員)

當然的,他也能在上面執行一些程式或作其他的事。
一般Linux主機是難以被攻擊的,但是如果攻擊者
有這樣的權限,可以合法的進到主機內時,他要取得
最高管理員的權限只是時間的問題了。
所以一般的管理員不輕易的將實體帳號開設出去。
因此建立一個只讓虛擬帳號可以上傳下載的 FTP 伺服器
變的更能符合資訊安全的須求。

OK!瞭解了這些背景,我們就向實作的階段出發吧!

實作過程

一、基本設定

1.Ubuntu 下安裝 pure-ftpd-mysql
打開終端機或連線到您的 Ubuntu 主機
輸入下列指令
sudo apt-get install pure-ftpd-mysql
它就會將必要的相關套件一併裝上

2.設定安全性
PS:接下的操作您只要複製英文指令到終端機內執行即可
sudo -i
先變為 root

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
意思是建立一個ChrootEveryone的檔案內容為yes
就是限制 FTP 登入後的帳號只能在自己的家目錄內活動

echo "no" > /etc/pure-ftpd/conf/PAMAuthentication
不由PAM認證,僅單純的透過MySQL去認證
如果這裡改為"yes",則實體帳號者也能登入。

echo "no" > /etc/pure-ftpd/conf/UnixAuthentication
不由系統認證,僅單純的透過MySQL去認證

echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
不讓匿名用戶登入

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
登入後沒有家目錄會自行建立(似乎只能用在實體帳號上)

上述配置後請重新啟動
/usr/bin/service pure-ftpd-mysql restart

上述綠色部分為您要在終端機輸入的指令
到目前為止是沒有任何人可以登入FTP的,
因為我們連資料庫的連線都還沒設定,PureFTP根本還連不到資料庫,
更不用說可以取到資料表的帳號資料去認證了。

二、資料庫設定與配置

資料庫連線的配置檔在/etc/pure-ftpd/db/mysql.conf 內
(檔案內所有前面有#號的行表示是註解)
所以這個檔案雖然內容很多,但其實只有下面幾行才是被使用到的設定:
下面是一個 Ubuntu 系統安裝 pure-ftpd-mysql 後
在/etc/pure-ftpd/db/mysql.conf 內資料庫連線配置檔的預設值。

MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser root
MYSQLPassword rootpw
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"

以下我們逐行解說其設定內容:
MYSQLSocket /var/run/mysqld/mysqld.sock
這行說明 MySQL 接口的位置,除非您是自行編譯的..否則不須改變它。

MYSQLUser root
這行是指連線到資料庫的帳號,我們可以依照採用root帳號即可。

MYSQLPassword rootpw
這行是指連線到資料庫帳號所用的密碼,您要配合您的資料庫密碼作改變
這是基本用法下..您唯一要變更的地方。

MYSQLDatabase pureftpd
這行是指連線到資料庫後,要使用的資料庫名稱,如果您依本文操作您也不須作改變。

MYSQLCrypt cleartext
這行是指虛擬用戶的密碼,要使用何者編碼方式,如果您依本文操作您也不須作改變。
可用的設定值有下面幾個
cleartext 明碼(不額外編碼) md5 使用MD5編碼加密 crypt 用DES編碼加密
password MySQL的編碼加密
any 指可以視資料庫欄位定義而自動擇用md5、crypt或 password三種編碼方式。

接下4行設定都是資料庫語法。
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
上述表示當虛擬帳號符合User欄位時,選取登入者的密碼欄。

MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
上述表示當虛擬帳號符合User欄位時,選取登入者的使用者ID。
當使用者登入後儲存檔案都會有這種使用者ID、為了安全性起見
您要避免用系統使用的ID。

MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
上述表示當虛擬帳號符合User欄位時,選取登入者的群組ID。

MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
上述表示當虛擬帳號符合User欄位時,選取登入者的家目錄(檔案存取目錄)。
這意味著我們可以在資料表的 Dir 欄位內,任意設定使用者的檔案存取目錄。
好夢幻的功能,真令人激賞。

上述的用法都只用到了"\L",而"\L"表示通過認證後的使用者帳號。
除了"\L"外,pure-ftpd 還提供了 \I、\P、\R、\D 四個符號。
分別表示如下:
\I (目的)虛擬帳號連線的IP
\P (目的)虛擬帳號連線通訊埠(21埠)
\R (來源)虛擬帳號從那個IP連線過來的
\D (來源)虛擬帳號從那個IP連線過來的,同上,但以數位表示。

依上述所言,我們認證的資料庫 pureftpd 內,
須有一個資料表叫users,資料表內
至少須具有五個欄位 User,Password,Uid,Gid,Dir
這樣才能運作起來,下面為整理出的建表語法。

CREATE TABLE `users` (
`User` varchar(16) NOT NULL DEFAULT '',
`Password` varchar(64) NOT NULL DEFAULT '',
`Uid` varchar(11) NOT NULL DEFAULT '-1',
`Gid` varchar(11) NOT NULL DEFAULT '-1',
`Dir` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`User`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

搞清楚這些先前知識後,接著我們要開始來建立資料庫及資料表了

[操作指令]
mysql -u root -p
Enter password: (輸入資料庫root密碼後按確定)

在大於提示符下輸入
CREATE DATABASE pureftpd;[按確定]
USE pureftpd;[按確定]

將建表語法複製貼上後再按確定

回顧這部分我們僅須做3個動作

1.改設定檔內的資料庫密碼
2.登入到資料庫內建立一個pureftpd資料庫
3.建立資料表

這三部分都完成了,您可以重新啟動pureftp伺服器
service pure-ftpd-mysql restart

接著您可以簡便的利用phpMyAdmin去建立帳號
再利用建立的帳號測試登入看看。

If you want to use uid and gid of www-data, it doesn't work. Because by fault in Debian the minimum uid is 1000. You will see the following error.

Client side:

$ ftp example.com
Connected to example.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 14:28. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (example.com:haoyu): site.example.com
331 User site.example.com OK. Password required
Password:
530 Sorry, but I can't trust you
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
Server side in /var/log/ftp.log:

Sep 17 14:46:25 sd-xxxxx pure-ftpd: (?@defxx-x-xx-xxx-xx-xxx.fbx.proxad.net) [INFO] New connection from defxx-x-xx-xxx-xx-xxx.fbx.proxad.net
Sep 17 14:46:32 sd-xxxxx pure-ftpd: (?@defxx-x-xx-xxx-xx-xxx.fbx.proxad.net) [WARNING] Can't login as [site.example.com]: account disabled
The solution is to modify /etc/pure-ftpd/conf/MinUID value from 1000 to 33. I suggest to disable PAM authentication (system user login) by write “no” in file /etc/pure-ftpd/conf/PAMAuthentication. :!:Don't forget to restart Pure-FTPd server.

[ERROR] Home directory not available - aborting

Even you have put 'yes' in /etc/pure-ftpd/conf/CreateHomeDir, Pure-FTPd will not create the user root directory, and you got ”[ERROR] Home directory not available - aborting” in your syslog. The solution is change the owner to root of the last existing directory in the home path. For example:
The user root directory is /home/ftp/user01 and /home/ftp should own be root

# ls -al /home/
# drwxr-xr-x 4 root ftp 4096 jui 4 21:57 ftp

Tagged as: , , , Comments Off
19Sep/12

在ubuntu中升级python版本

Posted by Nick Xu

$ python -V
Python 2.6.6
$ curl -kL https://raw.github.com/utahta/pythonbrew/master/pythonbrew-install | bash
$ . $HOME/.pythonbrew/etc/bashrc
$ pythonbrew install 2.7.1
$ pythonbrew switch 2.7.1
Switched to Python-2.7.1
$ python -V
Python 2.7.1

前提是要先安装curl
1Sep/12

ubuntu上配置共享上网

Posted by Nick Xu

一般插上网卡后用ubuntu自带的网络工具就可以配置IP,比如static或者DHCP之类,不需要手工修改interfaces文件的。

插上网线后设置好对应网卡的IP,就能把客户机和双网卡主机互相ping通,如果ping不通,首先检查是否安装防火墙,然后检测网线以及接口。

现在主要问题是如何共享上网,方法如下:

1、修改/etc/rc.local文件,在其中添加

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

iptables --insert FORWARD --in-interface eth0 -j ACCEPT

第一句是清除掉之前所有的iptables规则,根据自己的需要吧,如果有重要的路由规则最好不要清除

第二第三句是允许接收和发送数据包,

第四句是在eth0网口上NAT。注意,要在有外部IP的网口上做NAT。

2、修改/etc/sysctl.conf,在文件中加上下面一行: net.ipv4.ip_forward= 1,这里就是开启NAT。1表示转发,如果设置为0的话就是不转发。

reboot后先连通外网,然后试一下客户机上外网,应该就可以了。

 

禁用IPV6, 在 /etc/sysctl.conf 增加下面几行,并重启。

#disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
17Jul/11

debian时间设置

Posted by Nick Xu

在/etc/timezone里面写上中国的时区,Asia/Shanghai,在/etc/default/rcS里面把UTC设成yes,也就是用 utc,这是Debian推荐做法。最后也是最重要的,把/etc/localtime删除,再从/usr/share/zoneinfo/Asia里面拷贝Shanghai这个文件到/etc下,名字还是localtime。这样做完,不需重启,过会就自己生效了。

15Jul/11

Ubuntu 9.04 server用apt安装nginx并配置php(fastcgi)

Posted by Nick Xu

由于Ubuntu 904已经包含了nginx,所以根本不要编译,安装超简单!

修改/etc/apt/sources.list文件内容为国内镜像,然后运行:

apt-get update
apt-get install nginx

即可完成安装

启动nginx:

/etc/init.d/nginx start
然后就可以访问了,http://localhost/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。

下面配置php和mysql。

安装php和MySQL:

apt-get install php5-cli php5-cgi mysql-server-5.0 php5-mysql
我们需要/usr/bin/spawn-fcgi这个文件,而它是属于lighttpd这个包里面的,所以我们安装lighttpd然后把它设置为开机不启动:

apt-get install lighttpd #我们只要/usr/bin/spawn-fcgi
rcconf #去掉lighttpd开机自启动
修改nginx的配置文件:/etc/nginx/sites-available/default
修改 server_name 58.30.17.154;
修改index的一行修改为:
index index.php index.html index.htm;

去掉下面部分的注释:

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
重新启动nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start
启动fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi
为了让php-cgi开机自启动:

cd /etc/init.d
cp nginx php-cgi
vim php-cgi
替换nginx为php-cgi
并修改相应部分为:

DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS=”-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi”

stop)
echo -n “Stopping $DESC: ”
pkill -9 php-cgi
echo “$NAME.”
然后运行rcconf设置php-cgi为开机自启动

在/var/www/nginx-default/目录下创建一个文件:

echo ‘< ?phpinfo();?>’ > /var/www/nginx-default/index.php
然后浏览器访问nginx就可以看到一切正常了

19May/11

简单几步搞定ubuntu 配置开机启动vnc server

Posted by Nick Xu

在 /etc/init.d 目录下谢一个脚本vnc.sh,内容如下:
#!/bin/bash
vncserver -geometry 1440x900

然后执行:
update-rc.d vnc.sh defaults

只需两步就可以让vnc在系统启动时启动

查看开机启动配置:

chkconfig --list

chkconfig --add xxx

chkconfig --del xxx

Tagged as: , 1 Comment
site
site