magnet:xt=urn:btih:74119A391E26FD73592D96FE39A8B

magnet:xt=urn:btih:74119A391E26FD73592D96FE39A8B,第1张

这个是磁力链接,你辅助一下,打开迅雷就会自动识别下载了。

磁力链接(Magnet URI scheme),是对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的统一资源定位符(URL)不同,磁力链接是基于元数据(metadata)文件内容,属于统一资源名称(URN)。

也就是说,磁力链接不基于文档的IP地址或定位符,而是在分布式数据库中,通过散列函数值来识别、搜索来下载文档。

因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的对等网络。举例来说,一个常见的磁力链接形式为“magnet:xt=urn:btih:”。

这个标准的草稿出现于2002年,是为了对eDonkey2000的“ed2k:”和Freenet的“freenet:”两个URI格式进行“厂商与项目中立化”(vendor- and project-neutral generalization)而制定的。

同时这个标准也尝试紧密地跟进IETF官方的URI标准。

磁力链接的特点:

众所周知,BT下载速度不够稳定,当中断时则无法完整下载。

磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 10时代已经过去,BT 20 时代已经到来。

ORACLE客户端连服务器注意事项

1 通SQLNET协议ORACLE客户端连服务器般需要配置sqlnetoratnsnamesora,initora

默认目录$ORACLE_HOME/network/admin 目录

设置环境变量TNS_ADMIN指向想用sqlnetoratnsnamesora目录

例:

TNS_ADMIN=/home/oracle/config/901;export TNS_ADMIN

sqlnetora文件决定找数据库服务器别名式

默认参数

参数SQLNETAUTHENTICATION_SERVICES= (NONE,NTS)表明用户连接Oracle服务器使用哪种验证式NONE表示Oracle身份验证NTS表示 *** 作系统身份验证两种式并用

ORA_DBA组域用户本用户需要Oracle用户名密码登录Oracle且该组用户登录数据库都具SYSDBA权限(实 例建立类似组ORA_SID_DBA其SID指实例名)同理:ORA_OPER组员具SYSOPER角色权限

登录式 sqlplus / as sysdba

或者sqlplus nolog,SQL>connect / as sysdba

NAMESDEFAULT_DOMAIN = WORLD

NAMESDIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)

表明解析客户端连接所用主机字符串式

TNSNAMES表示采用TNSNAMESORA文件解析;

ONAMES表示使用自名称服务器(Oracle Name Server)解析目前Oracle建议使用轻量目录访问协议LDAP取代ONAMES;

HOSTNAME表示使用host文件DNSNIS等解析;

ORACLE客户端服务器默认域名需要用#号注释第行

#NAMESDEFAULT_DOMAIN = WORLD

使起作用

NAMESDIRECTORY_PATH指定找服务器别名顺序 (本tnsnamesora文件, 命名服务器, 主机名式)

服务器sqlnetora设置检查客户端否alive间间隔

sqlnetexpire_time = 10

initoraRemote_Login_Passwordfile身份验证影响

三选值:

NONE:默认值指示Oracle系统使用密码文件通 *** 作系统进行身份验证特权用户拥SYSORASYSOPER权限EXCLUSIVE:

1表示数据库实例使用密码文件

2允许SYSORASYSOPER权限赋值给SYS外其用户

SHARED:

1表示数据库实例使用密码文件

2允许SYSORASYSOPER权限赋值给SYS外其用户

所要 *** 作系统身份登录Remote_Login_Passwordfile应该设置NONE

登录用户ORA_DBA组ORA_OPER组员登录数据库需要Oracle创建前 *** 作系统用户相同用户名前用户域用 户则名称:domainname\yourname,本计算机用户则名称:computername\yourname

创建:

create "domainname\yourname" identified externally;

*** 作系统修改HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0面添加AUTH_PREFIX_DOMAIN值设FALSE,创建Oracle用户忽略 掉域名

种式initora参数影响数据库何匹配windows用户Oracle用户os_authent_prefix = ""

