pbrun
実行時になぜこれが起こるのですか?
$ pbrun ls
You are NOT allowed to use pbrun -h <remotehost> ls.
Please try again without -h option.
Host: xxxx
Submithost: xxxx.abcd.xyz.com
pbrun7.5.0-12[404]: Request rejected by pbmasterd on server1234.abcd.yyyy.com.
lpshut
実際、lpadmin
などを使用してプリンタ関連のコマンドを実行しようとしていますpbrun
。
ただし、上記のように正確なエラーが発生します。
答え1
これは、送信ホストとpbrunを実行しているマスターホスト間の名前解決の問題です。
"clienthost"変数の場合、pbrunは最初にホスト名(つまりホスト名コマンド)を取得し、次にpbrunは返されたホスト名のIPアドレスを取得し、最後にpbrunは送信されたホストのIPアドレスを逆に解析します。 clienthost"変数を入力します。これで結果。 (順方向と逆方向の名前解決が重要です)
-hがpbrunで使用されていない場合、「host」変数は「clienthost」と同じです。
"host"変数は、-hスイッチを使用してpbrunに渡される値です。 runhost の値がポリシーに明示的に設定されていない場合、その値はホストから取得されます。
Submithostは、IPパケットヘッダーの送信元IPアドレスから取得したIPアドレスに基づいて、masterhostから逆に解決されたホスト名です。
送信するホストでは、ホストはそのIPへのgetentシステムコールから返された短い名前に設定されます。
Masterhost では、サブミットホストは、送信ホストの送信元 IP を取得するために getent システムコールによって FQDN が返されるため、FQDN に設定されます。
これは、サブミットホストが標準名として短い名前を使用して/etc/hostsファイルを介して解決し、マスターホストがDNS解決を実行してFQDNを返すためです。
この問題は、名前解決の変更またはポリシーの変更によって解決される可能性があります。
名前解決は、送信ホストの/etc/hostsファイルを編集することで、正式名をFQDNに設定できます。ポリシーの変更は、実行中のホストを送信するホストに設定し、両方とも同じまたはより良い場合にホスト名比較を実行するときに短い名前比較を実行できるようにすることです。
お客様のポリシーには次の内容があります。
if (submithost != runhost) {
print{"You are NOT allowed to use pbrun -h <remotehost> ls."};
print{"Please try again without -h option.\n\n"};
print{"Host:", host};
print{"Submithost:", submithost};
reject;
}
基準を次のように変更する必要があります。
if (split(submithost,".")[0] != split(runhost,".")[0]) {
これにより、明示的な短い名前ホスト名の比較が行われます。これを実行する関数がすでに存在する場合、またはpblibs.confサンプルポリシーを使用している場合は、そのために定義された関数があります。
#
# The function GetShortName will take a host name and return the
# short name of the FQDN, or just return the shortname if the
# the short name was passed as the argument. This function requires
# one argument, a string for the hostname.
# To call the function:
# GetShortName("test.beyondtrust.com");
# GetShortName(masterhost);
#
function GetShortName(SomeHostName) {
GetShortName = split(SomeHostName,".")[0];
}
答え2
試してみてください
pbrun -h "machine name"
または
pbrun -h "machine name" pbksh