Archive for 10月, 2009

strcpy 函数的实现 GCC-4.1.2 通过测试

LINUX C & ARM & C51 | Posted by 老沙
10月 16 2009

#include <stdio.h>
char *strc(char *dest,char *src)
{
if ((dest!=NULL)&&(src!=NULL))
{
char *cpdest=dest;
while((*dest++=*src++)!='');
return cpdest;
}else
{
return "error";
}
}

int main(void)
{
char *pp1;
char p[30];
pp1=strc(p,"cfxdfasdf12345");
printf("%snreturn:%sn",p,pp1);

}

GCC-4.1.2通过测试

Putty plink 妙用

其它工具 | Posted by 老沙
10月 13 2009

plink参数说明
版本0.60
用法:plink [选项] [用户@]主机[命令]

选项: 注意,选项区分大小写
– V 打印版本信息并退出
– pgpfp 打印PGP密钥指纹并退出
– v 显示详细信息
-load sessname 从存储的session中加载配置
-ssh -telnet -rlogin -raw
强制使用的特定协议
-P 连接到指定的端口
-l user 指定连接的用户名
-batch禁用所有互动提示
下列选项只适用于SSH连接:
-pw passw 指定登录的密码
-D [listen-IP:]listen-port
指定socks代理的转发 地址与端口
-L [listen-IP:]listen-port:host:port
转发本地端口远程地址
-R [listen-IP:]listen-port:host:port
远程端口转发到本地地址
-X -x 启用/禁用的X11转发
– A -a 启用/禁用代理转发
-T -t 启用/禁用控股分配
-1 -2 强制使用特别协议版本
-4 -6 强制使用IPv4或IPv6
-C 启用压缩
-i key 私钥文件认证
-noagent 禁止使用
-agent 打开图型介面使用
-m 从文件读取远程命令
-s 远程命令是一个SSH子系统(只有于SSH2)
-N 不启动一个shell (只有于SSH2)
-nc:port
在会议上进行公开隧道(只有于SSH2)

例:
ssh服务器为20.20.20.20 用户名:test 密码:123456 ssh端口:50000 转发代理地址:127.0.0.1:1080
plink -C -N -D 127.0.0.1:1080 -P 50000 -l test -pw 123456 20.20.20.20

附一个免费申请国外ssh账号的网站,人工审核48小时。
http://rootshell.be/register.php

plink下载:
点击下载

/proc/sys/net/ipv4/ip_forward 自动变为0 解决

LINUX | Posted by 老沙
10月 12 2009

两个方法
1./etc/sysctl.conf中将net.ipv4.ipforward设为1

2.在/etc/rc.d/rc.local中加入echo "1" > /proc/sys/net/ipv4/ip_forward

nfs iptables 设置

LINUX | Posted by 老沙
10月 12 2009

新版的NFS和以前不一样了
版本:

[root@mydisk ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 1011 status
100024 1 tcp 1011 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 1012 nlockmgr
100021 3 udp 1012 nlockmgr
100021 4 udp 1012 nlockmgr
100021 1 tcp 1012 nlockmgr
100021 3 tcp 1012 nlockmgr
100021 4 tcp 1012 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100005 1 udp 1010 mountd
100005 1 tcp 1010 mountd
100005 2 udp 1010 mountd
100005 2 tcp 1010 mountd
100005 3 udp 1010 mountd
100005 3 tcp 1010 mountd

想设置防火墙,要先把端口固定下来(上边是固定后的端口)
编辑 vi /etc/services
加入

#mountd
mountd 1010/tcp
mountd 1010/udp
#status
status 1011/tcp
status 1011/udp
#nlockmgr
nlockmgr 1012/tcp
nlockmgr 1012/udp

但nlockmgr在这个文件中是固定不下来的,所以
vi /etc/sysconfig/nfs
把注解的#去掉 改成这样子
LOCKD_TCPPORT=1012
LOCKD_UDPPORT=1012

再rcpinfo -p看看,是不是和我上边的一样了。
如果端口固定下来了,下来来配防火墙

在iptables中的*filter中加入以下语句(/etc/sysconfig/iptables)

#============================nfs======================
-A INPUT -p tcp -s 192.168.1.0/24 -m multiport –dport 111,1011,875,1012,1010,2049 -j ACCEPT
-A INPUT -p udp -s 192.168.1.0/24 -m multiport –dport 111,1011,875,1012,1010,2049 -j ACCEPT
#=======================================================
然后重启iptables
/etc/init.d/iptables restart
看看能挂载不

系统无故的坏了

个人的心情空间 | Posted by 老沙
10月 11 2009

先是主机ibus-table-wubi无故的打不出字来,弄了半天好了
再来看存储,nfs挂载不上了
RPC,nfs都正常,iptables也关了,SElinux也关了。服务正常。日志也正常。
但就是挂不上了,网上查也无果,真是郁闷的一天呀

我就日他姥姥

samba 配置

LINUX | Posted by 老沙
10月 10 2009

1. SAMBA主要的进程
smbd:管理文件共享与打印机的共享
nmbd:管理群组的NetBIOS Name解析
用到137,138,139三个口

2. 安装所需文件
samba-document:相关默认配置文件
samba-common:smb.conf与testparm
samba-client:挂载samba文件格式所需要的指令,如smbmount等

3. 软件的结构
/etc/samba/smb.conf:配置文件
/etc/samba/lmhosts:NetBios Name与主机IP的对应,一般不用管
/etc/samba/smbpasswd:存放smb用户密码,佣有者为root,权限600
/etc/samba/smbusers:建立windows与unix管理员与访客账号不一致时的对应关系,需要由smb.conf里的username map设置开启
testparm:此命令用于给smb.conf 做语法检查
smbd,nmbd:主要的进程
smbstatus:列出smb服务器的状态
smbpasswd:建立smb服务器的密码文件的命令
smbclient:查看其它计算机的共享
smbmount:挂载smb共享出来的目录
nmblookup:类似于nslookup,但重点在于netbios name
smbtree:类似于网上邻居,能查到工作组与计算机名称的树状目录分布图。
/usr/share/doc/samba-<版本>:包含了samba的技术手册

4. 设置的主要步骤
(1)在smb.conf中设置,工作且,netbios主机名,密码使用状态等
(2)在smb.conf内设置好要分享出来的目录,装置以及可供使用的用户数据
(3)根据(2)设置,linux文件系统中建立好共享文件或装置的使用权限
(4)根据(2)设置通过smbpasswd建立用户的账号及密码
(5)启动smbd与nmbd

smb.conf的配置
[global]
workgroup:工作组名
netbios name:netbios名
server string:主要的说明,不重要

dispay charset:服务器上的显示编码,一般与unix charset相同
unix charset:一般在/etc/sysconfig/il8n中
dos charset:windows的编码,繁体中文一般为big5,叫cp950

log file:日志的位置
max log size:日志文件的大小,若超过通过rotate进行删除

security:包括的选项
user:使用samba自身的密码数据库
share:不用密码
Server与domain:使用外部主机的密码,还要有password Server=IP

encrypt passwords:yes代表密码要加密,

smb passwd file:密码放置的文件,通常是/etc/samba/smbpasswd

[分享名称]
comment:目录说明
path:实际文件系统的路径
read only:设置是否只读
public:是否让所有可以登陆的用户看到这个项目
writable:设置是否可以写入,与read only谁最后出现,谁为准
create mode与directory mode:与权限有关
valid users:指定能句时入到此资源的特定用户

%S:登陆者
%m:client的netbios主机名
%M:client的host name
%L:代表samba主机的netbios名
%H:代表用户的默认目录
%U:代表目前登陆的用户名称
%g:代表登陆的用户的群组名称
%h:代表目前这台samba主机的hostname
%I:代表client的IP
%T:代表目前的日期与时间。

例(没有密码的smb.conf)
1. 设置/etc/samba/lmhosts (可选)
192.168.1.250 test1
2. /etc/samba/smb.conf
[global]
#主机名相关
workgroup=workgroup
netbios name=test1
server string=hehe

#语言相关
unix charset=utf8
display charset=utf8
dos charset=cp950

#日志
log file=/var/log/samba/%m.log
max log size=50

#密码相关
security=share

#其他
socket options=TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy=no
template shell=/bin/false
winbind use default domain=no

然后用testparm检查一下正确性
testparm -v

启动:/etc/init.d/smb start
udp 137 138
tcp 139 445
smb ports=445 139

观察:smbclient -L [//主机][-U 账号]

==========================================
附加:(建立一个有密码保护的共享)
在上面例子的基础上
1. 将security = share 改为 user
2. encrypt passwords = yes
3. smb passwd file = /etc/samba/smbpasswd #(加强记忆,可不写)
4. valid users = %S 或 用户 或 @组名 #(%S,为每个用户自己的目录,可进入的用户,@为可进入的用户组)
5. create mode = 0644 与 directory mode = 0775 # (可选,加入umask)
6. 加入密码
用户必须是/etc/passwd里有的,但密码是存在/etc/samba/smbpasswd中
加入密码 smbpasswd 命令
-a 新增一个账号
-d 禁用一个账号
-e 解禁一个账号
-m 该username为机器代码,与domain model 有关

smbpasswd -a 用户名
然后输入两次密码,就好了

testparm -v 测试一下

如没错,就重启一下smb的进程
/etc/init.d/smb restart
OK了,进入共享试试

+++++++++++++++++++++++++++++++++++++++++++
iptables的设置

-A INPUT -p tcp -m multiport –dports 137,138,139,445 -j ACCEPT
-A INPUT -p udp -m multiport –dports 137,138,139,445 -j ACCEPT

出现过的错误
1. symbol lookup error: smbd: undefined symbol: _talloc_get_type_abort
解决:yum update libtalloc

出现的最二的错误
当samba升级到3.4.2-0.42,会报端口被占用,无法正常使用,所以不要从3.3.2升级到3.4.X不然都不知道自己是怎么死的

fedora 上海交大 yum 源 只要是fedora就通用,包括fedora8 fedora9 fedora10 fedora11 fedora12

LINUX | Posted by 老沙
10月 06 2009

更改
/etc/yum.repos.d/下的
fedora.repo
fedora-updates.repo
两个文件中的两个段

[fedora]
name=Fedora $releasever – $basearch
failovermethod=priority
baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/$releasever/Everything/$basearch/os/
ftp://ftp.sjtu.edu.cn/fedora/linux/releases/$releasever/Everything/$basearch/os/
ftp://ftp.cuhk.edu.hk/pub/Linux/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[updates]
name=Fedora $releasever – $basearch – Updates
failovermethod=priority
baseurl=http://ftp.sjtu.edu.cn/fedora/linux/updates/$releasever/$basearch/
ftp://ftp.cuhk.edu.hk/pub/Linux/fedora/updates/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

只要是fedora就通用,包括fedora8,fedora9,fedora10,fedora11,fedora12

fedora 配置 sudo

LINUX | Posted by 老沙
10月 06 2009

1. su –
2.将/etc/sudoers的权限改成0744
3. vi /etc/sudoers
4.%wheel ALL=(ALL) ALL 的注释去掉
5.你要激活/etc/pam.d/su文件中的下面一条命令:
auth required pam_wheel.so use_uid

转:

Fedora 8中打开sudo命令的两种方式

为了方便系统的管理,Fedora 8系列内置了sudo的机制,他的概念是,授权特定的用户可以执行一些root的命令。但是在Fedora 8安装之后,默认是没有打开这个功能的,要打开,可以按照下面两种方式。

第一,切换到root的权限下,将/etc/sudoers的权限改成0744后编辑,或者用visudo命令编辑它,将83 行

%wheel ALL=(ALL) ALL

的注释去掉(注意,后面没有NOPASSWORD),然后,把你当前的用户添加到wheel的用户组(编辑/etc/group文件,在wheel后面加上你的用户名,用“,”隔开),ok,这样你就可以用sudo执行任何root的命令了,当然,你得知道root的密码,不要密码就在最后一个ALL后面加上一个NOPASSWORD(不推荐)。

第二种,可以自己可以在Fedora 8下新建一个用户组,然后把这个用户组添加到sudoers的文件中去,例如

%leekooqi All=(All) ALL

这样,效果是一样的。

如果你不想给他们所有的root命令的话,可以按下面的格式,给单个人添加到sudoers里面。如:

leekooqi All=(root) NOPASSWORD /etc/init.d/tomcat5

这样你就给leekooqi这个用户添加了一个可以操作tomcat5命令的权限,而且不需要password。

ok,到这里,还没有完,最重要的是,你要激活/etc/pam.d/su文件中的下面一条命令:

auth required pam_wheel.so use_uid

当然,用第二种方式的话,还要在这里按照上面的格式加上相对应组名的允许。

/etc/sudoers中命令的格式:

[user,%group] host run_as command

用户或者是用户组(前面要加%,用户不要) 登录地 身份 命令

ich8r/9r/10r raid linux dmraid 无法正确识别

LINUX | Posted by 老沙
10月 06 2009

进入十一以来,天天安系统,但就是无法正确识别ich8r的raid

/dev/sdb: "jmicron" and "isw" formats discovered (using isw)!
Aborted

dmraid 版本用的rc13,和rc15
两个sata用rc13来认, 一个认nvraid,别一个出bug信息
用rc15呢,一个认jmicron_raid,另一个认Aborted
我就日了,上chinaunix发贴,好几天了,也没有结果,出来说话的人多是让我放弃,但那并不是我的风格(我风格是跟丫死磕),经过5天的激战,终于有结果了。
用rc15版本就是fedora11中的,是无论如何也想不出来为什么
后来用Centos5.3,认出来nvraid我想到了raid的残留信息,因为我原来是650i的主板,也用raid
可主板现在不在我手边,无法放在原主板的清除raid信息。于是我就用DM把硬盘清零了,可是再安还是一个样,无果,我又把硬盘lformat了,好慢呀,N小时,结果也是一样无用。我恨呀。
在网上查了无数的raid信息的资料,没有结果,都是些数据恢复公司的广告。再来,发现有一个人在raid信息丢失后,说过一句话,他说raid信息可能是硬盘尾,结果还引来别人骂,说他总是问别人,不用自己试试。有点跑题了。
于是用什么工具可以快速的清零呢,我也不想再来几个小时了,就找到工具光盘,里边有个叫 MHDD的工具,一个是命令行的,在网上一查,还是个高级货呢,怎么用就不细说了,网上有好多教程呢
我通读了一遍,发现在教程里说busy后边有个hpa的标志,说明硬盘切割过了,做hpa只能从硬盘的末尾。就是屏蔽了一部分空间,无论是低格还是清零都是不管用的,再来看看我的硬盘,果然有hpa过
用rhpa查看,发现原来raid主盘最后6个块被hpa了,用nhpa恢复了。

再来安系统ctrl+alt+F2,dmraid -r 还是nvraid我靠,真是不想让人活了。
后来想是不是释放了空间,但还是有信息呢?
再来用erase擦除一下,我分别把两个硬盘的前后5M的空间擦了
再来安系统,dmraid -ay
no raid
哈哈,成功。
进入biso重新开启raid ,ctrl+i组好raid0。顺利安上系统了。来看看速度
再来说一下fedora11用的ext4 的文件系统

[root@main ~]# hdparm -Tt /dev/dm-1

/dev/dm-1:
Timing cached reads: 2792 MB in 2.00 seconds = 1396.23 MB/sec
Timing buffered disk reads: 200 MB in 1.54 seconds = 129.94 MB/sec
[root@main ~]# hdparm -Tt /dev/dm-3

/dev/dm-3:
Timing cached reads: 2706 MB in 2.00 seconds = 1353.56 MB/sec
Timing buffered disk reads: 408 MB in 3.01 seconds = 135.69 MB/sec
[root@main ~]# hdparm -Tt /dev/dm-4

/dev/dm-4:
Timing cached reads: 2806 MB in 2.00 seconds = 1404.04 MB/sec
Timing buffered disk reads: 412 MB in 3.00 seconds = 137.31 MB/sec
[root@main ~]# hdparm -Tt /dev/dm-5

/dev/dm-5:
Timing cached reads: 2974 MB in 2.00 seconds = 1487.27 MB/sec
Timing buffered disk reads: 242 MB in 3.02 seconds = 80.19 MB/sec