缺省空Oracle8i前该参数使用OPS$作用户名前缀(Oracle用户名度限制30字符)

tnsnamesora文件写数据库服务器别名详细内容几种写:

# 般写

APPDB =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192168035)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = appdb)

)

)

# 明确标明用dedicated式连接数据库

APPD=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192168035)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=appdb)

(SERVER=DEDICATED)))

# listener端口做均衡负载式连接数据库

APPS =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192168035)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192168035)(PORT = 1856))

)

(CONNECT_DATA =

(SERVICE_NAME = appdb)

)

)

# 注意:数据库服务器用MTS客户端程序需要用database link明确指明客户端用dedicated直连式,

# 遇跟布式环境关ORACLE BUG

# 般情况数据库服务器用直接连接些除非实数据库连接数接近1000

2 /etc/hosts (UNIX)

或者windows\hosts(WIN98) winnt\system32\drivers\etc\hosts (WIN2000)

客户端需要写入数据库服务器IP址主机名应关系

127001 localhost

192168035 oracledb oracledb

192168045 tomcat tomcat

2028410193 bj_db bj_db

些候我配置第步tnsping 数据库服务器别名显示功

sqlplus username/password@servicename通,jdbc thin link 通候,

定要忘客户端做步原能DNS服务器没设置服务器IP址主机名应关系

同私IPInternet公IP私IP写前面公IP写面

编辑前留备份增加行用复制粘贴避免编辑hosts空格或者tab字符错误

3 UNIXORACLE数据库环境OS客户端需要配置面两环境变量

ORACLE_SID=appdb;export ORACLE_SID

TWO_TASK=appdb;export TWO_TASK

指定默认目标数据库

享:

1

喜欢

0

赠金笔

阅读(2478)┊ 评论 (0)┊ 收藏(0) ┊禁止转载 ┊ 喜欢▼ ┊打印┊举报

已投稿:

排行榜

前篇:Delphi Id>

NIS是基于RPC的,是由一个服务器、一个客户端库以及几个管理工具组成。起初,NIS被称作黄页(Yellow Pages),或YP,现在仍然使用这个名称来非正式地指这项服务。另一方面,Yellow Pages是英国电信的商标,英国电信一直要求Sun更换这个名字。随着事态的发展,某些名称已与人们分不开了,所以YP一直以与NIS相关命令的前缀形式继续存在着,比如象ypserv、ypbind等等。

今天,几乎所有的UNX都包括NIS,而且甚至有它的免费实现版本。一个是来自BSD的Net-2发行版,源自于Sun捐赠的公众域参考实现。该版的客户库代码已经存在于GNU的libc中很长时间了,而管理程序只是在最近才由Swen Thümmler [1] 移植到Linux上。在这个参考实现中漏掉了一个NIS服务器程序。Tobias Reber已经编制出了另外一个NIS软件包,其中包括所有的工具和一个服务器;该软件包称作yps。[2]

目前,一个完全重写的称为NYS的NIS代码已由Peter Eriksson [3]编制出来,它支持普通的NIS和Sun的经过许多修正的NIS+。NYS不仅提供了一个NIS工具集和一个服务器,而且还增加了一个全新的库函数集,这个库函数集可能最终会被加入到标准libc中。这包括替换目前使用hostconf的主机名解析的一个新设置方案。这些函数的特性将在下面讨论。

这一章将集中讨论NYS而非另外两个软件包,对于这两个软件包我将称它们为“传统的”NIS代码。如果你确实要想运行任何这些软件包的话,本章中的说明也许已经足够也许还不够。要获取另外的信息,请取得一本有关NIS的标准(权威)书本,比如象Hal Stern的NFS和NIS(见[Stern92])。

目前,NYS仍处于开发阶段,因此标准的Linux工具如网络程序或login程序还没有注意到NYS的配置方案。只有到NYS合并进主流libc中时,如果你想使得所有这些执行程序使用NYS时,你才需要重新编译它们。在任何这些应用程序的Makefiles中,在libc之前,指定-lnsl作为 linker的最后一个选项。这将有关函数从libnsl—NYS库中连接过来,取代从标准C库的连接。

