分类目录归档:linux

ubuntu 设置时区

 

tzselect
按照提示进行选择时区
sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
执行
sudo ntpdate cn.pool.ntp.org
cn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间

时间
sudo date -s 20080701

http://www.cnblogs.com/lipeil/archive/2012/07/06/2578916.html

tzselect按照提示进行选择时区sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime执行sudo ntpdate cn.pool.ntp.orgcn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间
时间sudo date -s 20080701
byNeil
byNeil.com

原文来自 Blog by Neil, post ubuntu 设置时区 转载请注明出处。本站保留一切权力

ubuntu 安装 hubicfuse

 

如果你没有gcc,请先安装gcc:

apt-get  install  build-essential

 

1. 从github上clone源码:

https://github.com/TurboGit/hubicfuse

https://github.com/TurboGit/hubicfuse.git

2.执行./conbigure

configure: error: ‘Unable to find libxml2. Please make sure library and header files are installed.’

缺少 libxml2

<span class="lnum">   1:  </span>apt-get install libxml2-dev

 

然后,发现还是缺少libxml2

找到这个帖子:

https://github.com/redbo/cloudfuse/issues/20

 

apt-get install pkg-config

 

然后:

configure: error: ‘Unable to find libcurl. Please make sure library and header files are installed.’

apt-get install libcurl4-openssl-dev

 

然后:

apt-get install  libcurl3  libcurl3-openssl-dev  libcurl3-dev

 

然后缺少: libfuse

configure: error: ‘Unable to find libfuse.  Please make sure library and header files are installed.’

apt-get install libfuse-dev

 

缺少json:

找到这个网址:

http://webcache.googleusercontent.com/search?q=cache:XxNdg6n75boJ:linuxprograms.wordpress.com/2010/05/20/install-json-c-in-linux/+&cd=6&hl=en&ct=clnk

先update一下:

apt-get update

 

apt-get install libjson0 libjson0-dev

 

然后 ./configure

 

ok, 搞定。

 

然后:

make
make install

 

 

然后,新建,并编辑 ~/.cloudfuse  文件

 

然后:

mkdir /mnt/hubic

执行:

hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

 

 

如果是openvz的虚拟机,会出现这个错误。  可能是主机没有添加fuse模块,需要写信给客服,让打开fuse模块,不是所有的厂商都愿意给你打开fuse。

fuse: device not found, try ‘modprobe fuse’ first

 

如果是xen的服务器,就已经成功了。

 

image
byNeil
byNeil.com

原文来自 Blog by Neil, post ubuntu 安装 hubicfuse 转载请注明出处。本站保留一切权力

ubuntu配置crontab, 编辑crontab文件,执行定时任务

 

1. 创建或编辑用户的配置文件:

$ crontab -e [username]

 

用户的配置文件在:

/var/spool/cron/crontabs

image

每个用户都有自己的文件。我这里只有一个root

 

2. 在里面添加行, 每行一个任务。

具体行内语法请参考:http://docs.oracle.com/cd/E24847_01/html/819-6951/sysrescron-1.html#sysrescron-62861

 

修改完之后,重新加载cron配置:

service cron reload

 

3. 查看当前用户的任务列表:

crontab -l

byNeil
byNeil.com

原文来自 Blog by Neil, post ubuntu配置crontab, 编辑crontab文件,执行定时任务 转载请注明出处。本站保留一切权力

转载:Ubuntu查看系统的信息命令大全

 

 

系统信息
# uname -a              # 查看内核/操作系统/CPU信息
# cat /etc/issue        # 查看操作系统版本
#cat /proc/version      #包含GCC的版本信息
# cat /proc/cpuinf     # 查看CPU信息
# hostname             # 查看计算机名
# lspci -tv             # 列出所有PCI设备
# lsusb -tv             # 列出所有USB设备
# lsmod                 # 列出加载的内核模块
# env                   # 查看环境变量

资源信息
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载

磁盘信息
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况

