博客

  • nginx wolf 支持伪静态文件.htaccess

    if (!-e $request_filename) {

    rewrite ^/admin(.+)$ /admin/index.php?$1 last;

    rewrite ^/(.+)$ /index.php?WOLFPAGE=$1 last;

    }

  • ssh只允许指定的用户登陆

    方法1:在/etc/pam.d/sshd文件第一行加入

    auth required pam_listfile.so item=user sense=allow file=/etc/sshusers

    onerr=fail

    然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。

     

    方法2:pam规则也可以写成deny的

    auth required pam_listfile.so item=user sense=deny file=/etc/sshusers

    onerr=succeed

     

    方法3:在sshd_config中设置AllowUsers,格式如

    AllowUsers a,b,c

    重启sshd服务,则只有a/b/c3个用户可以登陆

  • linux 限制root用户SSH登录

    1、修改SSHD服务的配置文件/etc/ssh/sshd_config

    将#PermitRootLogin yes 改为PermitRootLogin no

    2、重启sshd服务使配置生效

    /etc/rc.d/init.d/sshd restart

     

    为了增强linux的安全性,应该限制只有wheel组的用户可以使用su命令切换到root和其他用户:

     

    1、修改su命令的认证配置文件/etc/pam.d/su

     

    去掉以下两行前的#号注释

    #auth sufficient pam_wheel.so trust use_uid (去年注释后ROOT组成员使用su切换到root不需要密码)

    #auth required pam_wheel.so use_uid  (去年注释后只允许ROOT组成员使用su切换到root)

    2、创建一个普通用户,然后将这个用户加入到wheel组即可!以后就只有这个普通用户和root可以使用su命令了

    usermod -G 组 用户

     

    su命令使用简介:

     

    su 直接切换到root用户,但保持原用户的环境变量;

    su – 切换到root用户,并使用root用户的环境变量;

     

    su -l test 切换到test用户,并使用test的环境变量;

  • nginx 禁止ip访问及未绑定的域名跳转

    ngixn 禁止ip访问和未绑定ip的访问

     

    server {

    listen 80 default;

    server_name _;

    return 500;

    }

     

     

     

    nginx 将未绑定的域名跳转

     

    server {

    listen 80 default;

    rewrite ^(.*) http://www.kogoogle.com permanent;

    }

  • Freebsd pkg_delete删除错误安装的php

    本来想升级下php52至php53,结果可能由于操作不当导致53无法正常运行,加上自己不小心删除了/usr/local/lib/php/扩展包里的一些文件,导致再重新安装的时候php也不行,进退两难,尝试过几次通过ports卸载php,然后重装,都不可以,无论是52还是53.

    网上发现一个命令,尝试了下很管用:

    pkg_delete -f php\*
    rm -fr /usr/local/include/php/

    然后再重装,这样问题就解决了,哎,着急了我半天,还是命令不熟悉。

  • 优化 MySQL 效能

    最理想是在安装时已做好优化,但如果已经安装好 MySQL 后才需要做优化的话,可以通过设定 /etc/my.cnf 来做。如果不熟悉 my.cnf 内的设定也没关係,可以直接使用 MySQL 的范例档,在 /usr/share/mysql/ 下会有 my-huge.cnf, my-large.cnf, my-medium.cnf 及 my-small.cnf 几个档案,根据伺服器的硬件而选择适合的档案:

     

    my-huge.cnf: 适合 1GB – 2GB RAM的主机使用。

    my-large.cnf: 适合 512MB RAM的主机使用。

    my-medium.cnf: 只有 32MB – 64MB RAM 的主机使用,或者有 128MB RAM 但需要运行其他伺服器,例如 web server。

    my-small.cnf: 记忆体少於 64MB 时适用这个,MySQL 会佔用较少资源。

    我选用了 my-large.cnf,只要执行以下指令便完成了,但如果你原先已经有 my.cnf,请先备份起来及自行调整:

     

    shell> cp /usr/share/mysql/my-large.cnf /etc/my.cnf

    shell> /etc/init.d/mysqld restart

  • nginx报错nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    nginx报错nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    仔细参考nginx中文文档发现,发送信号USR2时,自动启动新的可执行文件,再手动启动的话就会报错

    本质上也算是一种地址冲突吧

     

    如果平时安装时遇见该错误,就是80端口被占用,

    找出占用80端口的程序杀掉即可

    代码如下:

    shell>netstat -tunlp

    shell>pkill 占用80端口的程序

    即可消除该错误

  • samba搭建

    安装samba

    #yum install samba

     

    配置samba

    #vi /etc/samba/smb.conf

    添加修改如下内容

    workgroup = MYGROUP //更改为你所在的工作组

    server string = Samba Server %U %G //更改显示信息,会在windows访问时最上方显示相关信息

    设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba设定的变量。这里说一下samba定义的变量:

    %S = 当前服务名(如果有的话)

    %P = 当前服务的根目录(如果有的话)

    %u = 当前服务的用户名(如果有的话)

    %g = 当前用户说在的主工作组

    %U = 当前对话的用户名

    %G = 当前对话的用户的主工作组

    %H = 当前服务的用户的Home目录

    %v = Samba服务的版本号。

    %h = 运行Samba服务机器的主机名

    %m = 客户机的NETBIOS名称

    %L = 服务器的NETBIOS名称

    %M = 客户机的主机名

    %N = NIS服务器名

    %p = NIS服务的Home目录

    %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)

    %d = 当前服务进程的ID

    %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)

    %I = 客户机的IP

    %T = 当前日期和时间

    灰色信息不添加

    #interfaces = 192.168.0.0/24 //可使用samba的网段,注释掉为全部

    [share] //显示的共享名

    path = /var/share //共享路径

    valid users = @test1,@test2 //共享文件属主,可以是用户也可以是组,组前加@

    browseable = no //非本共享用户是否可以看到,no为看不到,yes或注释掉就可看到

    writable = no //缺省是否可写

    read list = @test1 //只读用户组也可以加用户

    write list = @test2 //可写用户组也可以加用户

    create mode = 0755 //创建的文件权限

    directory mode = 0755 //创建的文件夹权限

    保存以上信息

    #mkdir /var/share //创建share目录

    #chmod 777 /var/share //将share目录权限设为777

    #groupadd test1 //添加test1组

    #groupadd test2

    #useradd -M -g test1 -s /sbin/nologin test1 //新建系统用户,无home,无shell,添加到test1组

    #useradd -M -g test2 -s /sbin/nologin test2

    #smbpasswd -a test1 //添加samba用户必添加密码,修改密码不用加-a

    #smbpasswd -a test2

    好了,重启samba就可以用windows登录了

    —————————————————————–

    以下是一些相关说明

    comment指的是对改共享的备注。

    path 指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是

    grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/

    glass目录。

    allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。

    writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。

    user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。

    valid users指定能够使用该共享资源的用户和组。

    invalid users指定不能够使用该共享资源的用户和组。

    read list 指定只能读取该共享资源的用户和组。

    write list指定能读取和写该共享资源的用户和组。

    admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。

    public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和

    public = yes是一样的。

    hide dot files指明是不是像unix那样隐藏以”.”号开头的文件。

    create mode指明新建立的文件的属性,一般是0755。

    directory mode指明新建立的目录的属性,一般是0755。

    sync always指明对该共享资源进行写操作后是否进行同步操作。

    short preserve case指明不管文件名大小写。

    preserve case指明保持大小写。

    case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。

    mangle case指明混合大小写。

    default case指明缺省的文件名是全部大写还是小写。

    force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user=

    grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。

    wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links =

    no将使该连接不可用。

    max connections = n设定同时连接数是n。

    delete readonly指明能否删除共享资源里面已经被定义为只读的文件。

  • tcp/ip cp报告了错误2:系统找不到指定文件

    ADSL,VPN拨号出现 tcp/ip cp报告了错误2:系统找不到指定文件

    1、打开注册表编辑器,删除以下两个键:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

     

    2、用记事本打开windows\inf\nettcpip.inf文件,找到:

    [MS_TCPIP.PrimaryInstall]

    0xa0 <——把此处的0Xa0改为0x80 保存退出

    3、在本地连接里找到TCP/IP协议,卸载TCP/IP协议,如果卸载是灰色,直接重新安装新协议tcpip协议,安装完成后删除TCP/IP协议,再次安装,此问题解决

  • 禁止复制网页

    一段非常实用的禁止复制网页代码,直接上代码:

    <script language=”JavaScript”>

    document.oncontextmenu=new Function(“event.returnValue=false;”);

    document.onselectstart=new Function(“event.returnValue=false;”);

    </script>