3.20. 经常使用 Samba 命令行工具
本章论述了使用 Samba 服务器时经常使用的命令。
3.20.1. 使用 net ads join 和 net rpc join 命令
使用 net
工具的 join
子命令,您可以将 Samba 加入到 AD 或 NT4 域。要加入域,您必须手动创建 /etc/samba/smb.conf
文件,并有选择地更新其他配置,如 PAM。
红帽建议使用 realm
工具来加入域。realm
工具自动更新所有涉及的配置文件。
流程
使用以下设置手动创建
/etc/samba/smb.conf
文件:对于 AD 域成员:
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
对于 NT4 域成员:
[global] workgroup = domain_name security = user passdb backend = tdbsam
-
为
*
默认域和要加入到/etc/samba/smb.conf
文件中[global
] 部分的域添加 ID 映射配置。 验证
/etc/samba/smb.conf
文件:# testparm
以域管理员身份加入域:
加入 AD 域:
# net ads join -U "DOMAIN\administrator"
要加入 NT4 域:
# net rpc join -U "DOMAIN\administrator"
将
winbind
源追加到/etc/nsswitch.conf
文件中的passwd
和group
数据库条目中:passwd: files
winbind
group: fileswinbind
启用并启动
winbind
服务:# systemctl enable --now winbind
可选:使用
authselect
工具配置 PAM。详情请查看
authselect(8)
手册页。可选: 对于 AD 环境,配置 Kerberos 客户端。
详情请查看您的 Kerberos 客户端文档。
其它资源
3.20.2. 使用 net rpc right 命令
在 Windows 中,您可以为帐户和组分配特权来执行特殊操作,如对共享设置 ACL 或上传打印机驱动程序。在 Samba 服务器上,您可以使用 net rpc permissions
命令来管理特权。
列出您可以设置的权限
若要列出所有可用的特权及其所有者,可使用 net rpc permissions list
命令。例如:
# net rpc rights list -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: SeMachineAccountPrivilege Add machines to domain SeTakeOwnershipPrivilege Take ownership of files or other objects SeBackupPrivilege Back up files and directories SeRestorePrivilege Restore files and directories SeRemoteShutdownPrivilege Force shutdown from a remote system SePrintOperatorPrivilege Manage printers SeAddUsersPrivilege Add users and groups to the domain SeDiskOperatorPrivilege Manage disk shares SeSecurityPrivilege System security
授予权限
若要为帐户或组赋予特权,可使用 net rpc rights grant
命令。
例如,将SePrintOperatorPrivilege
特权赋予 DOMAIN\printadmin
组 :
# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully granted rights.
撤销权限
若要从帐户或组撤销特权,可使用 net rpc rights revoke
命令。
例如,要对DOMAIN\printadmin
组撤销 SePrintOperatorPrivilege
特权:
# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully revoked rights.
3.20.4. 使用 net user 命令
net user
命令允许您在 AD DC 或 NT4 PDC 中执行以下操作:
- 列出所有用户帐户
- 添加用户
- 删除用户
只有在列出域用户帐户时,才需要指定连接方法,如 AD 域的ads
或 NT4 域的rpc
。其他用户相关的子命令可以自动探测连接方法。
将 -U user_name
参数传给命令,以指定允许执行所请求的操作的用户。
列出域用户帐户
列出 AD 域中的所有用户:
# net ads user -U "DOMAIN\administrator"
列出 NT4 域中的所有用户:
# net rpc user -U "DOMAIN\administrator"
在域中添加用户帐户
在 Samba 域成员中,您可以使用 net user add
命令将用户帐户添加到域。
例如,将 user
账户添加到域:
添加帐户:
# net user add user password -U "DOMAIN\administrator" User user added
可选: 使用远程过程调用(RPC) shell 来启用 AD DC 或 NT4 PDC 上的帐户。例如:
# net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751) net rpc>
user edit disabled user: no
Set user's disabled flag from [yes] to [no] net rpc>exit
从域中删除用户帐户
对于 Samba 域成员,您可以使用 net user delete
命令从域中删除用户帐户。
例如,从域中删除 user
账户:
# net user delete user -U "DOMAIN\administrator" User user deleted
3.20.5. 使用 rpcclient 工具
The rpcclient
工具可让您在本地或远程 SMB 服务器上手动执行客户端 Microsoft 远程过程调用(MS-RPC)功能。但是,大部分特性都已集成到 Samba 提供的单独工具中。使用 rpcclient
只用于测试 MS-PRC 功能。
先决条件
-
samba-client
软件包已安装。
示例
例如,您可以使用 rpcclient
工具来:
管理打印机假脱机子系统(SPOOLSS)。
例 3.7. 将驱动程序分配给打印机
# rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"' Enter DOMAIN\administrators password: Successfully set printer_name to driver driver_name.
检索有关 SMB 服务器的信息。
例 3.8. 列出所有文件共享和共享的打印机
# rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum' Enter DOMAIN\administrators password: netname: Example_Share remark: path: C:\srv\samba\example_share\ password: netname: Example_Printer remark: path: C:\var\spool\samba\ password:
使用安全帐户管理器远程(SAMR)协议来执行操作。
例 3.9. 在 SMB 服务器中列出用户
# rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers' Enter DOMAIN\administrators password: user:[user1] rid:[0x3e8] user:[user2] rid:[0x3e9]
如果您针对独立服务器或域成员运行命令,它将列出本地数据库中的用户。针对 AD DC 或 NT4 PDC 运行命令列出域用户。
其它资源
-
rpcclient(1)
手册页
3.20.6. 使用 samba-regedit 应用程序
某些设置(如打印机配置)存储在 Samba 服务器上的注册表中。您可以使用基于 ncurses 的 samba-regedit
应用程序来编辑 Samba 服务器的注册表。
先决条件
-
samba-client
软件包已安装。
流程
要启动应用程序,请输入:
# samba-regedit
使用以下键:
- 上键和下键:在注册表树和值中进行导航。
- Enter:打开关键字或编辑值。
-
选项卡 :在
Key
和Value
窗格间切换。 - Ctrl+C:关闭应用程序。
3.20.7. 使用 smbcontrol 工具
smbcontrol
工具允许您向 smbd
、nmbd
、winbindd 或
所有这些服务发送命令消息。这些控制消息指示服务重新载入其配置。
先决条件
-
samba-common-tools
软件包已安装。
流程
-
通过将
reload-config
消息类型发送到所有
目的地,来重新载入smbd
、nmbd
、winbindd
服务的配置:
# smbcontrol all reload-config
其它资源
-
smbcontrol(1)
手册页
3.20.8. 使用 smbpasswd 工具
smbpasswd
工具管理本地 Samba 数据库中的用户帐户和密码。
先决条件
-
samba-common-tools
软件包已安装。
流程
如果您以用户身份运行命令,
smbpasswd
将修改运行命令的用户的 Samba 密码。例如:[user@server ~]$ smbpasswd New SMB password: password Retype new SMB password: password
如果以
root
用户身份运行smbpasswd
,例如,您可以使用该工具来:创建一个新用户:
[root@server ~]# smbpasswd -a user_name New SMB password:
password
Retype new SMB password:password
Added user user_name.注意在将用户添加到 Samba 数据库之前,您必须先在本地操作系统中创建帐户。请参阅配置基本系统设置指南中的 从命令行添加新用户 部分。
启用 Samba 用户:
[root@server ~]# smbpasswd -e user_name Enabled user user_name.
禁用 Samba 用户:
[root@server ~]# smbpasswd -x user_name Disabled user user_name
删除用户:
[root@server ~]# smbpasswd -x user_name Deleted user user_name.
其它资源
-
smbpasswd(8)
手册页
3.20.9. 使用 smbstatus 工具
smbstatus
工具报告,关于:
-
每个
smbd
守护进程的每个 PID 到 Samba 服务器的连接。此报告包括用户名、主组群、SMB 协议版本、加密和签名信息。 -
每个 Samba 共享的连接。此报告包括
smbd
守护进程的 PID、连接机器的 IP、连接建立的时间戳、加密和签名信息。 - 锁定文件列表。报告条目包括更多详情,如 Opportunistic lock(oplock)类型
先决条件
-
samba
软件包已安装。 -
smbd
服务在运行。
流程
# smbstatus Samba version 4.15.2 PID Username Group Machine Protocol Version Encryption Signing ....------------------------------------------------------------------------------------------------------------------------- 963 DOMAIN\administrator DOMAIN\domain users client-pc (ipv4:192.0.2.1:57786) SMB3_02 - AES-128-CMAC Service pid Machine Connected at Encryption Signing: ....--------------------------------------------------------------------------- example 969 192.0.2.1 Thu Nov 1 10:00:00 2018 CEST - AES-128-CMAC Locked files: Pid Uid DenyMode Access R/W Oplock SharePath Name Time ....-------------------------------------------------------------------------------------------------------- 969 10000 DENY_WRITE 0x120089 RDONLY LEASE(RWH) /srv/samba/example file.txt Thu Nov 1 10:00:00 2018
其它资源
-
smbstatus(1)
手册页
3.20.10. 使用 smbtar 工具
smbtar
工具备份 SMB 共享的内容或其子目录,并将内容存储在 tar
存档中。或者,您可以将内容写入磁带设备。
先决条件
-
samba-client
软件包已安装。
流程
使用以下命令备份
//server/example/
共享中demo
目录的内容,并将内容存储在/root/example.tar
归档中:# smbtar -s server -x example -u user_name -p password -t /root/example.tar
其它资源
-
smbtar(1)
手册页
3.20.11. 使用 wbinfo 工具
wbinfo
工具查询并返回 winbindd
服务创建和使用的信息。
先决条件
-
samba-winbind-clients
软件包已安装。
流程
例如,您可以使用 wbinfo
来:
列出域用户:
# wbinfo -u AD\administrator AD\guest ...
列出域组:
# wbinfo -g AD\domain computers AD\domain admins AD\domain users ...
显示用户的 SID:
# wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
显示域和信任的信息:
# wbinfo --trusted-domains --verbose Domain Name DNS Domain Trust Type Transitive In Out BUILTIN None Yes Yes Yes server None Yes Yes Yes DOMAIN1 domain1.example.com None Yes Yes Yes DOMAIN2 domain2.example.com External No Yes Yes
其它资源
-
wbinfo(1)
手册页