网络信息
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息

进程信息
# ps -ef # 查看所有进程
# top # 实时显示进程状态

用户信息
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务

 

原文:http://www.icultivator.com/p/2840.html

byNeil
byNeil.com

原文来自 Blog by Neil, post 转载:Ubuntu查看系统的信息命令大全 转载请注明出处。本站保留一切权力

useradd,groupadd 添加用户和用户组

  • id 命令可以查看当前用户的详细信息:
[email protected]:~# id
uid=0(root) gid=0(root) groups=0(root)

image

  • /etc/group 文件中记录着所有的用户组:
[email protected]:~# cat /etc/group

image

  • /etc/passwd 文件中记录了所有的用户的信息
[email protected]:~# cat /etc/passwd

image

添加用户组:

[email protected]:~# groupadd backupuser

禁止用户组访问网络:

iptables -A OUTPUT -m owner --gid-owner backupuser -p all  -j DROP

保存 iptables设置:

iptables-save  > ip.conf

恢复iptables设置:

iptables-restore  < ip.conf

需要写入开机脚本,确保每次重启生效。

/etc/rc.local

添加用户,指定组, –m 自动生成home文件夹

useradd user1 -g backupuser -m

未完, 待续…….

byNeil
byNeil.com

原文来自 Blog by Neil, post useradd,groupadd 添加用户和用户组 转载请注明出处。本站保留一切权力

fstab,mtab,mount,fdisk 查看系统磁盘详情

 

fstab 文件想必大家都很熟悉,记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。

 

[email protected]:/home# cat /etc/fstab
proc  /proc       proc    defaults    0    0
none  /dev/pts    devpts  rw,gid=5,mode=620    0    0
none  /run/shm    tmpfs   defaults    0    0

 

image

除了 fstab 文件之外,还有一个 mtab 文件,和 fstab 文件一样在 /etc 文件下,位于 /etc/mtab。

mtab 文件记录的是,当前已挂载的分区信息。每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。 原文来自 blog.byneil.com

 

[email protected]:/home# cat /etc/mtab
/dev/simfs / simfs rw,relatime,usrquota,grpquota 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
none /run tmpfs rw,nosuid,noexec,relatime,size=419432k,mode=755 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,relatime 0 0

 

image

 

 

df 可以查看当前系统的已挂在的磁盘信息:

 

image

 

fdisk –l  查看系统所有已分区和未分区的磁盘, 并能划分磁盘分区。

image

 

mount –l 也能查看当前系统的挂载情况

 

image

原文来自 blog.byneil.com

byNeil
byNeil.com

原文来自 Blog by Neil, post fstab,mtab,mount,fdisk 查看系统磁盘详情 转载请注明出处。本站保留一切权力

rsync 远程同步文件

 

rsync 有两种工作方式,  这里用的是“方式”这个词,而不是“模式”。注意区分。

 

第一种方式是 服务器–客户端方式。

      在这种方式下, 服务端启动daemon 守护进程, 监听在端口 873,  并配置需要同步的模块。 然后客户端直接链接到873端口,通过认证,并同步。

其中,同步用的账号和密码都是rsync专用的,在rsync配置文件中独立配置。 于系统账号无关。

服务端运行rsync进程在daemon模式下, 客户端是普通的rsync进程。

这种模式下,客户端只能同步服务端事先配置的模块(目录)。 不能访问其他路径。

服务端配置方法参考:

rsync配置详细版

用rsync对网站进行镜像备份

第二种方式,  通过ssh链接。

        这种方式下, 无需事先配置远程服务端。

本机 rsync 进程 直接通过 ssh 通道连接到远程, 并在远程ssh通道执行命令: rsync –******

 

本地rsync进程和远程rsync进程 通过自己的标准输入和标准输出 互相通信。  具体的说就是,本地进程监听ssh通道的远程回显当做输入, 把自己的的输出通过ssh通道发送给远程。 而远程的rsync进程就一样, 也会监听ssh通道的输入,当做自己的输入,然后把自己的输出写入到ssh通道。

