【Linux】centOS下设置ftp账号权限

Continue Read..

       今天没事做..就看了看linux的书..突然想到以前一直都是root账号登录..如果以后真的自己搞服务器要给别人开账号肿么搞?还不能让别人有很多权限...就类似在空间商那里买空间的效果一样

       我一般都是用ssh模式登录   ftp也是stfp模式  我开始以为是设置一个账户..然后禁用他不能访问的目录...后来听同学说(专业的),账号分2种.一种是本地账号,一种是虚拟账号

       然后就想到了ftp账号   下面讲讲操作经过

       首先要在防火墙里面把端口打开..貌似默认是21端口吗(木有查)

       打开/etc/sysconfig/iptables文件

  1. vi /etc/sysconfig/iptables

在REJECT行之前添加如下代码

  1. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

保存和关闭文件,重启防火墙

  1. service iptables start                                     

 

     增加用户cuzn,指向目录/home/wwwroot/cuzn,禁止登录SSH权限。

  1. useradd -d /home/wwwroot/cuzn -g ftp -s /sbin/nologin cuzn

     设置用户口令

  1. passwd cuzn

配置vsftpd服务器

默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。

  1. vi /etc/vsftpd/vsftpd.conf

1、修改/etc/vsftpd/vsftpd.conf

将底下三行

  1. #chroot_list_enable=YES
  2. # (default follows)
  3. #chroot_list_file=/etc/vsftpd.chroot_list

改为

  1. chroot_list_enable=YES
  2. # (default follows)
  3. chroot_list_file=/etc/vsftpd/chroot_list

    编辑文件chroot_list:

  1. vi /etc/vsftpd/chroot_list

内容为ftp用户名,每个用户占一行,如:

cuzn

重新启动vsftpd

  1. service vsftpd restart

另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:

http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users

出现的错误

1、500 OOPS: cannot change directory
解决方法:

在终端输入命令:

  1. setsebool -P ftpd_disable_trans 1
  2. service vsftpd restart

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Jquery 模仿Ip地址输入

Continue Read..

html:

<div class="input_li">

                                                                <ul id="use_dns"></ul>

                                                            </div>

 

css:.

input_li{border:1px solid #E3E9EF;height:24px;}

        .input_li ul{width:140px;}

        .input_li ul li{float:left;}

        .input_li input{width:30px;border:none;height:14px;}

js:

<script>

        $(function () {

var addIPInputToInput = function () {

                $("#ipaddress").ipInput();

                $("#ziwang").ipInput();

                $("#wangguan").ipInput();

                $("#first_dns").ipInput();

                $("#use_dns").ipInput();

            }

addIPInputToInput();

        });

 

 

外部js内容:

(function ($) {

 

    $.fn.ipInput = function () {

 

        return this.each(function () {

 

            //将元素集合赋给变量 本例中是div对象 

            var $div = $(this);

            //$div.addClass("ipInput-border");

            //$div.addClass("input_li");

            //初始化input元素

 

            for (var i = 0; i < 4; i++) {

                //var input = $("<input type='text' maxlength='3'/>")

                var input = $("<li><input type='text' maxlength='3'/></li>")

                //.addClass("ipInput-cell")

.keydown(function (event) {

   //获取keyCode值

   var keyCode = event.which;

   //input框

   var $input = $(this);

   //获取input框中的value

   var text = $input.val();

   //处理text中非数字字符

//    var partten = /^\d+$/;

//    if (!partten.test($input.val())) {

//        $input.val('');

//    }

//    $(".input_li input").keyup(function () {

//        if (!partten.test($(this).val())) {

//            $(this).val('');

//        }

//    })

   //$input.val(text.replace(/[^\d]/g, ''));

   //防止左右键和Tab键自动跳

   if (keyCode == 39 || keyCode == 37 || keyCode == 9 || keyCode == 46 || keyCode < 48 || keyCode > 57) return false;

 

   if (text.length >= 3) {

       if (parseInt(text) >= 256 || parseInt(text) <= 0) {

           alert("请输入0~255之间的数");

           $input.val("")

           $input[0].focus();

           return false;

       } else {

           $input.nextAll("input")[0].focus();

           $input[0].blur();

       }

       //输入点时 自动跳到下一个

   } else if (text.length > 0 && (key == 110 || key == 190)) {

       $input.nextAll("input")[0].focus();

       $input[0].blur();

   }

});

 

                //输入IP的分割点

                //$div.append(input).append($("<span>.<span>"));

                $div.append(input).append($("<li>.</li>"));

            }

            //清空最后一个 .

            $div.children(":last").empty();

 

        });

    };

})(jQuery); 

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Jquery 限制输入(数字/一个小数点)

Continue Read..
<script type='text/javascript'>
  var partten = /^\d+$/;
  $(document).ready(function)(){
    $('input[type=text]:last').keydown(function(){
      if(!partten.test($(this).val())){
        $(this).val('');
      }
    })
  })
