摘要:
很多应用需要客户首先进行注册,然后使用用户名、密码进行验证,之前在为一个分布式系统添加认证模块的时候,遇到一个问题,这里进行简要的分析。认证的两种主要形式:1. 单机登录认证:如windows、linux系统用户登录,这种应用的程序代码通常是不公开的,用户要正常的使用系统,必须越过这一障碍。2. 网络登录认证:如QQ、飞信等聊天软件的用户登录,这种应用的代码可以是开源的,因为即使即使代码开源,hacker去掉了客户认证的代码,重新编译运行,服务器发现记录客户端的登录状态为未登录,客户端还是不能继续工作。项目中遇到的问题:客户端通过挂载后,像使用本地文件系统一样使用远程文件系统。登录认证在挂载的 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(252)
评论(0)
推荐(0)
摘要:
对于很多服务来说,在同一个服务器上只能运行一个实例,那么通过什么方法来保证程序同一时刻只有一个实例运行呢?通过编写shell脚本来管理程序的启动、停止是个不错的方法。在启动时,shell脚本会创建进程标识文件(存储正在运行实例的pid)以表明已经有实例在运行,如果文件已存在,则说明已有实例在运行,不需要做任何事;在退出时,shell脚本会删除进程标识文件,表明没有实例运行。shell脚本管理方法在应用程序之上再包了一层,那么能不能直接在程序开始运行时自己判断是否有实例在运行呢,答案是肯定的。原理其实差不多,还是要借助公用资源---文件,当然不仅仅是文件而已,还需要文件锁的支持。大致思路是这样的 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(245)
评论(0)
推荐(0)
摘要:
实现linux登录验证的程序,要考虑两个部分,第一是用户名、密码的输入;第二是用户、密码的验证,关于第二部分的机制已经在http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=94771中讲到。而第一部分的难点则在于如何在输入密码时不回显输入的字符,这就需要更改终端的属性,涉及终端IO的编程,主要用到tcgetattr和setattr两个函数,通过取消终端的ECHO标记,即可禁用终端回显,在密码输入处理之后,要记得恢复终端原来的属性,避免影响到其它的进程。终端IO处理大致过程如下:structtermios 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(711)
评论(0)
推荐(0)
摘要:
在linux系统下创建守护进程的原理及步骤在文章(链接如下)中介绍过。http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28738其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。#include <unistd.h>int daemon(int nochdir, int noclose);1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2.当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3.当 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(512)
评论(0)
推荐(0)
摘要:
本文更正http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28742中出现的几个错误。错误1:对salt的描述;错误2:密码验证方式。花了点时间研究了一下linux的密码认证机制,当系统启动出现login时,用户登录的过程是如何得到验证的。首先linux系统里管理用户及密码的两个重要的文件,/etc/passwd, /etc/shadow。/etc/passwd包含各个用户的信息,linux平台包含七个字段,各个字段间用冒号隔开,分别是:用户名:密码:用户id:组id:用户描述:用户家目录:用户的登录s 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(885)
评论(0)
推荐(0)
摘要:
ldd查看应用程序链接了哪些动态库。 nm列出目标文件中包含的符号信息。size列出各个段的大小及总的大小。strings列出文件中的字符串。readelf读取elf文件的完整结构。objdump导出目标文件的相关信息(elf文件相关工具的源头)。gdb对文件的执行过程进行调试分析,设置断点(b)、单步执行(n)、函数调用追踪(bt)、反汇编(disassemble)。strace跟踪程序中的系统调用及信号处理信息。LD_DEBUG通过设置这个环境变量,可以方便的看到 loader 的加载过程(包括库的加载,符号解析等过程),使用【LD_DEBUG=help 可执行文件路径】可查看使用帮助。L 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(182)
评论(0)
推荐(0)
摘要:
上周在做测试的时候,我的VirtualBox的磁盘文件不幸损坏,不能打开了,又没有做备份,所以只好放弃VB。改用以前用的VMware,结果用了两天除了意想不到的问题,VMware产生的文件居然占据了整个分区,每次都提示系统没有足够的空间,VMware不能启动,分区有40+G,被占满主要是做了多次快照(后来删除了快照,相关的文件没有清理掉,VMware一直卡在那里),额外建立了几个磁盘(配置MD时新建的,并且所有的磁盘的空间都是创建时分配的,而不是动态增长)。在解决问题时误删了一些文件,系统提示找不到启动必须的文件xxx,其实应该删除后来新建的磁盘的,可惜当时有点急,那是已经是周三了,周四有事, 阅读全文
posted @ 2013-04-19 14:09
ydzhang
阅读(297)
评论(0)
推荐(0)
摘要:
2010级文件系统知识培训PPT 祝各位师弟师妹学有所成! 管理员在2009年8月13日编辑了该文章文章。 --> --> 阅读全文
posted @ 2013-04-19 14:08
ydzhang
阅读(151)
评论(0)
推荐(0)
摘要:
MooseFS通过检查缓存的文件是否被其它的客户端修改,来决定缓存是否有效,感觉与我实现的那个版本的DNFS缓存机制一模一样,客户端在判断缓存是否有效时,需要连接元数据服务器进行确认,以下详细的说明在集中情况下对缓存的处理。 场景1:
机器A读取文件X,(X的元数据被加入到机器A的缓存)
机器B读取文件X
此时,机器A欲读取/修改文件X(cache有效,因为文件没有被修改过) 场景2
机器A读... 阅读全文
posted @ 2013-04-19 14:08
ydzhang
阅读(311)
评论(0)
推荐(0)
摘要:
学习分布式文件系统时,曾经download了moosefs的源代码,做了简单的测试,发现moose的实现效率还不错,在阅读器源代码时,发现了其封装了C socket接口,于是把相关的文件保存下来了。昨天闲着没事,想测试一下这个socket接口,在测试udp时,发现服务器接收到数据后,不能正确的向客户端返回信息。 阅读了代码发现问题在udpread函数上,udpread的实现如下: int ud... 阅读全文
posted @ 2013-04-19 14:08
ydzhang
阅读(195)
评论(0)
推荐(0)
浙公网安备 33010602011771号