101 理解NIS

NIS在所谓的包含键-值对的maps中保存数据库信息。Maps被存储于运行NIS服务器的中央主机中,从该主机中,客户可以通过各种RPC调用检索信息。最频繁地,maps是存于DBM文件中的。[4]

Maps本身是从主要文本文件(比如/etc/hosts或/etc/passwd)中生成的。对于某些文件,会生成几个maps,每个搜寻键类型对应一个。例如,你可以为主机名和IP地址搜查hosts文件。相应地,从中会生成两个NIS maps,分别称为hostsbyname和hostsbyaddr。表101列出了通用maps和它们生成的文件。

Master File Map(s)

/etc/hosts

/etc/networks

/etc/passwd

/etc/group

/etc/services

/etc/rpc

/etc/protocols

/usr/lib/aliases Hostsbyname hostsbyaddr

Networksbyname networksbyaddr

Passwdbyname passwdbyuid

Groupbyname groupbygid

Servicesbyname servicesbynumber

Rpcbyname rpcbynumber

Protocolsbyname protocolsbynumber

Mailaliases

表101 一些标准的NIS maps以及相应的文件。

在某些NIS软件包或其它软件中,还有一些你可能会觉得有用的别的文件和maps。这些文件和maps可能含有没在这本书中讨论过的应用程序的信息,比如可能用于某些BOOTP服务器中的bootparams maps,或者在Linux中目前不含有任何函数的文件(就象ethersbyname和ethersbyaddr maps)。

对于某些maps,人们通常使用绰号(nicknames),它们很短因而易于键入。要想获得一个你的NIS工具能够理解的绰号的完整列表,运行下面的命令:

$ ypcat –x

NIS map nickname translation table:

“passwd” -> “passwdbyname”

“group” -> “groupbyname”

“networks” -> “networksbyaddr”

“hosts” -> “hostsbyname”

“protocols” -> “protocolsbynumber”

“services” -> “servicesbyname”

“aliases” -> “mailaliases”

“ethers” -> “ethersbyname”

“rpc” -> “rpcbynumber”

“netmasks” -> “netmasksbyaddr”

“publickey” -> “publickeybyname”

“netid” -> “netidbyname”

“passwdadjunct” -> “passwdadjunctbyname”

“groupadjunct” -> “groupadjunctbyname”

“timezone” -> “timezonebyname”

NIS服务器传统地称为ypserv。对于一个中等大小的网络来说,单个服务器通常就足够了;大型的网络可能需要在不同的网段以及不同的机器上运行几个服务器,以减轻服务器机器和路由器的负荷。通过将这些服务器之一作为主服务器(master server),其它的服务器作为次服务器(slave servers),使得这些服务器同步。Maps将只在主服务器上建立。从主服务器上将它们分发到所有次服务器上。

你可能已经注意到,我们一直很含糊地论及“网络”;当然引用这样一个网络的NIS存在着与众不同的概念,也即通过NIS共享它们部分系统配置数据的所有主机的一个集合:NIS域。不幸的是,NIS域与我们在DNS中遇到的域绝对没有一点共同之处。为了在本章中避免含糊不清的情况,我将总是指出我说的哪一类型的域。

NIS域只具有纯粹的管理功能。对于用户来说它们主要是不可见的,除了在域中所有机器之间口令的共享。因此,给NIS域取的名字仅与管理员有关。通常,可以使用任何名字,只要该名字与你的本地网络上的其它NIS域名不同就行。例如,虚拟酿酒厂的管理员可以选择建立两个NIS域,一个是给酿酒厂本身用的,另一个是个葡萄酒厂的,她分别将其命名为brewery和winery。另一个很普遍的方案是简单地用DNS域名也作为NIS的域名。为了设置和显示你的主机的NIS域名,你可以使用dommainname命令。当不加任何参数调用时,它打印出当前NIS域名;如要设置这个域名的话,你必须成为超级用户并键入:

# domainname brewery

NIS域决定了一个应用程序将查询哪个NIS服务器。例如,在葡萄酒厂(Winery)的主机上的login程序(当然)将只向葡萄酒厂的NIS服务器(或者是它们其中之一,如果存在多个服务器的话)查询用户的口令信息;而酿酒厂主机上的应用程序将只查询酿酒厂的服务器。

现在还有一个疑点要解决,也即一个客户如何知道要连接到哪一台服务器上去。最简单的途径是有一个配置文件,它给出了要在其上查找服务器的主机名。然而,这个办法非常不灵活,因为它不允许客户依据这些服务器存在与否使用不同的服务器(当然是指从同一个域)。因此,传统的NIS实现依赖于一个称作ypbind 的特殊后台程序在它们的NIS域中来侦测一个适当的NIS服务器。在能够执行任何NIS查询之前,任何应用程序首先要从ypbind找出要使用哪个服务器。

ypbind通过向本地IP网络广播来探测服务器;第一个响应的服务器假设基本上是最快的一个并将用于随后的NIS查询。在某个间隔时间过去以后,或者如果服务器不工作了,ypbind将再次探测运行着的服务器。

现在,关于动态绑定的争论点是你很少需要它,并且它会带来安全方面的问题:ypbind盲目地相信任何应答者,而这个应答者可能会是一个谦逊的NIS服务器也可能是一个怀有恶意的入侵者。不用说如果你在NIS上管理你的口令数据库的话,这将变成特别麻烦的事。为了防范这个问题,NYS缺省地不使用 ypbind,而是从一个配置文件中取得服务器的主机名。

102 NIS与NIS+

NIS和NIS+除了在名字上和有共同的目标以外,很少有相同之处。NIS+是用一个完全不同的方法构成的。它使用一个类似于DNS的分级名字空间,而不是一个平面的名字空间和松散脱节的NIS域。它使用一个由行和列组成的所谓的表(tables)而不是maps,在NIS+数据库中表的每一行表示一个对象,而列表示NIS+所知所关心的对象的那些属性。一个给定的NIS+域的每个表由那些它们的父域组成。另外,表中的一个条目可以包含到另一个表的链接。这些特性使得用许多方法构造信息成为可能。

传统的NIS的RPC版本号是2,而NIS+的是版本3。

NIS+至今似乎还没有被广泛地使用,而且我实际上对它也知道不多。(唔,几乎一窍不通)。由于这个原因,这里我们将不涉及它了。如果你对它感兴趣并想多学一点的话,请参阅Sun的NIS+管理手册([NISPlus])。

103 客户边的NIS

如果你熟悉编制或移植网络应用程序的话,你将会注意到上面所列出的许多NIS maps与C库中的库函数相对应。例如,要获得passwd信息,你通常使用getpwnam(3)和getpwuid(3)函数,它们分别返回与给定的用户名或数值用户id相对应的帐号信息。在通常的环境下,这些函数将在标准文件(比如/etc/passwd)中执行请求的查找。

然而,这些函数的基于NIS(NIS-aware)的实现将更改这种行为,并且会启用一个RPC调用让NIS服务器查询用户名或id。对于应用程序来说这个 *** 作是完全透明的。这个函数可以将NIS map“附加”或“替换”掉原始的文件。当然,这并没有对文件进行实际的修改,它只是让应用程序看上去好象该文件已经被替换或附加上去了。

对于传统的NIS实现来讲,对于那些maps替换掉以及那些被添加到原始信息中,曾有某些惯例。有些maps(比如passwd maps)需要对passwd文件进行杂凑地修改,当做错时,就会打开安全方面的缺口。为了避免这个缺陷,NYS常规的配置方案,该方案确定了一个特定的客户函数集是否使用原始文件、NIS、NIS+,并且以什么次序使用。这将在本章后续小节中加以讨论。