</script>
<input type='text' />
//只能输入数字
<td><asp:TextBox ID="tbUpperLevel" Text="0" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " onafterpaste="this.value=this.value.replace(/[^\d]/g,'')" MaxLength="6" runat="server" style="width:300px;"></asp:TextBox>

</td>

//只能输入数字和一个小数点

<td><asp:TextBox ID="tbDosageMin" runat="server" onkeyup="if(!/^\d*(\.\d*)?$/.test(this.value))this.value=this.value.substr(0,this.value.length-1)" onafterpaste="if(!/^\d*(\.\d*)?$/.test(this.value))this.value=this.value.substr(0,this.value.length-1)" MaxLength="7"></asp:TextBox></td>


//只能输入数字和一个小数点(小数点后保留三位小数)

<asp:TextBox ID="tbUnitWeight" MaxLength="7" runat="server" onkeyup="if(!/^\d*(\.?)(\d{1,3})?$/.test(this.value))this.value=this.value.substr(0,this.value.length-1)" onafterpaste="if(!/^\d*(\.?)(\d{1,3})?$/.test(this.value))this.value=this.value.substr(0,this.value.length-1)"></asp:TextBox>

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

js keycode 列表

Continue Read..
keycode    8 = BackSpace BackSpace
keycode    9 = Tab Tab
keycode   12 = Clear
keycode   13 = Enter
keycode   16 = Shift_L
keycode   17 = Control_L
keycode   18 = Alt_L
keycode   19 = Pause
keycode   20 = Caps_Lock
keycode   27 = Escape Escape
keycode   32 = space space
keycode   33 = Prior
keycode   34 = Next
keycode   35 = End
keycode   36 = Home
keycode   37 = Left
keycode   38 = Up
keycode   39 = Right
keycode   40 = Down
keycode   41 = Select
keycode   42 = Print
keycode   43 = Execute
keycode   45 = Insert
keycode   46 = Delete
keycode   47 = Help
keycode   48 = 0 equal braceright
keycode   49 = 1 exclam onesuperior
keycode   50 = 2 quotedbl twosuperior
keycode   51 = 3 section threesuperior
keycode   52 = 4 dollar
keycode   53 = 5 percent
keycode   54 = 6 ampersand
keycode   55 = 7 slash braceleft
keycode   56 = 8 parenleft bracketleft
keycode   57 = 9 parenright bracketright
keycode   65 = a A
keycode   66 = b B
keycode   67 = c C
keycode   68 = d D
keycode   69 = e E EuroSign
keycode   70 = f F
keycode   71 = g G
keycode   72 = h H
keycode   73 = i I
keycode   74 = j J
keycode   75 = k K
keycode   76 = l L
keycode   77 = m M mu
keycode   78 = n N
keycode   79 = o O
keycode   80 = p P
keycode   81 = q Q at
keycode   82 = r R
keycode   83 = s S
keycode   84 = t T
keycode   85 = u U
keycode   86 = v V
keycode   87 = w W
keycode   88 = x X
keycode   89 = y Y
keycode   90 = z Z
keycode   96 = KP_0 KP_0
keycode   97 = KP_1 KP_1
keycode   98 = KP_2 KP_2
keycode   99 = KP_3 KP_3
keycode 100 = KP_4 KP_4
keycode 101 = KP_5 KP_5
keycode 102 = KP_6 KP_6
keycode 103 = KP_7 KP_7
keycode 104 = KP_8 KP_8
keycode 105 = KP_9 KP_9
keycode 106 = KP_Multiply KP_Multiply
keycode 107 = KP_Add KP_Add
keycode 108 = KP_Separator KP_Separator
keycode 109 = KP_Subtract KP_Subtract
keycode 110 = KP_Decimal KP_Decimal
keycode 111 = KP_Divide KP_Divide
keycode 112 = F1
keycode 113 = F2
keycode 114 = F3
keycode 115 = F4
keycode 116 = F5
keycode 117 = F6
keycode 118 = F7
keycode 119 = F8
keycode 120 = F9
keycode 121 = F10
keycode 122 = F11
keycode 123 = F12
keycode 124 = F13
keycode 125 = F14
keycode 126 = F15
keycode 127 = F16
keycode 128 = F17
keycode 129 = F18
keycode 130 = F19
keycode 131 = F20
keycode 132 = F21
keycode 133 = F22
keycode 134 = F23
keycode 135 = F24
keycode 136 = Num_Lock
keycode 137 = Scroll_Lock
keycode 187 = acute grave
keycode 188 = comma semicolon
keycode 189 = minus underscore
keycode 190 = period colon
keycode 192 = numbersign apostrophe
keycode 210 = plusminus hyphen macron
keycode 211 =
keycode 212 = copyright registered
keycode 213 = guillemotleft guillemotright
keycode 214 = masculine ordfeminine
keycode 215 = ae AE
keycode 216 = cent yen
keycode 217 = questiondown exclamdown
keycode 218 = onequarter onehalf threequarters
keycode 220 = less greater bar
keycode 221 = plus asterisk asciitilde
keycode 227 = multiply division
keycode 228 = acircumflex Acircumflex
keycode 229 = ecircumflex Ecircumflex
keycode 230 = icircumflex Icircumflex
keycode 231 = ocircumflex Ocircumflex
keycode 232 = ucircumflex Ucircumflex
keycode 233 = ntilde Ntilde
keycode 234 = yacute Yacute
keycode 235 = oslash Ooblique
keycode 236 = aring Aring
keycode 237 = ccedilla Ccedilla
keycode 238 = thorn THORN
keycode 239 = eth ETH
keycode 240 = diaeresis cedilla currency
keycode 241 = agrave Agrave atilde Atilde
keycode 242 = egrave Egrave
keycode 243 = igrave Igrave
keycode 244 = ograve Ograve otilde Otilde
keycode 245 = ugrave Ugrave
keycode 246 = adiaeresis Adiaeresis
keycode 247 = ediaeresis Ediaeresis
keycode 248 = idiaeresis Idiaeresis
keycode 249 = odiaeresis Odiaeresis
keycode 250 = udiaeresis Udiaeresis
keycode 251 = ssharp question backslash
keycode 252 = asciicircum degree
keycode 253 = 3 sterling
keycode 254 = Mode_switch

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

