1.20. 经常使用 Samba 命令行工具
本章论述了使用 Samba 服务器时经常使用的命令。
1.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: files winbind启用并启动
winbind服务:# systemctl enable --now winbind可选:使用
authselect工具配置 PAM。详情请查看您系统上的
authselect (8)手册页。可选:对于 AD 环境,请配置 Kerberos 客户端。
详情请查看您的 Kerberos 客户端文档。
1.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.
1.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
1.20.5. 使用 rpcclient 工具 复制链接链接已复制到粘贴板!
The rpcclient 工具可让您在本地或远程 SMB 服务器上手动执行客户端 Microsoft 远程过程调用(MS-RPC)功能。但是,大部分特性都已集成到 Samba 提供的单独工具中。使用 rpcclient 只用于测试 MS-PRC 功能。
先决条件
-
samba-client软件包已安装。
例子
例如,您可以使用 rpcclient 工具来:
管理打印机假脱机子系统(SPOOLSS)。
例 1.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 服务器的信息。
例 1.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)协议来执行操作。
例 1.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 运行命令列出域用户。
1.20.6. 使用 samba-regedit 应用程序 复制链接链接已复制到粘贴板!
某些设置(如打印机配置)存储在 Samba 服务器上的注册表中。您可以使用基于 ncurses 的 samba-regedit 应用程序来编辑 Samba 服务器的注册表。
先决条件
-
samba-client软件包已安装。
流程
要启动应用程序,请输入:
# samba-regedit
使用以下键:
- 上键和下键:在注册表树和值中进行导航。
- Enter:打开关键字或编辑值。
-
选项卡 :在
Key和Value窗格间切换。 - Ctrl+C:关闭应用程序。
1.20.7. 使用 smbcontrol 工具 复制链接链接已复制到粘贴板!
smbcontrol 工具允许您向 smbd、nmbd、winbindd 或 所有这些服务发送命令消息。这些控制消息指示服务重新载入其配置。
先决条件
-
samba-common-tools软件包已安装。
流程
-
通过将
reload-config消息类型发送给所有目的地,来重新载入smbd、nmbd、winbindd服务的配置:
# smbcontrol all reload-config
1.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.
1.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
1.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
1.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