于是, 远程rsync进程和本地rsync进程就通过这种方式同步文件。

这种情况,无需事先配置远程服务端, 只要你有ssh权限登录,就能同步。

同步的路径无限制。  当然只能访问你的ssh账号所能访问的目录。 如果你是root那就是无限制了。

 

这两种工作方式下,只是传输的通道不一样,第一种是直接走socket通道。  第二种是走的ssh通道。

安全性显而易见。 

两种方式下,rsync都使用自有协议进行同步,所以可以携带的参数都是没有区别的。

具体实例:

rsync 的一般形式:

   2:  rsync  -options   SRC    DEST

当通过ssh链接时, 有时需要指定ssh端口, 请使用这个方式:

   1:  rsync  -options  -e  "ssh -p 10000"     SRC     DEST

 

(注意,是否使用ssh通道,与上面这个参数没有必然联系。我这里指定了10000端口)

 

我们以从远程 向 本地拷贝为例,

这个时候, SRC  应该是远程地址.

其形式应该是:

如果远程是daemon模式:

MODE是远程daemon事先配置好的 模块名字。这里只能使用已经配好的模块名字,不能使用路径。

注意HOST于MODE之间有两个冒号。  这是rsync用于区分模式的唯一方法。

     例子,拷贝远程模块到本地:

   1:   rsync -vzrtopg --progress  --delete   [email protected]::WEB   /tmp/

      把远程的 WEB模块,拷贝到本地的tmp目录。

 

或者是:

直接使用ssh模式:

   1:  [email protected]:Folder  

这里,后面跟的直接是Folder的完整路径。 当然是USER所能访问的地方。

注意这里HOST和Folder之间用的是一个冒号, rsync由此判断使用ssh通道。而不是直接连接远端的873端口。

     例子:

   1:   rsync -vzrtopg --progress --delete [email protected]:/home/wwwroot/    /tmp/

     这里是使用root用户登录远程服务器, 并把远程的 /home/wwwroot/ 目录同步到本地的 tmp 目录。注意与前一种的区别, 只有一个冒号。  这里会提示输入远程root的密码,如果已经配置了public key ssh 登录远程机器,就无需输入密码了。

 

常用rsync命令参数:

   1:  rsync -vzacu  /home/wwwroot   [email protected]***.***.***:/home/   --exclude  "wwwroot/index"   -e "ssh -p 22"

这是一个通过ssh通道从本地推送到远程的例子。 把本地的/home/wwwroot 推送到远程的/home下面。

参数说明,

-z 表示传输过程压缩

-a 表示采用归档模式, 拷贝文件时,保留文件的属主,用户组,权限等等信息。

-c 表示校验文件checksum

-u 表示update,只传送更新的文件。rsync会比较文件的修改时间。只有较新的文件才会被同步。

 

参考:

rsync

How Rsync Works

 

Rsync命令参数详解 – 技术文档 – 系统管理 Linux时代 – 开源、自由、共享 – 中国最大的Linux技术社区

byNeil
byNeil.com

原文来自 Blog by Neil, post rsync 远程同步文件 转载请注明出处。本站保留一切权力

ssh 使用public key 免密码登录

 

第一步,生成自己公钥, 私钥

 

   1:  ssh-keygen -t rsa
   2:   
   3:  [email protected]:~# ssh-keygen -t rsa
   4:  Generating public/private rsa key pair.
   5:  Enter file in which to save the key (/root/.ssh/id_rsa): 
   6:  Enter passphrase (empty for no passphrase): 
   7:  Enter same passphrase again: 
   8:  Your identification has been saved in /root/.ssh/id_rsa.
   9:  Your public key has been saved in /root/.ssh/id_rsa.pub.
  10:  The key fingerprint is:
  11:  3e:6e:d9:12:7c:f8:6f:18:f6:65:cb:6e:16:4f:83:43 [email protected]
  12:  The key's randomart image is:
  13:  +--[ RSA 2048]----+
  14:  |                 |
  15:  |                 |
  16:  |                 |
  17:  |             E   |
  18:  |       .S.  . .  |
  19:  |       .+ +  o+..|
  20:  |        oB + +.=.|
  21:  |       .+.+ o = .|
  22:  |       ... o.+.  |
  23:  +-----------------+

 

