动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.新手上路:Oracle分析函数学习笔记.
.杜绝安全隐患被忽视的Oracle安全.
.角斗士般的Oracle性能.
.解决oracle10g安装后的中文显示乱.
.如何正确的在对in操作使用变量绑.
.在标识列里插入特定的值.
.Oracle数据库常见问题答疑二.
.安装Oracle后使用的修改表空间的.
.ORACLE常用傻瓜問題1000問(之二).
.关于Oracle存储过程测试.
.访问多个SQL Server数据库.
.Oracle常見問題集(一).
.Oracle的口令管理.
.Oracle9i RAC Archivelog方式修改.
.OO40编程教程.
.Oracle里汉字长度问题.
.Oracle非法数据库对象引起错误及.
.日志分析logmnr使用方法.
.设置 XFree86 激活档 ( .xinitrc.
.如何调试oracle, sql server存储.

Linux Shadow-Password-HOWTO

发表日期:2008-2-9 |



  接下来要做的事情是变更实际码, 我们将变更 auth.c 档。
  
  变更前 auth.c 档 function 为:
  
  
  --------------------------------------------------------------------------------
  
  /*
  * login - Check the user name and passWord against the system
  * password database, and login the user if OK.
  *
  * returns:
  * UPAP_AUTHNAK: Login failed.
  * UPAP_AUTHACK: Login sUCceeded.
  * In either case, msg points to an appropriate message.
  */
  static int
  login(user, passwd, msg, msglen)
  char *user;
  char *passwd;
  char **msg;
  int *msglen;
  {
  struct passwd *pw;
  char *epasswd;
  char *tty;
  
  if ((pw = getpwnam(user)) == NULL) {
  return (UPAP_AUTHNAK);
  }
  /*
  * XXX If no passwd, let them login without one.
  */
  if (pw->pw_passwd == '\0') {
  return (UPAP_AUTHACK);
  }
  
  epasswd = crypt(passwd, pw->pw_passwd);
  if (strcmp(epasswd, pw->pw_passwd)) {
  return (UPAP_AUTHNAK);
  }
  
  syslog(LOG_INFO, "user %s logged in", user);
  
  /*
  * Write a wtmp entry for this user.
  */
  tty = strrchr(devname, '/');
  if (tty == NULL)
  tty = devname;
  else
  tty++;
  logwtmp(tty, user, ""); /* Add wtmp login entry */
  logged_in = TRUE;
  
  return (UPAP_AUTHACK);
  }
  
  
  --------------------------------------------------------------------------------
  
  使用者的密码被放在 pw->pw_passwd,所以我们需新增 getspnam function,这将会把密码放到 spwd->sp_pwdp。
  
  我们将新增 pwauth function 来表示真正的权限。 这将在 shadow 档设定时自动产生第二个权限。
  
  变更为可以支援 shadow 後的 auth.c function:
  
  
  
  --------------------------------------------------------------------------------
  
  /*
  * login - Check the user name and password against the system
  * password database, and login the user if OK.
  *
  * This function has been modified to support the Linux Shadow Password
  * Suite if USE_SHADOW is defined.
  *
  * returns:
  * UPAP_AUTHNAK: Login failed.
  * UPAP_AUTHACK: Login succeeded.
  * In either case, msg points to an appropriate message.
  */
  static int
  login(user, passwd, msg, msglen)
  char *user;
  char *passwd;
  char **msg;
  int *msglen;
  {
  struct passwd *pw;
  char *epasswd;
  char *tty;
  
  #ifdef USE_SHADOW
  struct spwd *spwd;
  struct spwd *getspnam();
  #endif
  
  if ((pw = getpwnam(user)) == NULL) {
  return (UPAP_AUTHNAK);
  }
  
  #ifdef USE_SHADOW
  spwd = getspnam(user);
  if (spwd)
  pw->pw_passwd = spwd->sp-pwdp;
  #endif
  
  /*
  * XXX If no passwd, let NOT them login without one.
  */
  if (pw->pw_passwd == '\0') {
  return (UPAP_AUTHNAK);
  }
  #ifdef HAS_SHADOW
  if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
  && pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
   !valid (passwd, pw)) {
  return (UPAP_AUTHNAK);
  }
  #else
  epasswd = crypt(passwd, pw->pw_passwd);
  if (strcmp(epasswd, pw->pw_passwd)) {
  return (UPAP_AUTHNAK);
  }
  #endif
  
  syslog(LOG_INFO, "user %s logged in", user);
  
  /*
  * Write a wtmp entry for this user.
  */
  tty = strrchr(devname, '/');
  if (tty == NULL)
  tty = devname;
  else
  tty++;
  logwtmp(tty, user, ""); /* Add wtmp login entry */
  logged_in = TRUE;
  
  return (UPAP_AUTHACK);
  }
  
  
  --------------------------------------------------------------------------------
  
  严谨的□例将启发我们在作其他改变的帮助。
原始的版本假如在 /etc/passwd 档没有任何密码,可答应存取传回的 UPAP_AUTHACK 。这是不好的,因为签入的使用是使用一个答应存取 PPP process的帐号,然後检查帐号密码,该帐号密码是由 RAP 、在 /etc/passwd 档的帐号和 /etc/shadow 档的密码供给。
  
  
  所以假如我们设定原本版本对每个使用者,如 ppp 可以在 shell 执行,然後任何人可以获得 ppp 链结透过设定他们对使用者 ppp 的 PAP 和 null 的密码。
  
  
  我们修正 UPAP_AUTHNAK 取代 UPAP_AUTHACK 假如密码栏位是空的。
  
  有趣的是 pppd-2.2.0 有相同的问题。
  
  接下来我们需要变更 Makefile 以便让两件事发生:
  
  USE_SHADOW 必须被重新定义且libshadow.a 需要被新增到链结 process。
  
  
  编辑 Makefile 且新增:
  
  LIBS = -lshadow
  
  然後我们找到这一行:
  
  COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t
  
  然後改变它变成:
  
  COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW
  
  现在执行 make 跟 install.
上一篇:linux显卡的配置(2) 人气:691
下一篇:Linux Shadow-Password-HOWTO 人气:455
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成