Linux下virtual FTP的搭建pure-ftpd

用过proftpd和vs-ftpd,proftpd有巨恐怖的sftp细粒度控制,特殊场合非常好。 但是总觉得都很复杂,我们文件系统的底层是GlusterFS,在之上建立虚用户,用proftpd和vs-ftpd都感觉复杂。 所以一直在找简单的方法,最后发现了pure-ftpd,很简单!!! 首先建一个无任何登陆权的新用户,注意,uid必须在500以上,不能用系统缺省的用户ftp,后面改pure-ftpd.conf时会有说明: useradd -u1000 -U -s/sbin/nologin -M ftpuser 安装pure-ftpd yum -y install pure-ftpd 修改配置: vi /etc/pure-ftpd/pure-ftpd.conf ChrootEveryone yes AnonymousOnly no NoAnonymous yes PureDB /etc/pure-ftpd/pureftpd.pdb #PAMAuthentication yes UnixAuthentication yes #注意,这里就指出了最小uid,所以第一步建立用户的时候uid不能小于500,否则pure-ftpd无法认证 MinUID 500 CreateHomeDir yes 改完后,我们来增加个用户,注意语法,test是虚拟用户名,-u和-g是虚拟用户对应linux系统的系统用户,就是我们第一步建立的那个无登陆权的ftpuser,-d是home目录,这个不用建,用户第一次登陆的时候pure-ftpd会自动建立: pure-pw useradd test -u ftpuser -g ftpuser -d /var/www/ppp 重建hash pure-pw mkdb 重启pure-ftpd service restart pure-ftpd ok,搞定了,一定要注意uid的问题。其他无复杂的地方。

2024年01月18日 · 1 分钟 · 53 字 · 八戒

GlusterFS的日常应用

基本上搭建glusterfs都是用了2个副本,用来保证数据冗余 建立新卷,/export/test-vol目录不用事先建立,会自动建立的: gluster volume create test-vol replica 2 transport tcp 172.16.8.5:/export/test-vol/ 172.16.8.6:/export/test-vol/ 如上建立新卷后,test-vol的属主是root,如果我们想基于gfs之上做个虚拟的vsftpd,建设用户是virtual.virtual,500.500 设置卷uid/gid属性: gluster volume set test-vol storage.owner-uid 500 gluster volume set test-vol storage.owner-gid 500 设置卷的quota空间配额: gluster volume quota test-vol enable gluster volume quota test-vol limit-usage / 10GB gluster volume quota test-vol limit-usage /path/in/volume 2G gluster volume set test-vol features.quota-timeout 30 gluster volume quota test-vol list gluster volume quota test-vol list /path/in/volume 去掉quota限制: gluster volume quota test-vol remove / gluster volume quota test-Vol remove /path/in/volume 优化tcp参数: gluster volume set test-vol diagnostics.brick-log-level WARNING gluster volume set test-vol diagnostics.client-log-level WARNING gluster volume set test-vol nfs.enable-ino32 on gluster volume set test-vol nfs.addr-namelookup off gluster volume set test-vol nfs.disable on gluster volume set test-vol performance.cache-max-file-size 2MB gluster volume set test-vol performance.cache-refresh-timeout 4 gluster volume set test-vol performance.cache-size 256MB gluster volume set test-vol performance.write-behind-window-size 4M gluster volume set test-vol performance.io-thread-count 32 设置卷访问权限 ...

2024年01月18日 · 1 分钟 · 161 字 · 八戒

ipxe中menu.c32和vesamenu.c32的用法

在做pxelinux启动的过程中,不可避免的会用到菜单选项。有两个选择,menu.c32 和 vesamenu.c32。 效果如下: menu.c32 vesamenu.c32 区别就是一个地方,我们看一下配置文件: default vesamenu.c32 PROMPT 0 NOESCAPE 0 ALLOWOPTIONS 0 TIMEOUT 200 MENU TITLE Boot Menu LABEL Ghost_Client_UNDI MENU LABEL ^1. Ghost Client UNDI MENU DEFAULT kernel memdisk append keeppxe initrd=imz/Client_undi.imz LABEL Ghost_Client_NDIS MENU LABEL ^2. Ghost Client NDIS kernel memdisk APPEND keeppxe initrd=imz/Client_ndis.IMZ LABEL WinPE MENU LABEL ^3. WinPE 2.0 KERNEL boot/pxeboot.0 LABEL PartedMagic MENU LABEL ^4. Parted Magic kernel utils/pmagic/bzImage LABEL Local_Drive MENU LABEL ^5. Boot Local Drive # localboot 0 KERNEL chain.c32 APPEND hd0 0 区别就是第一行: ...

2024年01月18日 · 1 分钟 · 108 字 · 八戒

ipxe启动Dos 6.22