104 运行一个NIS服务器

在这么多理论方面的喋喋不休之后,现在开始动手做实际的配置工作。在本节中,我们将讨论NIS服务器的配置。如果在你的网络上已经有一个NIS服务器在运行,你就不必设置你自己的服务器了;在这种情况下,你可以安全地跳过本节。

注意,如果你只是准备对服务器做试验,请确信你没有设置一个已经在你网络上使用的NIS域名。因为这会使整个网络服务瘫痪并使得许多人不高兴和恼怒。

对于Linux目前有两个现存的免费NIS服务器,一个包含在Tobias Reber的yps软件包中,另一个在Peter Eriksson的ypserv软件包中。至于你运行哪一个是无关紧要的,也不管你使用NYS还是目前在libc中的标准NIS客户代码。在写作本书时,yps中的NIS次服务器处理的代码似乎更完善一些。所以如果你要涉及到次要服务器的话,yps可能是一个更好的选择。

当在/usr/sbin中安装好服务器程序(ypserv)以后,你应该建立一个目录,用于存放你的服务器分发的map文件。当为brewery域设置好一个NIS域时,maps将存于/var/yp/brewery中。服务器通过检测是否存在一个map目录来确定它是否在为一个特定的NIS域服务。如果你对某些NIS域禁用了服务,请确信同时也删除那个目录。

Maps通常储存于DBM文件中以加速查询。它们是用一个称为makedbm(对于Tobias的服务器)或dbmload(对于Peter的服务器)的程序从主文件中创建的。它们是不可互换的。将主文件转换成dbmload可分析的形式通常需要一些awk或sed技巧,这对于录入有些乏味并且难于记忆。因此,Perter Eriksson的ypserv软件包含有一个Makefile(称为ypMakefile),它将为你做所有这些工作。你应该将它作为Makefile 安装在你的map目录中,并且编辑它,以反映你要分发的maps。在文件的头部,你会发现all目标,它列出了ypserv将要提供的服务。缺省地,该行看上去象这样:

all: ethers hosts networks protocols rpc services passwd group netid

例如,如果你不想生成ethersbyname和ethersbyaddr maps,只须简单地从这条规则中去掉ethers先决条件。为了测试你的设置,开始只使用一二个maps,比如services maps,就已经足够了。

在map的目录里,在编辑好Makefile以后,键入“make”。这将自动地生成并安装maps。你必须确信每当你改变了主文件之后,一定要更新maps,否则所做的改变对网络仍然是不可见的。

下一节解释如何配置NIS客户代码。如果你的安装设置不工作的话,你应该查出有没有任何请求到达你的服务器。如果你对NYS服务器指定-D命令行标志,它将在控制台上打印出有关所有进入的NIS查询的调试信息,并且返回结果。这些将给你一个提示来确定问题到底出在哪里。Tobias的服务器没有这个选项。

105 使用NYS设置一个NIS客户

在本章的余下部分,我们将讨论NIS客户的配置。

你的第一步应该是告知NYS对于NIS服务使用哪个服务器,并在/etc/ypconf配置文件中设置好。对于在葡萄酒厂(Winery)网络上一台主机上的简单样本文件看上去象这样:

# ypconf – YP configuration for NYS library

#

domainname winery

server vbardolino

第一条语句告诉所有NIS客户,他们属于winery NIS域。如果你省略这一行,NYS将使用你通过domainname命令指派给你系统的域名。server语句指定所使用的NIS服务器。当然,与vbardolino相应的IP地址必须在hosts文件中设置;另外,你也可以在server语句中使用IP地址本身。

在上面所示的表单中,server命令告诉NYS使用指定的服务器而不管目前的NIS域是什么。然而,如果你频繁地在不同的NIS域中移动你的机器的话,你可能想要在ypconf文件中保存几个域的信息。你可以通过在server语句中增加NIS域名获得几个NIS域的服务器的信息。例如,你可以为一个便携机改变上面样本文件成这样:

# ypconf – YP configuration for NYS library

#

server vbardolino winery

server vstout brewery

这允许你在系统引导时通过domainname命令设置期望的NIS域来在两个域的任何一个域中使用便携机。

在创建了这个基本的配置文件并确信它是可读的以后,你应该运行的第一次测试来检查你是否能连接到你的服务器上。确信选择你的服务器分发的任何map,如 hostsbyname,并试着使用ypcat工具来检索它。ypcat,就象所有其它的NIS管理工具一样,应该存在于/usr/sbin中。

# ypcat hostsbyname

1917222 vbeaujolais vbeaujolaislinuslxnetorg

1917223 vbardolino vbardolinolinuslxnetorg

1917211 vlager vlagerlinuslxnetorg

1917221 vlager vlagerlinuslxnetorg

1917212 vstout vstoutlinuslxnetorg

1917213 vale valelinuslxnetorg

1917224 vchianti vchiantilinuslxnetorg

你所得到的输出应该与上面显示的相象。如果你得到了一条错误信息指出“Can’t bind to server which serves domain”或者某些类似的信息,那么或者是你设置的NIS域名在ypconf中没有匹配的服务器,或者是由于某些原因服务器找不到。在后一种情况下,请确信ping到那个主机产生正确的结果,并且它确实正在运行一个NIS服务器。你可以使用rpcinfo来验证后者,它将生成以下输出:

# rpcinfo –u serverhost ypserv

program 100004 version 2 ready and waiting

106 选择正确的maps

在确信能够与NIS服务器联系之后,你必须决定要用NIS maps替换或添加哪个配置文件。一般地,你将会对主机和口令查找函数使用NIS maps。前者对于没有使用BIND时特别有用。后者允许所有用户在NIS域的任何系统上登录进他们的帐号;这通常要求通过NFS在所有的主机之间共享一个中央/home目录。这将在107节中详细讨论。其它的maps,如同servicesbyname,并没有如此有戏剧性的效能,但能为你省去某些编辑工作如果你安装了任何网络应用程序而该应用程序使用了一个不在标准services文件中的服务名。

通常,对于一个查找函数何时使用本地文件、何时询问NIS服务器,你会想有某些自由的选择。NYS允许你配置函数访问这些服务的顺序。这是通过/etc/nsswitchconf文件来控制的,该文件名是指名称服务交换(Name Service Switch),当然其并不限制于名称服务。对于NYS支持的任何数据查找函数,它都包含指定所用服务的一行。

服务的正确顺序是与数据的类型有关的。并无必要让servicesbyname的map一定要含有与本地services文件中不同的条目;它可以包含更多的条目。所以,一个好的选择可以是首先查询本地文件,并且只有当服务名称没有找到时才查找NIS。另一方面,主机名信息可能会非常频繁地改变,所以 DNS或NIS服务器应该总是有非常正确的信息,而本地的hosts文件只作为在DNS和NIS不可用时的一个备份而已。在这种情况下,你可能想最后查询本地文件。

下面的例子显示出了如何以上面描述的方式配置gethostbyname(2)、gethostbyaddr(2)和getservbyname(2)函数。它们将依次试用列出的服务;如果一个查找成功,结果就返回,否则试用下一个服务。

# small sample /etc/nsswitchconf

#

hosts: nis dns files

services: files nis

可以在nsswitchconf文件中有一个条目的完整服务的列表如下面所示。实际被查询的maps、文件、服务器和对象依赖于条目名。

nisplus或nis+

对这个域使用NIS+服务器。服务器的位置从/etc/nisconf文件中获得。

nis 使用这个域的当前NIS服务器。被查询的服务器的位置在ypconf文件中设置,见前节所示。对于hosts条目,要查询hostsbyname和hostsbyaddr maps。

dns 使用DNS名字服务器。这个服务类型只对hosts条目有用。要被检索的名字服务器仍然由标准resolvconf文件确定。

files 使用本地文件,比如对于hosts条目使用/etc/hosts文件。