中间连续按几次回车, 使用默认文件名, 并不输入密码。

 

二, 把你的公钥,拷贝到远程机器的  “~/.ssh/authorized_keys” 文件中。

刚才生成的公钥在: ~/.ssh/id_rsa.pub,  里面是文本,直接复制出来,粘贴到远程的“~/.ssh/authorized_keys” 文件中即可。 如果没有这个文件,自己新建一个。

这个文件可以保存多个公钥,只需要连续放在里面就可以了。

拷贝的方法有很多。自己想办法。

 

拷贝完成之后,重启一下ssh服务。

service ssh  restart

 

然后测试是否成功:

   1:  [email protected]:~# ssh [email protected]***.***.***  -p 22   ls

这里故意指定了一个端口22, 其实可以省略的。如果你的ssh端口不是22可以这样指定。

这句话是在远程执行一个 命令 ls, 看能不能执行成功。

如果能看到ls的结果。那就是成功了。

 

 

三, 错误处理

如果访问不成功,请检查远程机器的 “/etc/ssh/sshd_config ”文件:

找到其中的这一段。

   6:  RSAAuthentication yes
   7:  PubkeyAuthentication yes
   8:  #AuthorizedKeysFile    %h/.ssh/authorized_keys

 

image

 

注意,必须开启 公钥认证, 检查公钥文件。

 

改完之后,重启远程ssh服务: service ssh  restart

byNeil
byNeil.com

原文来自 Blog by Neil, post ssh 使用public key 免密码登录 转载请注明出处。本站保留一切权力

简单配置vps,防ddos攻击

防人之心不可无。 网上总有些无聊或者有意的人。不多说了。上干货,配置vps apf防小流量ddos攻击。

对于大流量的ddos攻击, 需要机房的硬件防火墙,vps内部可能也扛不住。

1. 安装 DDoS deflate

DDoS deflate的原理是通过netstat命令找出 发出过量连接的单个IP,并使用iptables防火墙将这些IP进行拒绝。由于iptables防火墙拒绝IP的连接远比从Apache层面上来得高效,因此iptables便成了运行在Apache前端的“过滤器”。同样的,DDoS deflate也可以设置采用APF(高级防火墙)进行IP阻止。

 

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod +x install.sh
./install.sh
主要功能与配置

1、可以设置IP白名单,在 /usr/local/ddos/ignore.ip.list 中设置即可;

2、主要配置文件位于 /usr/local/ddos/ddos.conf ,打开此文件,根据提示进行简单的编辑即可;

3、DDoS deflate可以在阻止某一IP后,隔一段预置的时候自动对其解封;

4、可以在配置文件中设置多长时间检查一次网络连接情况;

5、当阻止IP后,可以设置Email提醒

简单配置一下:

FREQ=1 #检测的频率为1分钟 
NO_OF_CONNECTIONS=100 #当单个IP超过100个连接请求时判定为DDOS

APF_BAN=1 #如果打算使用APF阻止IP,则设置为1(需要预先安装APF);如果使用iptables,则设置为0; 

KILL=1 #是否阻止 

EMAIL_TO="[email protected]" #接收邮件 

BAN_PERIOD=600 #阻止时长,10分钟

 

2. 安装配置apf。

APF(Advanced Policy Firewall)是 Rf-x Networks 出品的Linux环境下的软件防火墙,被大部分Linux服务器管理员所采用,使用iptables的规则,易于理解及使用。

适合对iptables不是很熟悉的人使用,因为它的安装配置比较简单,但是功能还是非常强大的。

脚本安装:

[email protected]:/home/zhangy# wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz  
[email protected]:/home/zhangy# tar -xvzf apf-current.tar.gz  
[email protected]:/home/zhangy# cd apf-9.7-1  
[email protected]:/home/zhangy/apf-9.7-1# ./install.sh

ubuntu 可以快速安装:

sudo aptitude install apf-firewall

 

配置:

vi /etc/apf/conf.apf

 

往后翻页,找到:

# Configure inbound (ingress) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory. Format is comma separated
# and underscore separator for ranges.
#
# Example:
# IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
# IG_UDP_CPORTS="20,21,53,123"
# IG_ICMP_TYPES="3,5,11,0,30,8"

# Common inbound (ingress) TCP ports
IG_TCP_CPORTS="22"

 

默认只有22端口开放。 我们先不管。 访问以下80端口的网站试试。 发现竟然可以访问。 为什么规则没有起作用。

继续查看配置文件。 找啊找。

这一行引起了我的注意:

# Untrusted Network interface(s); all traffic on defined interface will be
# subject to all firewall rules. This should be your internet exposed
# interfaces. Only one interface is accepted for each value.
IFACE_IN="eth0"

突然想到, 会不会是监听端口的问题。

我们知道, 如果是真实服务器或者是 xen虚拟化的vps, 其网卡是 eth*。  例如:

ifconfig

image

但是, 我这台vps是openvz虚拟化的。 它的网卡一般是 vnet* 的。 比如:

 

image

 

于是改上面的配置文件:

# Untrusted Network interface(s); all traffic on defined interface will be
# subject to all firewall rules. This should be your internet exposed
# interfaces. Only one interface is accepted for each value.
IFACE_IN="venet0"

重启 apf:

apf -r

提示说找不到 ip_tables 模块。

ip_tables

apf(4677): {glob} unable to load iptables module (ip_tables), aborting.

image

 

于是搜索:  ubuntu  apf  找到这篇文章

http://davidwinter.me/articles/2011/06/05/install-apf-on-ubuntu-11-04/

 

大致意思是说, 在ubuntu中, iptables默认被编译进了内核, 而不是以模块方式运行的。apf默认是使用模块方式调用iptables。 所以要修改apf的配置:

SET_MONOKERN=”1″

 

然后重启 apf

然后看到一长串的日志:

image

 

看样子是成功了。

试一下, 果然80端口不能访问了。

只有22还在。

 

回到配置文件, 我们把端口开放:

vi /etc/apf/conf.apf

找到:

# Configure inbound (ingress) accepted services. This is an optional
# feature; services and customized entries may be made directly to an ip's
# virtual net file located in the vnet/ directory. Format is comma separated
# and underscore separator for ranges.
#
# Example:
# IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
# IG_UDP_CPORTS="20,21,53,123"
# IG_ICMP_TYPES="3,5,11,0,30,8"

# Common inbound (ingress) TCP ports
IG_TCP_CPORTS="22,80,443"

 

保存,重启:  apf –r

 

再访问以下,成功了。

 

最后, 关闭apf的调试模式,正式上线:

找到:

# !!! Do not leave set to (1) !!!
# When set to enabled; 5 minute cronjob is set to stop the firewall. Set
# this off (0) when firewall is determined to be operating as desired.
DEVEL_MODE="1"

 

改成 0:

# !!! Do not leave set to (1) !!!
# When set to enabled; 5 minute cronjob is set to stop the firewall. Set
# this off (0) when firewall is determined to be operating as desired.
DEVEL_MODE="0"

加入到自动启动:

找到这个文件:

/etc/default/apf-firewall

找到:

<code>RUN="no"
改为
</code>
<code>RUN="yes"</code>
<code> </code>

 

欢迎大家访问我的个人独立博客: http://blog.byneil.com
byNeil
byNeil.com

原文来自 Blog by Neil, post 简单配置vps,防ddos攻击 转载请注明出处。本站保留一切权力