js数组的排序——sort()

Continue Read..

对于一个数组的排序,默认的sort()按字符编码排序的:

    var testArray=[3,324,5345,6546,134,5654,665];

    testArray.sort();

    alert(testArray);

 

输出结果是:134  3  324  5345  5654  6546  665

现在要让它按照数值大小排序:

    var testArray=[3,324,5345,6546,134,5654,665];

    testArray.sort(function(a,b){return a-b;});

    alert(testArray);

这里传递一个比较函数给sort,比较函数的逻辑是:如果两参数的差值小于0,则表示a必须出现在b前面,否则在b后面。输出结果是:

3  134  324  665  5345  5654  6546,

 

 

 再如,要把数组里含有字母'a'的元素全部找出来,具体做法如下:

var testArray=['df''rtr''wy''dafd''dfs',

               'wefa''tyr''rty''rty''ryt',

               'afds''wer''te'];

    testArray.sort(function(a,b){return a.indexOf('a')==-1?1:-1;});

    alert(testArray);

这样就把数组中含有字母'a'的元素全部放到数组前面啦,再经过一些简单的处理,就可以输出搜索结果了

 

而对一个对象数组,要按照里面的某一属性排序的话,可以这样:如在数组arrayObject里的每个对象元素,都有一个tagName属性,现在要按tagName的拼音序排序,则可这样写

 

