电脑技术学习

Linux Shadow-Password-HOWTO - 4. 编译程式

dn001

4.1;解压缩;
在接收套件後第一个步骤就是;unpacking。该套件是;tar;档案格式使用;gzip;压缩,所以首先将该档案移到;/usr/src;,然後输入:;

tar;-xzvf;shadow-current.tar.gz

这将会;unpack;到一个目录:/usr/src/shadow-YYMMDD;


4.2;设定;config.h;档;
第一件事是你需要复制;Makefile;和;config.h;档:;


cd;/usr/src/shadow-YYMMDD
cp;Makefile.linux;Makefile
cp;config.h.linux;config.h


然後你应该留意;config.h;档。;该档案包括某些设定选项的定义。如果你使用;建议;套件,我建议你在第一次设定关掉;group;shadow;support。;

shadowed;group;passwords;预设值是开启的。;在;config.h;档关到这个设定,且改变;#define;SHADOWGRP;变成;#undef;SHADOWGRP。我建议您一开始关掉它们,然後如果你真的需要;group;passwords;和;group;administrators;时你在开启它们和重新编译。;如果你开启它,;你;必须;建立;/etc/gshadow;档。;


开启长密码的选项也不建议使用。;

不要;改变;#undef;AUTOSHADOW;的设定。;

AUTOSHADOW;选项初始设计是用以让;shadow;可以像;function;一样执行。理论上听起来不错,但是没办法正确的运作。;如果你开启这个选项,且这个程式以;root;权限在执行,;它会像;root;权限执行一项呼叫;getpwnam();,然後变更;/etc/passwd;档;(有no-longer-shadowed;密码)。;这类程式包括;chfn;和;chsh。(如果;root;在呼叫;getpwnam();之前使用;chfn;和;chsh,使用者帐号将没有办法真实且有效交易。);


如果你要建立;libc,同样的警告也有效,它有个;SHADOW_COMPAT;作相同的事。;它;不应该被使用!如果你开始从你的;/etc/passwd;档撷取编码密码,这会是个问题。;

如果你正使用比;4.6.27;还高的;libc;版本,你将需要在;config.h;和;Makefile两个档做很多改变。在;config.h;档的编辑和改变:从:;

#define;HAVE_BASENAME

到:;
#undef;HAVE_BASENAME

然後在;Makefile;档的改变:;

SOBJS;=;smain.o;env.o;entry.o;susetup.o;shell.o;
sub.o;mail.o;motd.o;sulog.o;age.o;tz.o;hushed.o

SSRCS;=;smain.c;env.c;entry.c;setup.c;shell.c;
pwent.c;sub.c;mail.c;motd.c;sulog.c;shadow.c;age.c;pwpack.c;rad64.c;
tz.c;hushed.c

SOBJS;=;smain.o;env.o;entry.o;susetup.o;shell.o;
sub.o;mail.o;motd.o;sulog.o;age.o;tz.o;hushed.o;basename.o

SSRCS;=;smain.c;env.c;entry.c;setup.c;shell.c;
pwent.c;sub.c;mail.c;motd.c;sulog.c;shadow.c;age.c;pwpack.c;rad64.c;
tz.c;hushed.c;basename.c

这些包含在;basename.c;程式码的改变均需倍包括在;libc;4.6.27;内。;


4.3;备份原始程式;
在;shadow;suite;要更新时,制作程式备份将是一个很好的点子。在;Slackware;3.0;系统中,这些档案是:;


/bin/su;
/bin/login;
/usr/bin/passwd;
/usr/bin/newgrp;
/usr/bin/chfn;
/usr/bin/chsh;
/usr/bin/id;
这;BETA;套件已经有个;储存;在;Makefile;的目的档,但是因为不同的版本通常将程式放在不同的地方,因此常被人评论。;

你应该备份你的;/etc/passwd;档,但是你要很小心地命名,不然如我你将它放在相同目录,你将无法重写;passwd;命令。;


4.4;执行;make;
你需要以;root;权限签入以执行安装程序.;

执行;make;来编译套件中的执行档:;


make;all

你可能会看到警告语:;rcsid;defined;but;not;used.;这没关系,因为作者使用版本控制套件才会发生。;

标签: linux