阅 读 文 章

Unix编程常见问题解答2

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(hbczjzc) | 时间:2007-05-27 | 浏览:人次 ]


4.2.2 我怎样通过用户号得到阴影口令文件中的口令? 
----------------------------------------------- 

我的系统使用一组getsp*函数获得重要用户信息的. 然而, 我没有****getspuid()', 
只有****getspnam()'. 我怎样做才能通过用户号获得用户信息呢? 

变通方法是相对非常容易的。下面的函数可以直接放入你个人的应用函数库: 

#include <stdlib.h>; 
#include <stdio.h>; 

#include <pwd.h>; 
#include <shadow.h>; 

struct spwd *getspuid(uid_t pw_uid) 

struct spwd *shadow; 
struct passwd *ppasswd; 

if( ((ppasswd = getpwuid(pw_uid)) == NULL) 
|| ((shadow = getspnam(ppasswd->;pw_name)) == NULL)) 
return NULL; 

return shadow; 


现在的问题是, 有些系统在阴影文件中并不保存用户号(uid)以及其它的信息。 

4.2.3 我怎样核对一个用户的口令? 
------------------------------- 

一个基本的问题是, 存在各种各样的认证系统, 所以口令也就并不总是象它们看上去 
那样。 在传统的系统中, 使用UNIX风格的加密算法,加密算法是不同的,有些系统使 
用DES(译者注:DES:Data Encryption Standard,为NIST[National Institute of 
Standard and Technology]确认的标准加密算法,最新消息表明,NIST将采用一种新 
的加密标准Rijndael逐步取代DES)算法,其它的系统, 如FreeBSD国际版使用MD5(译者 
注:MD5是当今最为广泛使用的单项散列算法,由Ron Rivest发明,详细资料参见RFC 1321 
http://www.faqs.org/rfcs/rfc1321.html)算法。 

最常用的方法是使用一种单项加密算法(译者注:即单项散列[Hash]算法)。输入的 
明文口令被加密,然后与文件中存放的加密口令比较。怎样加密的详细信息可以 
查看****crypt()'的手册页, 这里有一个通常做法的版本: 

/* 输入明文口令和加密口令, 检查是否匹配, 
* 成功返回 1, 其它情况返回 0。 
*/ 

int check_pass(const char *plainpw, const char *cryptpw) 

return strcmp(crypt(plainpw,cryptpw), cryptpw) == 0; 


这个函数之所以能工作是因为加密函数使用的添加(salt)字串存放在加密口令字串的前部。 

*警告:* 在一些系统中, 口令加密是使用一种‘crypt()’的变体,即‘bigcrypt()’函数。 


5. 编程杂技 
*********** 

5.1 我怎样使用通配字符比较字符串? 
================================== 

对于它的回答依赖于你所谓‘通配字符’一词的确切含义。 

有两种很不相同的概念被认定为‘通配字符’。它们是: 

*文件名通配模式*(filename patterns) 
这是shell用来进行文件名匹配替换的(expansion)(或称为‘globbing’) 

*正则表达式* 
这是供编辑器用的,比如‘grep’,等等。它是用来匹配正文,而它们正常 
情况下不应用于文件名。 
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 常见 编程 if 一个 amp 程序 进程 函数 使用 NULL 文件

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.