arrayObject.sort(function(a,b){return a.tagName<b.tagName?-1:1;});

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Jquery 解析数据到列表

Continue Read..

JS:

    <script>

        $(function () {

            var listurl, itemurl; //listurl取列表,itemurl新建,保存时用到

            var itemid; //

            var ParseListData = function (D) {//解析数据

                var itemvalue = "";

                var Os = $.evalJSON(D);

                var l = Os.length;

                for (var i = 0; i < l; i++) {

                    itemvalue += "<tr><td>" + Os[i].itemid + "</td><td>" + Os[i].date + "</td><td>" + Os[i].week + "</td><td>" + Os[i].isenable + "</td></tr>";

                }

                $("[DihO='ListContainer']").html(itemvalue);

            }

            //临时数据

            var ListData = "[{\"itemid\":\"1\",\"date\":\"13:20\",\"week\":\"星期一\",\"isenable\":\"false\"},{\"itemid\":\"1\",\"date\":\"18:00\",\"week\":\"星期二\",\"isenable\":\"true\"},{\"itemid\":\"1\",\"date\":\"13:00\",\"week\":\"星期五\",\"isenable\":\"false\"},{\"itemid\":\"1\",\"date\":\"12:00\",\"week\":\"星期三\",\"isenable\":\"false\"},{\"itemid\":\"2\",\"date\":\"10:00\",\"week\":\"每天\",\"isenable\":\"true\"}]";

 

            ParseListData(ListData);

        });

    </script>

 

 

HTML:

<script type="text/javascript" src="/js/jquery.js"></script>

    <script type="text/javascript" src="/js/jquery.json.js"></script>

<div class="yaohe_list">

                                <table>

                                    <thead>

                                        <tr>

                                            <th>

                                                药盒编号

                                            </th>

                                            <th>提醒时间</th>

                                            <th>每天还是星期几</th>

                                            <th>是否生效</th>

                                        </tr>

                                    </thead>

                                    <tbody DihO="ListContainer">

                                        <tr DihO="ListItem" class="dn">

                                            <td>{ItemSq}</td>

                                            <td>{Date}</td>

                                            <td>{Week}</td>

                                            <td>{IsEnable}</td>

                                        </tr>

                                    </tbody>

                                    <tr>

                                        <td><img class="zk" src="/images/zk.jpg" />1</td>

                                        <td>13:30</td>

                                        <td>星期三</td>

                                        <td>是</td>

                                    </tr>

                                    <tr>

                                        <td><img class="zk" src="/images/ss.jpg" />2</td>

                                        <td>13:30</td>

                                        <td>星期三</td>

                                        <td>是</td>

                                    </tr>

                                    <tr>

                                        <td>2</td>

                                        <td>13:30</td>

                                        <td>星期三</td>

                                        <td>是</td>

                                    </tr>

                                    <tr>

                                        <td>2</td>

                                        <td>13:30</td>

                                        <td>星期三</td>

                                        <td>是</td>

                                    </tr>

                                </table>

                            </div>

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Jquery 邮箱,数字,日期等验证