dbm 从位于/var/dbm内的DBM文件中查找信息。文件所使用的名字与NIS map相对应。

目前,NYS支持下面这些nsswitchconf条目:hosts、networks、passwd、group、shadow、gshadow、services、protocols、rpc和ethers。以后还会增加更多的条目。

图101显示了一个更完整的例子,它引入了nsswitchconf的另一个特性:hosts条目中的[NOTFOUND=return]关键字通知 NYS,如果在NIS或DNS数据库中没有找到所要的项就返回。也即,只有在向NIS和DNS服务器的呼叫由于某些其它原因失败时,NYS才将继续搜寻本地文件。因此,本地文件只在启动引导期间使用并且当NIS服务器关闭时起一个备份的作用。

# /etc/nsswitchconf

#

hosts: nis dns [NOTFOUND=return] files

networks: nis [NOTFOUND=return] files

services: files nis

protocols: files nis

rpc: files nis

图101 nsswitchconf样本文件。

107 使用passwd和group Maps

NIS的一个主要应用是在一个NIS域中的所有主机上同步用户以及帐目信息。关于这方面,你通常只保存了一个小的本地/etc/passwd文件,对于这个文件,从NIS maps获得的站点范围的信息被添加了进去。然而,只是简单地在nsswitchconf中为这个服务启用NIS查找还不很够。

当引用NIS描述的口令信息时,你必须首先确信在你本地passwd文件中任何用户的数值用户id与NIS服务器的用户id匹配。同样对于其它目的你也会需要这样的,比如从你的网络中其它主机上加载NFS卷时。

如果/etc/passwd或/etc/group中的任何数值id与maps中的相偏离,你必须为属于那个用户的所有文件调整文件的所有权。首先你必须将passwd和group中的uid和gid改成一个新值;然后找出属于刚改变的用户的所有文件,最后改变这些文件的所有权。假设news曾有一个id 为9,而okir有一个id为103,它们将被改成其它值;那么你可以发出以下的命令:

# find / -uid 9 –print >/tmp/uid9

# find / -uid 103 –print >/tmp/uid103

# cat /tmp/uid9 | xargs chown news

# cat /tmp/uid103 | xargs chown okir

必须针对新安装的passwd文件执行这些命令,并且在改变任何文件的所有权之前收集所有文件的名字,这点很重要。为了更新文件的组所有权,你将使用一个类似的命令。

在做完这些工作之后,你系统上的数值uid和gid将与你的NIS域中所有其它主机上的相匹配。下一步将是在nsswitchconf中增加配置行,它为用户和组信息启用NIS查找:

# /etc/nsswitchconf – passwd and group treatment

passwd: nis files

group: nis files

这使得在一个用户试图登录时,login命令和所有其它类似命令首先查询NIS maps,如果这个查找失败时,再返回使用本地文件。一般来讲,你将从你的本地文件中删除所有的用户,而只留下root和象mail一样的通用帐目。这是因为某些至关重要的系统任务可能需要将uid映射到用户名上或者反之。例如,管理用的cron作业可能会执行su命令来临时变成news,或者UUCP子系统可能要邮寄一个状态报告。如果news和uucp在本地passwd文件中没有条目了,那么在NIS不能使用期间这些作业将糟糕地失败。

这里有两个大告戒:一方面,上面所描述的设置在这里只适应于没有使用影子(shadow)口令的登录状况,象那些包括在util-linux软件包中的。与NIS一起使用影子口令的复杂问题将在下面论及。另一方面,登录命令并不是仅有的访问passwd文件的命令—请看许多人几乎一直使用的ls命令。每当进行一次长列表时,ls将显示一个文件的用户和组的宿主的符号名;也即,对于它遇到的每个uid和gid,它就要查询NIS服务器一次。如果你的本地网络受到阻塞时将严重地拖延进行的工作,或者更糟糕的是,当NIS服务器不在同一个物理网络上时,数据报还必须通过路由器传输。