太古老的命题了,如果想玩Dos 6.22之下的游戏,那就需要引动一个Dos系统了。 系统文件倒是现成的,Dos6.22.img。 如何做个ipxe的启动呢? 简单,依样画葫芦,修改boot2.php case '\52:54:00:7f:65:bb': echo "initrd http://172.16.8.1/ks/dos/Dos6.22.img\n"; echo "chain http://172.16.8.1/ks/dos/memdisk\n"; break; memdisk是从syslinux中拷贝的,也是神器。 其实可以用sanboot来启动的,但是那样起动起来的系统对C盘无写权限,因为dos下没有san的驱动可用。 所以改用memdisk,这样权限变为可写的了。

2024年01月18日 · 1 分钟 · 17 字 · 八戒

ipxe与aoe启动

先普及一下,aoe(ata over ethernet),跟iscsi差不多,不过是硬盘协议走在了以太网上。iscsi是3层的协议,aoe是二层的协议。 因为是二层的,所以没有网关、路由等等,相对强制的,客户端和服务器端必须是位于同一子网内。 先装服务端vblade: yum install vblade 然后准备存储空间,像lv、raw文件、硬盘(/dev/sdb)、硬盘分区(/dev/sdb1)或者raid磁盘/dev/md0都可以用作储存。 做一块20G的raw文件存储空间: mkdir /storage dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000 做一块aoe硬盘: vbladed 65535 255 eth0 /storage/storage1.img 解释一下 vbladed 后面跟了2个数字,第一个是主序列号,可以从 0-65535,第二个是次序列号,可以从0-255。然后跟发布的网卡,最后是存储空间。 最好把vbladed放入/etc/rc.d/rc.local vi /etc/rc.local vbladed 65535 255 eth0 /storage/storage1.img ok,服务器端的工作就完成了,大家看到了,基本什么也没设,因为是走在二层么。 然后ipxe部分就简单了,依样画葫芦修改boot2.php: case '\52:54:00:d9:fe:43': echo "set keep-san 1\n"; echo "sanboot aoe:e65535.255\n"; break; 搞定

2024年01月18日 · 1 分钟 · 48 字 · 八戒

ipxe远程启动iscsi上面的克隆卷

按上一篇所说,我们已经弄了个iscsi上面的win7卷,其实就是把萝卜花园的win7 clone到了一个10G的文件卷上。 引申问题: 大家其实可以用qcow2的文件格式保存的: qemu-img create -f qcow2 /export/iscsi/windows7.qcow2 60G vi /etc/tgt/targets.conf <target iqn.2016-07.com.renhe:renhe-16-8-6.disk03> backing-store /export/iscsi/disk03.img backing-store /export/iscsi/windows7.qcow2 write-cache off </target> tgt-admin --execute 那么,我们如何让ipxe直接起动这个iscsi卷呢? 还是编辑boot2.php即可: case '\52:54:00:d9:fe:43': echo "sanboot iscsi:172.16.8.6::3260:1:iqn.2016-07.iscsi:disk03\n"; break; 注意啊,查遍很多网上资料: sanboot的参数都是iscsi:ip::::iqn,实际无论是实体机的pxe,还是kvm虚拟机的pxe,都无法启动。以下格式才是正确的: iscsi:ip::3260:1:iqn 这样装个win7就简单了,拷贝一下disk03.img这个模板,启动pxe即可 #!/bin/bash virt-install \ --name=pxe-16-11-8 \ --vcpu=2 \ --ram=4096 \ --nodisks \ --boot network \ --os-type=windows \ --os-variant=win7 \ --network bridge=br0 \ --vnc --vnclisten=0.0.0.0 --vncport=5910 以后就可以用这个办法瞬间弄出一堆win虚机了,用完就删除

2024年01月18日 · 1 分钟 · 60 字 · 八戒

kvm使用iscsi作为存储池安装win

最近都在研究ipxe和iscsi,那么如何让kvm使用存储在iscsi上面的文件卷呢? 假设我们已经按之前的文章架好了iscsi: 造个10G文件: dd if=/dev/zero of=/export/iscsi/disk03.img count=0 bs=1 seek=10G 服务端增加iscsi target vi /etc/tgt/targets.conf <target iqn.2016-07.com.renhe:renhe-16-8-6.disk03> backing-store /export/iscsi/disk03.img write-cache off </target> tgt-admin --execute isci准备好了,然后我们去kvm定义池子:myiscsi virsh virsh# pool-define-as myiscsi 172.16.8.6 - iqn.2016-07.com.renhe:renhe-16-8-6.disk03 - /dev/disk/by-path virsh# pool-start myiscsi Name State Autostart ----------------------------------------- myiscsi active no virsh# pool-autostart myiscsi virsh # pool-list Name State Autostart ----------------------------------------- myiscsi active yes virsh# vol-list myiscsi Name Path ----------------------------------------- unit:0:0:1 /dev/disk/by-path/ip-172.16.8.6:3260-iscsi-iqn.2016-07.com.renhe:renhe-16-8-6.disk03-lun-1 ok,记下来这个Name:unit:0:0:1 然后我们来安装win的kvm吧,直接clone输出到硬盘 virt-install \ --name=iscsi-16-11-9 \ --vcpu=2 \ --ram=4096 \ --cdrom=/export/kvm/iso/Luobo_Ghost_Win7_SP1_x86_2015_0904.iso \ --boot network,cdrom,hd,menu=on \ --disk vol=myiscsi/unit:0:0:1 \ --os-type=windows \ --os-variant=win7 \ --network bridge=br0 \ --vnc --vnclisten=0.0.0.0 --vncport=5911 注意上面disk的参数,myiscsi/unit:0:0:1 ...