Continue Read..

onkeyup,blur:

onafterpaste="this.value=this.value.replace(/[^\d]/g,'')" 

onkeyup="this.value=this.value.replace(/[^\d]/g,'')"

 

$('#proskill_usetime').unbind();

$("#proskill_usetime").bind("keyup blur",function () {

$(this).val($(this).val().replace(/[^\d]/g,''));///\D/g

});

 

html:

<input type="text" name="Name" SData="SData" DataRequired="Required" DataType="" DataR="" PopInfo="姓名不能为空" class="typeduan50"/>

<input type="text" name="Hypertension_year" SData="SData" DataRequired="Required" DependOn="isHypertension" DependType="check" DataType="Number" PopInfo="高血压病的年数不能为空,并且必须为数字" DataR="" class="typeduan50"/><label>年</label>

 

js:

 

var CheckValue = function (e) {//验证值

//验证是否为空

if ($(e).attr("DataRequired") == "Required" && $.trim($(e).val()) == "") {

//先判断依赖属性

var d = $(e).attr("DependOn");

if (d&&d!="") {

switch ($(e).attr("DependType")) {

case "check":

if ($("[DependId='" + d + "']")[0].checked) { return false; };

break;

default:

return true;

break;

 

}

}

else{return false;}

            

}

var ck = $(e).attr("CheckRequired");

if (ck == "Group" ) {

//先判断依赖属性

var d = $(e).attr("DependOn");

if (d && d != "") {

switch ($(e).attr("DependType")) {

case "check":

if ($("[DependId='" + d + "']")[0].checked && $("[name='" + $(e).attr ("name")+ "']:checked").length == 0) { return false; };

break;

default:

//return true;

break;

 

}

}

else if ($("[name='" + $(e).attr("name") + "']:checked").length == 0) { return false; }

 

 

}

 

   

 

if ($(e).attr("DataRequired") == "Required" || ($(e).attr("DataRequired") == "" && $.trim($(e).val()) != "")) {

//验证是否为邮箱地址###BDYY###

if (!/^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*,?)+$/.test($(e).val()) && $(e).attr("DataType") == "Email") { return false; }

        

//验证是否为数字

if (!/^[0-9]*$/.test($(e).val()) && $(e).attr("DataType") == "Number") { return false; }

            if(!/^\d+(\.\d{1,2})?$/.test($(e).val()) && $(e).attr("DataType") == "Float") { return false; }//  /([0-9]+\.[0-9]{2})[0-9]*/

//验证是否为日期###BDYY###

if (!/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})/.test($(e).val()) && $(e).attr("DataType") == "Date") { return false; }

}

 

return true;

}

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Jquery 获取当前/日期拼写

Continue Read..
var FormatSData=function(f){
    $("#" + f + " [SData='Format'],#"+f+" [SFormat='ShortDate']").each(function (i, e) {
    var t = $(this).html();
    var d = new Date();
            d.setTime(Date.parse(t));
    //$(this).html(d.toLocaleDateString());

            var year=d.getFullYear();
            var month=d.getMonth()+1;
            var day=d.getDate();
            var loca_time=year+"年"+month+"月"+day+"日";
    $(this).html(loca_time);
    });

    }

该方法toLocaleDateString在Chrome下显示时间格式和Firox,Ie不同


// 获取当前系统时间,并格式化
function getNowDate(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth()+1;
var day = d.getDate();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
return year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds;
}

dealData:function(data){
    var self= this;
    data.forEach(function(item){
        var tempDate = new Date(item.createTime);
        var year = tempDate.getFullYear();
        var month = tempDate.getMonth()+1;
        month = month < 10 ? ('0' + month) : month;
        var tag = ''+year + month;
        var day = tempDate.getDate();
        day = day < 10 ? ('0' + day) : day;
        var hour = tempDate.getHours();
        hour = hour < 10 ? ('0' + hour) : hour;
        var minute =  tempDate.getMinutes();
        minute = minute < 10 ? ('0' + minute) : minute;
        item.month = month;
        item.date = month + '-' + day;
        item.time = hour + ':' + minute;
        if(!self.billList[tag]){
            self.$set('billList['+tag+']',[]);
        }
        self.billList[tag].push(item);
    });
}

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【DEDE】加拼音排序

