1、 hosts.equiv 文件的用途安全
/etc/hosts.equiv 和 $HOME/.rhosts 定义了哪些计算机和用户能够不用提供口令就在本地计算机上执行远程命令,如 rexec,rcp,rlogin 等等。这些不须要提供口令的计算机和用户称为受信任的。网络
当本地计算机收到执行远程命令的请求时,相应的远程命令服务进程,如 rlogind ,首先检查 /etc/hosts.equiv 来确认请求是否来自受信任的计算机和用户。若是这个文件不存在或者虽然存在但不包括相应的计算机和用户,服务进程就会去检查 $HOME/.rhosts 文件。post
/etc/hosts.equiv 的权限必须设置为只有 root 可以写,建议权限为600。若是这个文件被设置为同组或其它用户可写,远程命令服务进程就会忽略它的存在。ui
若是远程命令是由 root 用户发起的,远程命令服务进程会忽略 /etc/hosts.equiv 文件的存在而去直接检查 $HOME/.rhosts 文件。spa
在指定受信任的计算机和用户时要很是当心,由于这有可能会形成安全漏洞。orm
2、 hosts.equiv 文件的格式server
添加对计算机/用户的信任:进程
hostname:信任计算机 hostname 上的全部普通用户ci
hostname username:信任计算机 hostname 上的用户 username
+:信任全部计算机上的全部普通用户
禁止对计算机/用户的信任:
若是计算机名和用户都没有在 /etc/hosts.equiv 中被定义为受信任的,那么它们就是不受信任的。另外,您还能够用如下方法明确地禁止对计算机/用户的信任。
-hostname:不信任计算机 hostname 上的全部用户
hostname -username: 不信任计算机 hostname 上的用户 username
hosts.equiv 与 NIS :
在 /etc/hosts.equiv 中也能够指定是否信任 NIS 网络组(NETGROUP)。
+@netgroup:信任网络组 netgroup 中的全部计算机
-@netgroup:禁止信任网络组 netgroup 中的全部计算机
hostname +@netgroup:信任来自计算机 hostname 的全部网络组 netgroup 的成员用户的请求
hostname -@netgroup:禁止信任来自计算机 hostname 的全部网络组 netgroup 的成员用户的请求
/etc/hosts.equiv 中记录的顺序:
在 /etc/hosts.equiv 文件中,记录的顺序十分重要。远程命令服务进程在检查 /etc/hosts.equiv 文件时会在第一个匹配发现后返回,也就是说,下面这个例子中的禁止信任记录是不起做用的:
hostname hostname -user1
计算机 hostname 上的用户 user1 将可以在不提供口令的状况下在本地计算机上执行远程命令。而下面这个例子可以提供指望中的结果:
hostname -user1 hostname
3、/etc/hosts.equiv示例
1. 容许远程计算机 emerald 和 amethyst 上的全部用户在本地执行远程命令而无须提供口令:
emerald amethyst
2. 容许远程计算机 emerald 上的全部用户和 amethyst 上的用户 greygory 在本地执行远程命令而无须提供口令:
emerald amethyst gregory
3. 容许用户 peter 从任何远程计算机在本地执行远程命令而无须提供口令:
emerald amethyst gregory + peter
4. 容许全部是 century 网络组成员的远程计算机上的全部用户在本地执行远程命令而无须提供口令:
emerald amethyst gregory + peter +@century
5. 容许全部在计算机 citrine 上又是 engineers 网络组成员的用户在本地执行远程命令而无须提供口令:
emerald amethyst gregory + peter +@century citrine +@engineers
6. 容许全部是 servers 网络组成员的远程计算机上的全部属于 sysadmins 网络组的用户在本地执行远程命令而无须提供口令:
emerald amethyst gregory + peter +@century citrine +@engineers +@server +@sysadmins