2024年01月18日 · 1 分钟 · 95 字 · 八戒

IPXE万能工具hiren.iso的启动方式

我们希望有紧急情况出现的时候,ipxe可以用systemrecuecd救急,可能也希望机器上架前测测内存、分区、起个winpe等等。这时候就要用到hiren这个工具了,这个东西就是国外的老毛桃工具箱! 很简单,修改boot2.php case '\52:54:00:a7:ef:5d': echo "initrd http://172.16.8.1/ks/winpe/Hiren.iso\n"; echo "chain http://172.16.8.1/ks/winpe/memdisk iso raw\n"; break; memdisk从syslinux里面拷贝即可。 这样就有一个万用工具可用了,iso启动都可以采用这种方式哦。

2024年01月18日 · 1 分钟 · 15 字 · 八戒

IPXE远程运行sysrecuecd系统

既然用到ipxe,就试试远程运行systemrecuecd。万一系统出毛病,可以用来恢复或者急救。 下载cd wget http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/4.7.3/systemrescuecd-x86-4.7.3.iso 装进 http://172.168.8.1/ks/sysrcd目录中 mount -o loop systemrescuecd-x86-4.7.3.iso /mnt/iso mkdir -p /var/www/html/ks/sysrcd cp -r /mnt/iso/* /var/www/html/ks/sysrcd 重头戏,依然按前面的方法修改boot2.php即可 case '\ec:f4:bb:d9:96:40': $ip="172.16.36.2:172.16.37.254:255.255.254.0:myhost-16-36-2"; $ipa=explode(':',$ip); echo "ifopen net0\n"; echo "set net0/ip $ipa[0]\n"; echo "set net0/netmask $ipa[2]\n"; echo "set net0/gateway $ipa[1]\n"; echo "set net0/dns $dns\n"; echo "set base-url http://172.16.8.1/ks/sysrcd\n"; echo "kernel \${base-url}/isolinux/rescue32 netboot=\${base-url}/sysrcd.dat nodhcp eth0=172.16.36.2/23 dns=172.16.8.1 gateway=172.16.37.254 rootpass=xxxxxxxx vncserver=1:password nameif=eth0:ec:f4:bb:d9:96:40\n"; echo "initrd ${base-url}/isolinux/initram.igz\n"; echo "boot\n"; break; 注意上面,静态ip的设置部分,还有同时设置了sshd和vncserver,方便远程操作。

2024年01月18日 · 1 分钟 · 64 字 · 八戒

用IPXE启动个Ubuntu桌面

有了上篇IPXE的启动方法,我们来启动一个Ubuntu来玩: 简单的修改boot2.php即可: case '\ec:f4:bb:d9:96:40': $ip="172.16.36.2:172.16.37.254:255.255.254.0:myhost-16-36-2"; $ipa=explode(':',$ip); echo "ifopen net0\n"; echo "set net0/ip $ipa[0]\n"; echo "set net0/netmask $ipa[2]\n"; echo "set net0/gateway $ipa[1]\n"; echo "set net0/dns $dns\n"; echo "kernel http://172.16.8.1/ks/ubuntu/vmlinuz.efi root=/dev/nfs boot=casper netboot=nfs nfsroot=172.16.11.6:/root/ubuntu ip=172.16.36.2::172.16.37.254:255.255.254.0:renhe-16-36-2:eno1 ro\n"; echo "initrd http://172.16.8.1/ks/ubuntu/initrd.lz\n"; echo "boot\n"; break; 注意:变的就是kernel和init那两行,netboot支持nfs和cifs,不支持http啊,试了半天!另外ip那一行,如果是动态的,ip=dhcp,如果是静态的,格式如下: ip=客户端ip:服务器端ip:网关:掩码:主机名:网卡 服务器端ip不填,主机名也可以不填。 首先我们要去下个ISO wget http://mirrors.163.com/ubuntu-releases/16.04/ubuntu-16.04-desktop-amd64.iso 然后把vmlinuz.efi和initrd.lz弄出来,放到[http://172.16.8.1/ks/ubuntu]目录下 mount -o loop ubuntu-16.04-desktop-amd64.iso /mnt/iso cp /mnt/iso/casper/vmlinuz.efi /var/www/html/ks/ubuntu cp /mnt/iso/casper/initrd.lz /var/www/html/ks/ubuntu 然后建立nfs,把iso里的东西都弄到nfs共享里去: mkdir -p /export/ubuntu vi /etc/exports /export/ubuntu *(rw,sync,no_subtree_check,fsid=0,no_root_squash) yum install -y nfs-utils rpcbind service nfs start ok,启动pxe,就看到桌面了。

2024年01月18日 · 1 分钟 · 75 字 · 八戒