我如何确定谁是从Linuxlogin到远程Windows XP计算机的? 我没有域或远程计算机上的pipe理员访问权限。
我可以使用PsTools的 PsLoggedOn -L \\computer
从单独的Windows计算机上执行此操作
我试过使用nmblookup -A remotecomputer
,但我只看到计算机和域的条目,而不是用户的<03>
条目。
我也尝试过在酒下运行PsLoggedOn; 我收到一个错误:
连接到\\ computer.company.com的registry... fixme:reg:RegConnectRegistryW连接到L“computer.company.com”不受支持。
我开始研究winexe ,但看起来我需要远程计算机上的pipe理权限才能使其工作。
我发现如何在Linux计算机上使用Samba来做到这一点。
我安装并configuration了Kerberos和Samba来访问域。 我修改了/etc/samba/smb.conf
和/etc/hosts
。 然后,我使用脚本中的一些net
命令( net
是Samba的命令行接口):
net rpc registry enumerate 'HKEY_USERS' -S xpcomputer.ad.company.com -U '[email protected]%password'
给出当前在registry中加载的用户的安全标识符列表:
Keyname = .DEFAULT Modtime = Thu, 02 Dec 2010 14:31:14 EST Keyname = S-1-5-19 Modtime = Thu, 02 Dec 2010 14:31:16 EST Keyname = S-1-5-19_Classes Modtime = Thu, 02 Dec 2010 14:31:16 EST Keyname = S-1-5-20 Modtime = Thu, 02 Dec 2010 14:31:16 EST Keyname = S-1-5-20_Classes Modtime = Thu, 02 Dec 2010 14:31:16 EST Keyname = S-1-5-21-8915387-325552579-1798637320-4573 Modtime = Fri, 03 Dec 2010 22:53:39 EST Keyname = S-1-5-21-8915387-325552579-1798637320-7772 Modtime = Wed, 08 Dec 2010 07:51:26 EST Keyname = S-1-5-21-8915387-325552579-1798637320-7772_Classes Modtime = Wed, 08 Dec 2010 07:51:26 EST Keyname = S-1-5-18 Modtime = Thu, 02 Dec 2010 14:31:14 EST
然后运行net ads sid
命令,根据用户SID查找活动目录条目。 这可能只适用于域用户; 我不确定它是否适用于使用本地帐户login的用户。 看来,如果有多个SID,唯一有效的是具有相应的“_Classes”条目的那个。
net ads sid 'S-1-5-21-8915387-325552579-1798637320-7772' -W COMPANY -U '[email protected]%password'
这给出了一些错误,但仍然导致打印用户的整个Active Directory信息。 这很慢,可能是由于错误,所以我可能会cachingSID到用户名映射。
[2010/12/08 10:03:00, 0] libads/kerberos.c:882(create_local_private_krb5_conf_for_domain) create_local_private_krb5_conf_for_domain: smb_mkstemp failed, for file /var/run/samba/smb_tmp_krb5.HpBqKJ. Errno Permission denied [2010/12/08 10:03:02, 0] libads/kerberos.c:882(create_local_private_krb5_conf_for_domain) create_local_private_krb5_conf_for_domain: smb_mkstemp failed, for file /var/run/samba/smb_tmp_krb5.BCzT0T. Errno Permission denied Got 1 replies objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: [Lastname], [Firstname] sn: [Lastname] c: US physicalDeliveryOfficeName: ... telephoneNumber: ... ...(many more fields)... mailNickname: FLastname ...
mailNickname字段包含用户名(至less对于我已经testing过的用户)。
我发现这个问题,同时寻找解决scheme完全相同的问题。 盯着Justin的上面的答案,我终于想出了这一点的Perl。 $ Comp是我们希望询问的计算机的名称。
$Res = `/usr/bin/net rpc registry enumerate 'HKEY_USERS' -S $Comp -U 'user\@domain\%password' | /bin/grep _Classes`; # For this application we're only interested in one entry and don't care if there are more $Res =~ /= (.+)_Classes/; $Sid = $1; $Res = `/usr/bin/net ads sid -W domain -I IP_address_of_DC -U 'user\@domain\%password' "$Sid"`; $Res =~ /sAMAccountName: (.*)/; $User = $1; # The user logon ID $Res = `/usr/bin/net ads search "(sAMAccountName=$User)" -U 'user\@domain\%password'`; $Res =~ /displayName: (.*)/; # The user's display name, which is what we're after $Name = $1;
如果速度与Justin一样,请检查以确保smb.conf中的领域和工作组设置是正确的。
你能够在远程计算机上安装软件吗?
如果是这样,您可以从这里安装Opsview代理 (nagios客户端): http : //www.opsview.com/downloads/opsview-agents ,这将允许您查询任何MS性能计数器。
我不确定login的用户是否可以作为性能计数器,但是如果是这样的话,那么这可能对您有用。