php curl failed to resolve for socks5 connect, PHP CURL socks5 代理dns问题

php-curl是用socks5 代理不能解析主机名,两种解决办法

第一种:
Looks like CURLPROXY_SOCKS5_HOSTNAME is not defined in PHP, but you can explicitly use its value, which is equal to 7:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
这样把DNS解析的工作交给tor

第二种:

安装Privoxy转换成http代理

参考:http://stackoverflow.com/questions/15445285/how-can-i-connect-to-a-tor-hidden-service-using-curl-in-php

iptables 开机启动和规则保存(网卡启动和关闭时)

CentOS上可能会存在安装好iptables后,iptables并不开机自启动,可以执行一下:

chkconfig --level 345 iptables on
将其加入开机启动。

CentOS上可以执行:service iptables save保存规则。

另外更需要注意的是Debian/Ubuntu上iptables是不会保存规则的。

需要按如下步骤进行,让网卡关闭是保存iptables规则,启动时加载iptables规则:

创建/etc/network/if-post-down.d/iptables 文件,添加如下内容:

#!/bin/bash
iptables-save > /etc/iptables.rules
执行:chmod +x /etc/network/if-post-down.d/iptables 添加执行权限。

创建/etc/network/if-pre-up.d/iptables 文件,添加如下内容:

#!/bin/bash
iptables-restore < /etc/iptables.rules
执行:chmod +x /etc/network/if-pre-up.d/iptables 添加执行权限。

CentOS 对应的网卡启动相关脚本在/etc/sysconfig/network-scripts/目录下,pre和post相关脚本实际上默认没有,在/sbin/目录下创建相关脚本即可被/etc/sysconfig/network-scripts目录下的脚本调用到,例如/sbin/ifup-pre-local, /sbin/ifup-local, /sbin/ifdown-pre-local, /sbin/ifdown-local.被调用的脚本接收一个参数是网卡名称,所以最好在脚本里面做一下判断。

关于更多的iptables的使用方法可以执行:iptables --help或网上搜索一下iptables参数的说明。

Linux文件系统s权限

在Linux系统中最常见的文件权限是w、r、x,分别对应着写、读、执行权限,但是除此之外Linux还支持另外一系列的权限设置,这篇文字讲的就是这些权限中s权限的具体含义。

s,表示set UID或set GID。位于user或group权限组的第三位置。如果在user权限组中设置了s位,则当文件被执行时,该文件是以文件所有者UID而不是用户UID 执行程序。如果在group权限组中设置了s位,当文件被执行时,该文件是以文件所有者GID而不是用户GID执行程序。s权限位是一个敏感的权限位,容 易造成系统的安全问题。请在设置时小心,并注意系统中已有的SUID或SGID文件和目录。

继续阅读

以其他用户身份执行,su和sudo命令

linux下su命令可以以其他用户身份执行程序,-l参数指定需要登录的用户,-c参数指定了要执行的命令,例如
su -l ares -c "svn up"

su命令有一个缺点就是不可登录用户不用,比如使用nginx,这样su就不起作用了。但是用sudo命令可以解决这个问题,例如
sudo -u nginx svn up

-u参数指定用户名,后面直接跟命令即可。