分类: LINUX
2011-08-22 11:03:39
名称
smbpasswd – 改变用户的SMB口令
语法
smbpasswd
[-a] [-d] [-e] [-D debug level] [-n] [-r remote_machine] [-R name resolve
order] [-m] [-j DOMAIN] [-U username] [-h] [-s] username
描述
此程序是samba套件的一部分。
smbpasswd程序有几个不太一样的功能,这取决于它被root账号还是其它账号来使用。当普通用户运行它时,用户可以通过SMB会话在任何保存SMB口令的机器上改变他们的口令。
默认情况下(不带参数运行)它会尝试在本地改变当前用户的SMB口令。这和passwd
(1)程序的工作方式类似。不过,smbpasswd和passwd具有setuid
root特性还是不一样的,除非当它工作在客户机-服务器模式并且与本地运行中的smbd通信时。为了实现这样的结果,
smbd守护程序必须在本地主机上运行。在UNIX主机上通常用smbpasswd (5)来存放SMB的加密口令。
当普通用户不带选项来运行这个程序时,smbpasswd会向他们提示输入原SMB口令并询问所需的新口令两次,这时必须确保输入正确,输入时屏幕并不显示任何口令字符。如果你用了一个空SMB口令(在smbpasswd文件中会指定字串“NO
PASSWORD”)的话,在程序提示输
入原口令时可以直接输入键。
普通用户也可以在远程主机(例如NT域控制器)上用smbpasswd来改他们的SMB口令。详细情况请参见以下的(-r)和-U两个选项。
当root运行这个程序时,smbpasswd可以在smbpasswd文件中增删用户,也可以改变用户属性。这时,程序会直接访问本地smbpasswd文件,甚至smbd并没有在运行时也可以。
选项
-a
通过在这个选项后跟上用户名来实现在本地smbpasswd文件中增加用户,并且同时提供新的口令(提示原口令时用)。如果smbpasswd文件中已经存在了这样的用户时,命令就变成通常的改口令模式。注意,所要加入的SMB用户必须在系统口令文件中(通常是
/etc/passwd)已经存在的用户否则加入操作将会失败。
只有root运行smbpasswd程序时才可以使用这个选项。
-d
用这个选项后跟用户名来禁止存在于smbpasswd文件中的这个账号。通过在smbpasswd文件的账号控制部分写入'D'标志来实现这个功能。一旦账号被禁止,所有使用这个账号作SMB身份验证的尝试都将失败。
如果smbpasswd文件还是老格式的话(比如samba
2.0之前版本),在用户口令项中没有这样的账号控制部分可以作任何标志,所以只能向smbpasswd文件中的口令字部分写入'X'字符来达到目的。关于口令文件的新格式和旧格式细节可以参见smbpasswd
(5)。
同样,也只有root运行smbpasswd程序时才可以使用这个选项。
-e
这个选项达到的功能和上面一个正好相反,而使用格式相同。账号被禁止时用来重新允许使用这个账号。如果账号并未被禁止的话,使用这个选项不会有什么结果(废话)。允许账号将使用户再一次可以通过身份验证。
使用老格式的口令文件时,允许账号会被提示输入一个新口令;使用新格式时会清除smbpasswd文件中账号控制部分的'D'
标志。关于口令文件的新格式和旧格式细节可以参见smbpasswd (5)。
只有root运行smbpasswd程序时才可以使用这个选项。
-D debuglevel
调试级是个0到10的整数。如果不指定具体的数值时默认为0。
这个值越高,将记录越多关于smbpasswd活动的资料。在把调试级设为0时,只记录紧急错误和严重警告。
1以上的调试级将产生相当多的记录数据,并且只在研究问题时才有用。3以上的调试级只被设计为让开发者使用并会产生极大数量的记录数据,而且其中很多部分非常难以理解。
-n
用这个选项后跟用户名来把这个账号的口令设为空(例如空口令)。程序会把smbpasswd文件中口令项的第一部分都改为“NO
PASSWORD”。(我试了一下,都是“NOPASSWORDXXXXXXXXX”这种形式)
注意如果希望用户以空口令登录到samba服务器,管理员必须在smb.conf配置文件的
[global]段中设置以下的参数:
null passwords = true
只有root运行smbpasswd程序时才可以使用这个选项。
-r remote machine name
使用这个选项来让用户指定他们所希望改变口令的主机,不用此参数时默认对本地更改口令。SMB/CIFS服务器会试图联接以“remote
machine name”作为NetBIOS名字的主机以更改口令。Samba套件中的所有程序都使用标准的名字解析机制来把这样的名字转换成IP地
址。请参见-R name resolve order参数获得改变解析机制的详细信息。
用这个选项更改的用户账号就是当前登录UNIX的账号。要改变其它用户名可以参见-U username参数中的细节。
注意,如果要改变一个NT域账号,指定的远程主机必须是域中的主域控制器,因为备份域控制器只维护用户账号数据库的只读复本,而不能更改。
还需注意的是Windows 95/98实际根本没有口令数据库,所以不可能更改远程Win95/98主机上的口令。
-R name resolve order
用这个选项来让使用smbclient的用户在查询主机NetBIOS名字用于联接时,决定使用怎样的名字解析服务。
以下有三种方法可以用在名字解析上:
lmhosts:代表在samba的lmhosts文件中查询IP地址。
host:代表使用标准的主机名到IP地址的解析方法,这需要用到系统中的/etc/hosts文件、NIS或者DNS。如何使用这个名字解析由系统决定。举例来说,在IRIX或者Solaris系统中,/etc/nsswitch.conf文件会处理这些问题。
wins代表向smb.conf配置文件中设定的wins
server参数指定的WINS服务器进行查询。如果不指定WINS服务器的话这种方法将会被忽略。
bcast代表向smb.conf配置文件中设定的interfaces参数列出的本地接口上广播查询。当目标主机联接到本地子网时这是最可靠的名字解析方法。
如果不使用这个参数的话,将按smb.conf配置文件中name resolve order参数指定的次序来进行名字解析。
默认的解析次序是lmhosts,host,wins,bcast,在不使用这个参数或者没有在smb.conf设定名字解析方法的情况下将使用这样的次序进行解析。
-m
smbpasswd用这个选项来把账号改为一个MACHINE账号。通常当samba作为NT主域控制器的时候可以使用它。PDC功能在samba
2.0版本中是个不被支持的功能,而在以后的版本中将会对它进行支持。如果要了解关于把samba作为一个NT主域控制器的情况可以订阅samba-ntdom@samba.org的邮件列表。
只有root运行smbpasswd程序时才可以使用这个选项。
-j DOMAIN
使用这个选项可以把samba服务器作为一个与NT服务器一样具有验证用户账号能力的域成员加入到NT域中。请参见smb.conf
(5)配置文件中的security=domain参数。
为了使用这个选项,NT域管理员必须先用“Server Manager for
Domains”程序加入作为域成员的samba服务器的primary NetBIOS name。
完成这步工作以后,调用带这个参数的smbpasswd命令来加入到域中。smbpasswd会查询smb.conf配置文件中password
server参数指定的主域控制器,改变机器账号的口令用于建立安全的域内通信。smbpasswd会把这个口令保存在一个只有root用户可读的名字为
..mac的文件中,其中的是要加入的域名而是本身主机的NetBIOS名字。对于具体的操作还可参见DOMAIN_MEMBER中的描述。
一旦执行了这些操作,smb.conf配置文件就把安全级更新为security=domain,今后所有对samba服务器的登录都被由NT的PDC来验证。
注意虽然验证工作是由PDC来完成,但是PDC上所有的用户要访问samba服务器仍然必须要有服务器上的合法UNIX账号。
只有root运行smbpasswd程序时才可以使用这个选项。
-U
username
这个选项只能和-r选项联合使用。当从远程主机更改口令时,用它来允许用户指定要改变的远程主机口令的用户账号。这使得用户可以在不同的系统上使用不同的账号来改变这些口令。
-h
使用这个选项可以打印出root用户和普通用户使用smbpasswd的帮助信息,
-s
使用这个选项会使smbpasswd在标准输入上读取原口令和新口令时保持静态(例如发出提示),这样使用比从/dev/tty上读口令(象passwd
(1)就是这样做的)更好。使用脚本来处理smbpasswd时可以考虑用它。
username
这里指定的用户名是针对那些只有root能用的操作参数中要用到的账号。只有root可以使用这个参数,并有权直接在本地smbpasswd文件中更改属性。
注意
当非root用户用smbpasswd以客户机-服务器模式与本地smbd通信时时,smbd守护程序必须在运行之中。问题是在本地主机上运行的smbd可以通过在smb.conf配置文件中指定allow hosts和deny
hosts参数并忽略localhost对smbd的访问来对访问的主机进行一定的限制。
另外smbpasswd命令只有在已经把samba设成使用加密口令时才能发挥作用。详细情况看一下docs目录中的ENCRYPTION.txt。
版本
此手册页是针对samba套件版本2.0的。
作者
samba软件和相关工具最初由Andrew Tridgell
samba-bugs@samba.org创建。samba现在由开发组作为类似Linux内核开发采用的开放源代码计划方式来发展。
samba手册页最初由Karl
Auer撰写。它的源码已被转换成YODL(一种极好的开放源代码软件,可以在ftp://ftp.icce.rug.nl/pub/unix/处获得)格式并已由Jeremy
Allison更新到samba2.0版本。
请参见samba (7)查找如何获得一份完整的维护者列表以及如何提交错误报告及注解等等。