1》 xx is not in the sudoers file问题的解决方案
2013-01-22 10:37:54xx is not in the sudoers file问题解决的两种方案如下。 。 。 。 。两种方法执行命令不同而已原理其实一样www.2 c t o.c om
方法一
首先利用w herei s命令查找s udoer s配置文件的目录默认会在etc/sudoers)
[root@local host xiaof ei]# where is sudoe rssudoe rs: /etc/sudoe rs/etc/sudoe rs.bak/usr/share/man/man5/sudoers.5.gz
然后需要su-切换到root用户更改/etc/sudoers的权限
[root@local host xiaof ei]# chmod u+w /etc/sudoe rs
然后就可以利用vi编辑器来把用户添加到s udoer s之中
[root@local host xiaof ei]# vi /etc/sudoers
然后找到r oot ALL=(ALL) ALL所在的位置把所要添加的用户添加到文件之中
下面是添加完的结果
## Allow root to run any comma nds anywh ereroot ALL=(ALL) ALLxiaof ei ALL=(ALL) ALL 这一行是添加的内容 xiaof ei是用户名
然后需要把sudoe rs的写权限去掉
[root@local host xiaof ei]# chmod u-w /etc/sudoe rs
如果不去掉写权限系统不允许执行suode rs文件运行sud o命令时会出现以下错误sudo: /etc/sudoe rs is mode 0640, shoul d be
0440 www.2cto.com
至此在退出ro ot用户之后就可以利用sudo命令来执行超级用户的权限了。
方法二
首需要切换到roo t身份
$su -
(注意有- 这和su是不同的在用命令"su"的时候只是切换到ro ot但没有把r oot的环境变量传过去还是当前用户的环境变量用"su-"命令将环境变量也一起带过去就象和ro ot登录一样)
然后
$visudo //切记此处没有v i和sudo之间没有空格
1、移动光标到最后一行
2、按a进入app end模式
3、输入your_user_name ALL=(ALL) ALL
4、按Esc
5、输入“:wq”
这样就把自 己加入了s udo组可以使用s udo命令了。
2》通过Soc ket5代理服务器访问网络的问题
时间:2010-11-2015:39来源:未知作者:admin点击:次
通过Soc ket5代理服务器访问网络的问题Sock s5版本的协议说明参考RFC1928,RFC1929
下面简单地罗列程序实现不涉及详细的协议规范。首先对于TCP连接然后再讨论UDP传输。至于通过socks 5的多播通讯有兴趣可以参考D.
Chouinard的文章。
1、 TCP:
//建立流套接字
SOCKET m_socTCP=socket(AF_INET,SOCK_STREAM,
I PPROTO_TCP);
//连接到代理服务器int nRet=connect(m_socTCP,(SOCKADDR*)&m_sa iProxy,sizeof(m_sa iProxy));
//Step 1:连接代理服务器成功后马上开始和代理协商协商报文如下,询问服务器版本5是需要验证(0x02)还是不需要验证(0x00)
+------+-------------------+------------+
|VER | Numberof METHODS|METHODS |
+------+-------------------+------------+
| 0x05 | 0x02 (有两个方法) | 0x00 | 0x02|
+------+-------------------+------------+const charreqNego[4]={(char)0x05,(char)0x02,(char)0x00,(char)0x02};nRet=send(m_socTCP,reqNego,4,0);
//Setp 2:代理服务器将返回两个字节的协商结果接收协商结果fd_set fdread;FD_ZERO(&fdread);
FD_SET(m_socTCP,&fdread);
// Last param set to NULLforblocking operation. (struct timeval*)if((nRet=select(0,&fdread,NULL,NULL,NULL))==SOCKET_ERROR){return NC_E_PROXY_SELECT_READ|WSAGetLastError();}char resNego[2]={‘\0‘};int nRcvd=0,nCount=0;whi le(1)
{if(FD_ISSET(m_socTCP,&fdread))
{
//接收sock[0]发送来的数据do{n Ret=recv(m_socTCP, (cha r*)res Nego+n Rcvd, 2-n Rcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=2)&&(++nCount<1000));i f(n Rcvd==2) brea k;
}if(nCount++>=2000){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}
}if(resNego[0]!=0x05 | | (resNego[1]!=0x00&&resNego[1]!=0x02)){return
NC_E_PROXY_PROTOCOL_VERSION|W SAGetLastError();};
//Step 3:根据协商结果判断是否需要验证用户如果是0x02则需要提供验证验证部分参考RFC1929if(resNego[1]==0x02)
{
//需要密码验证char reqAuth[513]={‘\0‘};
BYTE byLenUser=(BYTE)strlen(m_szProxyUserName);
BYTE byLenPswd =(BYTE)strlen(m_szProxyPassword);reqAuth[0]=0x01;reqAuth[1]=byLenUser;sprintf(&reqAuth[2],"%s",m_szProxyUserName);reqAuth[2+byLenUser]=byLenPswd;sprintf(&reqAuth[3+byLenUser],"%s",m_szProxyPassword);
//Send authentication infoint len=(int)byLenUser+(int)byLenPswd+3;nRet=send(m_socTCP,(const char*)reqAuth,len,0);if (nRet==SOCKET_ERROR){return
NC_E_PROXY_SEN D|WSAGetLastError();}
//Now: Response to the auth requestchar resAuth[2]={‘\0‘};int nRcvd=0,nCount=0;do{n Ret=recv(m_socTCP,resAut h+n Rcvd,2-n Rcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=2)&&(++nCount<1000));if(nCount>=1000){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}if (resAuth[1]!=0) return NC_E_PROXY_AUTHORIZE;
//密码验证通过了
}
//Step 4:协商完成开始发送连接远程服务器请求,请求报文格式如下
+----+-----+-------+------+----------+----------+
|VER|CMD| RSV |ATYP | DST.ADDR| DST.PORT|
+----+-----+-------+------+----------+----------+
| 1 | 1 | 0x00 | 1 |Variable | 2 |
+----+-----+-------+------+----------+----------+
//CMD==0x01表示连接,ATYP==0x01表示采用IP V4格式地址DST.ADDR是远程服务器地址 DST.PORT是远程服务器端口
//如果需要接受外来连接则需要在连接完成之后发送CMD==0x02绑定请求代理将为此请求绑定一个套接字接受外部连接charreqSubNego[10]={(char)0x05,(char)0x01,(char)0x00,(char)0x01,(char)0x00,(char)0x00,(char)0x00,(char)0x00,(char)0x00,(char)0x00};
*(unsigned long*)&reqSubNego[4]
=m_saiServerTCP.sin_addr.S_un.S_addr;
*(unsigned short*)&reqSubNego[8]=m_saiServerTCP.sin_port;
nRet=send(m_socTCP,(const char*)reqSubNego,10,0);if (nRet==SOCKET_ERROR){return
NC_E_PROXY_SEN D|WSAGetLastError();}
//Step 5:接收对请求的响应 响应包格式如下
+----+-----+-------+------+----------+----------+
|VER| REP | RSV |ATYP | BND.ADDR| BND.PORT|
+----+-----+-------+------+----------+----------+
| 1 | 1 | 0x00 | 1 |Variable | 2 |
+----+-----+-------+------+----------+----------+
//VER必须是0x 05,REP==0x00表示成功 ATYP==0x01表示地址是IPV4地址 BND.ADDR是代理为连接远程服务器绑定的地址 BND.PORT是这个套接字的端口char resSubNego1[5]={‘\0‘};if(FD_ISSET(m_socTCP,&fdread))
{int nRcvd=0,nCount=0;do{n Ret=recv(m_socTCP,resSu bNego 1+n Rcvd,5-n Rcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=5)&&(++nCount<1000));if(nCount>=1000){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}if(resSubNego1[0]!=0x05| |resSubNego1[1]!=0x00){return
NC_E_PROXY_PROTOCOL_VERSION_SU B|WSAGetLastError();};switch(resSubNego1[3])
{case 0x01:
{
// IP V4char resSubNego2[6]={resSubNego1[4],0};int nRet=-1;if(FD_ISSET(m_socTCP,&fdread))
{int nRcvd=0,nCount=0;do{i nt nRet= recv(m_socTCP,&resSubNego2[1]+nRcvd,5-nRcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=5)&&(++nCount<1000));if(nCount>=1000){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}
}
//得到代理绑定地址unsigned long ulBINDAddr=*(unsigned long*)&resSubNego2; //SOCKS BINDADDRunsigned short usBINDPort=*(unsigned short*)&resSubNego2[4];//SOCKS BIND PORTm_saiProxyBindTCP.sin_addr.S_un.S_addr=ulBINDAddr;m_saiProxyBindTCP.sin_port=usBINDPort;
//得到本机绑定地址int len=sizeof(m_saiHostTCP);getsockname(m_socTCP,(SOCKADDR*)&m_saiHostTCP,&len);}break;case 0x03:
{
//Domain nameint nLen= resSubNego1[4]+2;char* presSubNego2=new char[nLen];if(FD_ISSET(m_socTCP,&fdread))
{int nRet=0,nRcvd=0,nCount=0;do{nRet=recv(m_socTCP,presSubNego2+nRcvd,nLen-nRcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=nLen)&&(++nCount<1000));if(nCount>=1000){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}
}unsigned short usBINDPort=*(unsignedshort*)(presSubNego2+nLen-2); //BIND PORT;
//此时得到的是远程主机的Doma in Namedelete[] presSubNego2; presSubNego2=NULL;
}break;case 0x04:
{
// IPV6
AfxMessa geBox("该版本不支持IPV6";
}break;default:break;
}
//至此连接已经建立。在此套接字上可进行数据的收发。
}
2、 UDP
SOCKS V5提供了对UDP的支持它通过在代理服务器和内网主机之间建立一个UDP中继的T C P连接来辅助进行UDP数据包的收发。此连接有一个有效期在此有效生命周期内必须往代理发送UDP数据报确认连接有效来维持此连接的有效性否则代理服务器超时将会自动释放此连接的资源。下面简单地罗列程序实现不涉及详细的协议规范。
//客户端为U DP中继建立一个相关的流套接字
SOCKET m_socCl ientTCP_UdpAssociate=socket(AF_INET,
SOCK_STREAM, IPPROTO_TCP);
//连接代理服务器intnRet=connect(m_socCl ientTCP_UdpAssociate,(SOCKADDR*)&sai Proxy,sizeof(saiProxy));
//连接成功开始和代理服务器协商首先发送版本标志方法选择报文const charreqNego[4]={(char)0x05,(char)0x02,(char)0x00,(char)0x02};nRet=send(m_socCl ientTCP_UdpAssociate,reqNego,4,0);if( nRet==SOCKET_ERROR
{
DWORD dwError=WSAGetLastError();if (dwError!=WSAEWOULDBLOCK) return
NCM_E_WM_CREATE_PROXYREQUESTFAILED;
}
//接收协商的响应fd_set fdread; FD_ZERO(&fdread);
FD_SET(m_socCl ientTCP_UdpAssociate,&fdread);if((nRet=select(0,&fdread,NULL,NULL,NULL))==SOCKET_ERROR)return NCM_E_WM_CREATE_PROXYCONNECTFAILED;char resNego[2]={0};int nRcvd=0,nCount=0;
if(FD_ISSET(m_socCl ientTCP_UdpAssociate,&fdread))
{nRcvd =recv(m_socCl ientTCP_UdpAssociate,
(cha r*)resNego+nRcvd, 2,0);if(nRcvd==SOCKET_ERROR) return
NCM_E_WM_CREATE_PROXYCONNECTFAILED;
}if(resNego[0]!=0x05 | | (resNego[1]!=0x00&&resNego[1]!=0x02))return NCM_E_WM_CREATE_PROXYCONNECTFAILED;
//看是否需要密码验证if(resNego[1]==0x02)
{
//需要密码验证char reqAuth[513] ;memset(reqAuth,0,513);
BYTE byLenUser=(BYTE)strlen(m_szProxyUserName);
BYTE byLenPswd =(BYTE)strlen(m_szProxyPassword);reqAuth[0]=0x01;reqAuth[1]=byLenUser;sprintf(&reqAuth[2],"%s",m_szProxyUserName);reqAuth[2+byLenUser]=byLenPswd;sprintf(&reqAuth[3+byLenUser],"%s",m_szProxyPassword);//Send authentication infoint len=(int)byLenUser+(int)byLenPswd+3;int ret=send(m_socCl ientTCP_UdpAssociate,(constchar*)reqAuth,len,0);if (ret==SOCKET_ERROR) if (GetLastError()!=WSAEWOULDBLOCK)return NCM_E_WM_CREATE_PROXYREQUESTFAILED;
//Now: Responseto the auth requestchar resAuth[2]={‘\0‘};int nRcvd=0,nCount=0;do{ret=recv(m_socCl ientTCP_UdpAssociate,resAuth+nRcvd,2-nRcvd,0);if(ret==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=2)&&(++nCount<1000));if(nCount>=1000){return NC_E_PROXY_RECEIVE}if (resAuth[1]!=0) return
NEM_E_WM_CREATE_PROXYAUTHFAILED;
//密码验证通过了
}
//开始发送向目标服务器的连接请求其中DST.ADDR是目标服务器的地址DST.PORT是目标服务器的UDP端口charreqSubNego[10]={(char)0x05,(char)0x03,(char)0x00,(char)0x01,(char)0x00,(char)0x00,(char)0x00,(char)0x00,(char)0x00,(char)0x00};
*(unsigned long*)&reqSubNego[4]
=saiServerUDP.sin_addr.S_un.S_addr; // cmd: DEST.addr
*(unsigned short*)&reqSubNego[8]=saiServerUDP.sin_port; // cmd:DEST.port in network octet ordernRet=send(m_socCl ientTCP_UdpAssociate,(constchar*)reqSubNego,10,0);if (nRet==SOCKET_ERROR) return
NEM_E_WM_CREATE_PROXYREQFAILED;
//接收响应信息int nRecvCount=0;i nt nRecvBufferLen= 10;charszRecvBuf[10] ;n Ret=0;if(FD_ISSET(m_socCl ientTCP_UdpAssociate,&fdread))
{int nRcvd=0,nCount=0;do{n Ret=recv(m_socCl ientTCP_UdpAssociate,(char*)szRecvBuf+nRcvd,10-nRcvd,0);if(nRet==SOCKET_ERROR){return
NC_E_PROXY_RECEIVE|WSAGetLastError();}n Rcvd +=n Ret;
}whi le((nRcvd!=10)&&(++nCount<1000));if(nCount>=1000){return NC_E_PROXY_RECEIVE;}if (szRecvBuf[0]!=0x05| |szRecvBuf[1]!=0x00){return
NC_E_PROXY_PROTOCOL_VERSION_SU B;}
}else
{return NCM_E_WM_CREATE_PROXYREQUESTFAILED;
}
//代理服务器绑定udp地址BND.ADR一般代理服务器都是多宿主机器 因
物语云计算怎么样?物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是特惠活动为美国洛杉矶Cera机房的不限流量大带宽VPS,去程直连回程4837,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-v,因此并不会超售超开。一、物语云官网点击此处进入物语云...
易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。目前,易探云推出深圳或北京地区的适合挂机和建站的云服务器,国内挂机宝云服务器(可选深圳或北京地区),独立ip;2核2G5M挂机云服务器仅330元/年起!点击进入:易探云官方网站地址易探云国内挂机宝云服务器推荐:1、国内入门型挂机云服务器...
DMIT.io是成立于2018年的一家国外主机商,提供VPS主机和独立服务器租用,数据中心包括中国香港、美国洛杉矶和日本等,其中日本VPS是新上的节点,基于KVM架构,国际线路,1Gbps带宽,同时提供月付循环8折优惠码,或者年付一次性5折优惠码,优惠后最低每月8.72美元或者首年65.4美元起,支持使用PayPal或者支付宝等付款方式。下面列出部分日本VPS主机配置信息,价格以月付为例。CPU:...