Continue Read..

首先数据库里面没有记录当前数据的拼音。。。根据dede自带的函数和自己写的函数来实现效果

 

<?php
function array_sort($arr,$keys,$type='asc'){ 
    $keysvalue = $new_array = array();
    foreach ($arr as $k=>$v){
        $keysvalue[$k] = $v[$keys];
    }
    if($type == 'asc'){
        asort($keysvalue);
    }else{
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k=>$v){
        $new_array[$k] = $arr[$k];
    }
    return $new_array; 
}

$i = 1 ;
foreach($blockValue as $key => $v){
	$blockValue[$i]['pinyin'] = ucfirst(substr(GetPinyin($v['BuildName']),0,1));
	$blockValue[$i]['N_buildname'] = $blockValue[$i]['pinyin'] . '-' . $v['BuildName'];
    $i++;
}

$N_blockValue = array_sort($blockValue,'pinyin');

var_dump($N_blockValue);
?>

点击查看原图

 

 

内部函数

function GetPinyin($str,$ishead=0,$isclose=1)

{

global $cfg_soft_lang;

if(!function_exists('SpGetPinyin'))

{

require_once(DEDEINC."/inc/inc_fun_funAdmin.php");//下面函数  SpGetPinyin

}

if($cfg_soft_lang=='utf-8')

{

return SpGetPinyin(utf82gb($str),$ishead,$isclose);

}

else

{

return SpGetPinyin($str,$ishead,$isclose);

}

}

 

 

function SpGetPinyin($str,$ishead=0,$isclose=1)

{

global $pinyins;

$restr = '';

$str = trim($str);

$slen = strlen($str);

if($slen<2)

{

return $str;

}

if(count($pinyins)==0)

{

$fp = fopen(DEDEINC.'/data/pinyin.dat','r');

while(!feof($fp))

{

$line = trim(fgets($fp));

$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);

}

fclose($fp);

}

for($i=0;$i<$slen;$i++)

{

if(ord($str[$i])>0x80)

{

$c = $str[$i].$str[$i+1];

$i++;

if(isset($pinyins[$c]))

{

if($ishead==0)

{

$restr .= $pinyins[$c];

}

else

{

$restr .= $pinyins[$c][0];

}

}else

{

$restr .= "_";

}

}else if( eregi("[a-z0-9]",$str[$i]) )

{

$restr .= $str[$i];

}

else

{

$restr .= "_";

}

}

if($isclose==0)

{

unset($pinyins);

}

return $restr;

}

 

 

function SpGetPinyin($str,$ishead=0,$isclose=1)

{

global $pinyins;

$restr = '';

$str = trim($str);

$slen = strlen($str);

if($slen<2)

{

return $str;

}

if(count($pinyins)==0)

{

$fp = fopen(DEDEINC.'/data/pinyin.dat','r');//见插件

while(!feof($fp))

{

$line = trim(fgets($fp));

$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);

}

fclose($fp);

}

for($i=0;$i<$slen;$i++)

{

if(ord($str[$i])>0x80)

{

$c = $str[$i].$str[$i+1];

$i++;

if(isset($pinyins[$c]))

{

if($ishead==0)

{

$restr .= $pinyins[$c];

}

else

{

$restr .= $pinyins[$c][0];

}

}else

{

$restr .= "_";

}

}else if( eregi("[a-z0-9]",$str[$i]) )

{

$restr .= $str[$i];

}

else

{

$restr .= "_";

}

}

if($isclose==0)

{

unset($pinyins);

}

return $restr;

}

 

 

 

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权