事情还没结束。想象以下如果一个用户想要更改她的口令时会发生什么情况。通常,她会执行passwd,它将读入新的口令并更新本地passwd文件。对于 NIS来说,这是不可能的,因为这个文件已不再存在于本地了,但是每当用户想要改变他们的口令时就让他们登录进NIS也不是个选择。因此,NIS提供了一个对passwd的混入替换称为yppasswd,它用来在目前的NIS中做类似的工作。为了改变服务器主机上的口令,它通过RPC联系那个主机上的 yppasswdd后台程序,并向它提供更新过的口令信息。通常,你通过象这样做在常规程序上安装yppasswd:

# cd /bin

# mv passwd passwdold

# ln yppasswd passwd

与此同时你必须在服务器上安装rpcyppasswdd并从rcinet2中启动它。这将对你的用户有效地隐藏NIS所带来的任何扭曲。

108 使用支持影子(shadow)的NIS

至今还没有对使用影子登录程序组的站点的NIS支持。John F Haugh,影子程序组的作者,最近往compsourcesmisc发布了一个受GNU库的GPL保护的影子库函数的一个版本。它对NIS已经有了一些支持,但还不完整,并且这些函数还没有加入到标准C库中。另一方面来讲,通过NIS之类公布来自于/etc/shadow中的信息是与shadow组件的目的相违背的。

尽管NYS口令查找函数不使用shadowbyname map或任何这类map,NYS还是支持透明地使用一个本地/etc/shadow文件的。当getpwnam的NYS实现被调用来查找与给定的登录名相关的信息时,nsswitchconf中的passwd条目所指定的设施被检索。nis服务将简单地在NIS服务器的passwdbyname map中查找这个名字。而files服务将检查/etc/shadow是否存在,并且如果存在的话,就试着打开它。如果不存在的话,或者如果用户没有 root特权的话,它就返回到只在/etc/passwd中查找用户信息的传统的处理方法中。然而,如果shadow文件存在,并且能被打开的话,NYS 将从shadow中抽取用户的口令。getpwuid 函数也是这样实现的。在这种方式下,用NYS编译的执行文件将透明地处理本地影子组件的安装。

109 使用传统的NIS代码

如果你使用目前在标准C库中的客户代码的话,那么配置一个NIS客户就稍微有些不同。一方面,它使用一个ypbind后台程序(daemon)来广播查询运行着的服务器而不是从一个配置文件中取得(服务器)信息的。因此,你必须确信在启动期间开始运行ypbind。它必须在NIS域已被设置好并且RPC portmapper已启动后才被调用。此时,上面所示的调用ypcat进行对服务器测试才能工作。

最近,有许多有关NIS出错报告(bug reports),出错信息说“clntudp_create: RPC: portmapper failure – RPC: unable to receive”。这是由于对ypbind与库函数有关绑定信息的通信(沟通)方式的不兼容的改动。取得最新有关NIS工具的最新源程序并重新编译之可以解决这个问题。[5]

同样,传统的NIS确定是否要和如何将NIS信息与本地文件中的信息合并的方法与NYS中所使用的方法是有偏差的。例如,为了使用NIS口令maps,你必须在/etc/passwd map中包含下列行:

+::O:O:::

这标记出口令查找函数“插入”NIS maps的地方。往/etc/group中插入类似的一行(去掉最后两个冒号)会对group maps做出同样的事。为了使用NIS分发的hosts maps,只要改动hostconf文件中的order一行。例如,如果你要使用NIS、DNS以及/etc/hosts文件(以这个顺序),你必须将这行改成

order yp bind hosts

目前,传统的NIS实现不支持任何其它的maps。

以上就是关于magnet:xt=urn:btih:74119A391E26FD73592D96FE39A8B全部的内容,包括:magnet:xt=urn:btih:74119A391E26FD73592D96FE39A8B、如何使用PL/SQL 11.0连接远程Oracle12c服务器、酒厂管理信息系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9351024.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存