SAMBA服务

SAMBA服务

Samba是一种在Linux和Unix系统上实现SMB(Server Message Block 服务器消息块)协议的自由软件。SMB协议是一种网络文件共享协议,允许计算机在网络上共享文件、打印机等资源。Samba允许基于Linux和UNIX的系统作为文件和打印服务服务器出现在Windows网络中,从而实现不同操作系统之间的互操作性。它可以被配置为网络驱动器,允许用户访问和共享文件夹及其中的文件,就像它们是在本地计算机上一样。

1.Samba主要组件

  • smbd:提供文件和打印服务的守护进程。它处理文件请求和网络浏览请求。
  • nmbd:处理NetBIOS名称服务请求,负责解析网络上的名字到地址。
  • winbind:用于集成Windows域,允许Samba服务器识别和验证Windows网络用户和组。

2.安装Samba

[root@Rocky9 ~]# dnf install samba
[root@Rocky9 ~]# systemctl enable --now smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
[root@Rocky9 ~]# 
[root@Rocky9 ~]# 
[root@Rocky9 ~]# systemctl status smb
● smb.service - Samba SMB Daemon
     Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2024-04-11 22:25:04 CST; 4s ago
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)
   Main PID: 31470 (smbd)
     Status: "smbd: ready to serve connections..."
      Tasks: 3 (limit: 10943)
     Memory: 10.5M
        CPU: 49ms
     CGroup: /system.slice/smb.service
             ├─31470 /usr/sbin/smbd --foreground --no-process-group
             ├─31472 /usr/sbin/smbd --foreground --no-process-group
             └─31473 /usr/sbin/smbd --foreground --no-process-group

Apr 11 22:25:04 Rocky9.0 systemd[1]: Starting Samba SMB Daemon...
Apr 11 22:25:04 Rocky9.0 smbd[31470]: [2024/04/11 22:25:04.451809,  0] ../../source3/smbd/server.c:1746(main)
Apr 11 22:25:04 Rocky9.0 smbd[31470]:   smbd version 4.18.6 started.
Apr 11 22:25:04 Rocky9.0 smbd[31470]:   Copyright Andrew Tridgell and the Samba Team 1992-2023
Apr 11 22:25:04 Rocky9.0 systemd[1]: Started Samba SMB Daemon

3.管理Samba用户

# 添加samba用户首先需添加系统用户,然后将系统用户变成samba用户
[root@Rocky9 ~]# useradd smb1
[root@Rocky9 ~]# useradd smb2
[root@Rocky9 ~]# useradd smb3
[root@Rocky9 ~]# smbpasswd -a smb1
[root@Rocky9 ~]# smbpasswd -a smb2
[root@Rocky9 ~]# smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.
# 查看当前的samba账号
[root@Rocky9 ~]# pdbedit -L
smb1:8081:
smb3:8083:
smb2:8082:

# 测试连接
# 首先,安装samba的客户端
[root@Rocky9 ~]#yum -y install samba-client
#方法一:
[root@Rocky9 ~]#smbclient -L 10.0.0.107
Password for [SAMBA\root]:
Anonymous login successful

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.18.6)
SMB1 disabled -- no workgroup available
[root@Rocky9 ~]#
# 方法二:
[root@Rocky9 ~]#smbclient //10.0.0.107/smb1 -U smb1%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu Apr 11 22:44:37 2024
  ..                                  D        0  Thu Apr 11 23:20:12 2024
  .bash_logout                        H       18  Mon May 16 20:12:54 2022
  .bash_profile                       H      141  Mon May 16 20:12:54 2022
  .bashrc                             H      492  Mon May 16 20:12:55 2022
  anaconda-ks.cfg                     A     1104  Thu Apr 11 22:44:37 2024

                73364480 blocks of size 1024. 71159044 blocks available
smb: \> 

4.配置Samba

Samba的主要配置文件是smb.conf,通常位于/etc/samba/目录下。这个文件控制了Samba服务器的行为,包括哪些资源共享、权限设置和网络安全等。

# 查看配置文件
[root@Rocky9 ~]# rpm -qc samba-common
/etc/logrotate.d/samba
/etc/samba/lmhosts
/etc/samba/smb.conf
/etc/sysconfig/samba
[root@Rocky9 ~]# 
# 建立共享目录,以及共享文件
[root@Rocky9 ~]# touch /data/smbshare1/a.txt
[root@Rocky9 ~]# vim /etc/samba/smb.conf
[share1]
path=/data/smbshare1/

# 查看
[root@Rocky9 ~]#smbclient -L 10.0.0.107 -U smb1%123456

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        share1          Disk      
        IPC$            IPC       IPC Service (Samba 4.18.6)
        smb1            Disk      Home Directories
SMB1 disabled -- no workgroup available
[root@Rocky9 ~]# 
# 经过测试,可以下载,不可以上传(上传要满足两个条件:1.账户对目录要有写的权限 2.samba服务要开启写的配置)
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb1%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu Apr 11 23:27:18 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024

                51290592 blocks of size 1024. 48652740 blocks available
smb: \> get a.txt 
getting file \a.txt of size 0 as a.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> ls
  .                                   D        0  Thu Apr 11 23:27:18 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024

                51290592 blocks of size 1024. 48652740 blocks available
smb: \> put anaconda-ks.cfg 
NT_STATUS_ACCESS_DENIED opening remote file \anaconda-ks.cfg
smb: \> 

# 修改文件系统权限
[root@Rocky9 ~]# chmod 777 /data/smbshare1/
[root@Rocky9 ~]# ll /data/smbshare1/ -d
drwxrwxrwx 2 root root 4096 Apr 11 23:27 /data/smbshare1/
[root@Rocky9 ~]# 

# 添加配置文件
[root@Rocky9 ~]# vim /etc/samba/smb.conf
[share1]
path=/data/smbshare1/
# 这两项是等价的,写一项就可以了
writeable=Yes
read only=No

# 修改完配置文件客户端重新连接,如若不行,重启服务
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb1%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu Apr 11 23:27:18 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024

                51290592 blocks of size 1024. 48652740 blocks available
smb: \> put anaconda-ks.cfg 
putting file anaconda-ks.cfg as \anaconda-ks.cfg (359.4 kb/s) (average 359.4 kb/s)
smb: \> ls
  .                                   D        0  Sun Apr 14 21:29:26 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  anaconda-ks.cfg                     A     1104  Sun Apr 14 21:29:26 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024

                51290592 blocks of size 1024. 48652736 blocks available
smb: \> 

# 现在希望smb1、smb2可以上传,smb3不可以上传
[root@Rocky9 ~]# vi /etc/samba/smb.conf
[share1]
path=/data/smbshare1/
writeable=no
write list=smb1,smb2

# 测试,smb1,smb2可以上传文件,但是smb3不可以上传文件
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb2%123456
Try "help" to get a list of possible commands.
smb: \> lcd /etc/
smb: \> ls
  .                                   D        0  Sun Apr 14 22:43:55 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  anaconda-ks.cfg                     A     1104  Sun Apr 14 21:29:26 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024
  hosts                               A      158  Sun Apr 14 22:43:55 2024

                51290592 blocks of size 1024. 48652732 blocks available
smb: \> put fstab 
putting file fstab as \fstab (319.8 kb/s) (average 319.8 kb/s)
smb: \> ls
  .                                   D        0  Sun Apr 14 22:46:39 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  anaconda-ks.cfg                     A     1104  Sun Apr 14 21:29:26 2024
  fstab                               A      655  Sun Apr 14 22:46:39 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024
  hosts                               A      158  Sun Apr 14 22:43:55 2024

                51290592 blocks of size 1024. 48652728 blocks available
smb: \> 

# smb3
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb3%123456
Try "help" to get a list of possible commands.
smb: \> lcd /etc/
smb: \> ls
  .                                   D        0  Sun Apr 14 22:43:55 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  anaconda-ks.cfg                     A     1104  Sun Apr 14 21:29:26 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024
  hosts                               A      158  Sun Apr 14 22:43:55 2024

                51290592 blocks of size 1024. 48652732 blocks available
smb: \> put fstab 
NT_STATUS_ACCESS_DENIED opening remote file \fstab
smb: \> 

# 设置谁都可以访问 public
[root@Rocky9 ~]# vi /etc/samba/smb.conf
[share1]
path=/data/smbshare1/
public=yes

# 测试,登录成功以后,提示Anonymous匿名登录成功
[root@Rocky9 ~]#smbclient //10.0.0.107/share1
Password for [SAMBA\root]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> 

#特定用户可以访问
[root@Rocky9 ~]# vi /etc/samba/smb.conf
[share1]
path=/data/smbshare1/
valid users=smb3

[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb3%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Apr 14 22:46:39 2024
  ..                                  D        0  Thu Apr 11 23:27:00 2024
  anaconda-ks.cfg                     A     1104  Sun Apr 14 21:29:26 2024
  fstab                               A      655  Sun Apr 14 22:46:39 2024
  a.txt                               N        0  Thu Apr 11 23:27:18 2024
  hosts                               A      158  Sun Apr 14 22:43:55 2024

                51290592 blocks of size 1024. 48652728 blocks available
smb: \> exit
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb2%123456
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@Rocky9 ~]#

# 隐藏文件

[root@Rocky9 ~]#smbclient -L 10.0.0.107
Password for [SAMBA\root]:
Anonymous login successful

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.18.6)
SMB1 disabled -- no workgroup available
[root@Rocky9 ~]#
# 如果知道它的名字是可以访问的
[root@Rocky9 ~]#smbclient //10.0.0.107/share1 -U smb2%123456
Try "help" to get a list of possible commands.
smb: \> 

# 组
[root@Rocky9 ~]# vi /etc/samba/smb.conf
[share1]
path=/data/smbshare1/
valid users=@admins # 或者写成+admins

# 用户单独的配置文件
[root@Rocky9 ~]# vi /etc/samba/smb.conf
[global]
        config file=/etc/samba/conf.d/%U

mkdir -pv /etc/samba/conf.d/
#smb1
[root@Rocky9 ~]# vim /etc/samba/conf.d/smb1
[share]
path=/data/share1
# smb2
[root@Rocky9 ~]# vim /etc/samba/conf.d/smb2
[share]
path=/data/share2

# 创建对应目录
mkdir /data/share1
mkdir /data/share2
[root@Rocky9 ~]# touch /data/share1/share1.txt
[root@Rocky9 ~]# touch /data/share2/share2.txt
# 测试
# smb1
[root@Rocky9 ~]#smbclient //10.0.0.107/share -U smb1%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Apr 14 23:32:01 2024
  ..                                  D        0  Sun Apr 14 23:31:46 2024
  share1.txt                          N        0  Sun Apr 14 23:32:01 2024

                51290592 blocks of size 1024. 48652720 blocks available
smb: \> 


# smb2
[root@Rocky9 ~]#smbclient //10.0.0.107/share -U smb2%123456
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Apr 14 23:32:07 2024
  ..                                  D        0  Sun Apr 14 23:31:46 2024
  share2.txt                          N        0  Sun Apr 14 23:32:07 2024

                51290592 blocks of size 1024. 48652720 blocks available
smb: \>


# 永久挂载
# 首先安装cifs-utils包
[root@Rocky9 ~]#yum -y install cifs-utils
[root@Rocky9 ~]#vi /etc/fstab
//10.0.0.107/share      /mnt/share      cifs    username=smb1,password=123456 0 0
#或者
//10.0.0.107/share      /mnt/share      cifs    credentials=/etc/user.txt 0 0

# 文件需要这么些
[root@Rocky9 ~]#vi /etc/user.txt
username=smb1
password=123456
[root@Rocky9 ~]#chmod 600 /etc/user.txt
[root@Rocky9 ~]#mount -a
[root@Rocky9 ~]#df
Filesystem          1K-blocks    Used Available Use% Mounted on
devtmpfs               864456       0    864456   0% /dev
tmpfs                  895320       0    895320   0% /dev/shm
tmpfs                  358128   10168    347960   3% /run
/dev/mapper/rl-root  73364480 6467832  66896648   9% /
/dev/nvme0n1p1        1038336  270624    767712  27% /boot
/dev/mapper/rl-home 133075472  960992 132114480   1% /home
tmpfs                  179064      52    179012   1% /run/user/42
tmpfs                  179064      36    179028   1% /run/user/0
//10.0.0.107/share   51290592 2637872  48652720   6% /mnt/share
[root@Rocky9 ~]#

5.相关命令

smbclient

smbclient是一个Samba客户端程序,可以用来访问SMB/CIFS资源,类似于FTP客户端。它允许用户连接到Samba服务器,浏览共享、上传和下载文件。


当然,这是smbclient命令行工具的一些选项及其含义:

-M, --message=HOST:发送消息到指定的主机。
-I, --ip-address=IP:使用指定的IP地址进行连接。
-E, --stderr:将消息输出到标准错误(stderr)而非标准输出(stdout)。
-L, --list=HOST:列出指定主机上可用的共享资源。
-T, --tar=<c|x>IXFvgbNan:使用命令行tar工具来创建或提取归档,其中参数c表示创建,x表示提取。
-D, --directory=DIR:指定开始操作的目录。
-c, --command=STRING:执行由分号分隔的命令字符串。
-b, --send-buffer=BYTES:更改传输/发送缓冲区的大小。
-t, --timeout=SECONDS:更改每个操作的超时时间。
-p, --port=PORT:连接到指定端口。
-g, --grepable:生成便于grep搜索的输出。
-q, --quiet:抑制帮助消息。
-B, --browse:使用DNS浏览SMB服务器。
帮助选项:

-?, --help:显示帮助信息。
--usage:显示简短的使用信息。
常见的Samba选项:

-d, --debuglevel=DEBUGLEVEL:设置调试等级。
--debug-stdout:将调试输出发送到标准输出。
-s, --configfile=CONFIGFILE:使用另一个配置文件。
--option=name=value:从命令行设置smb.conf的选项。
-l, --log-basename=LOGFILEBASE:日志/调试文件的基本名称。
--leak-report:在退出时启用talloc泄漏报告。
--leak-report-full:在退出时启用完整的talloc泄漏报告。
连接选项:

-R, --name-resolve=NAME-RESOLVE-ORDER:只使用这些名称解析服务。
-O, --socket-options=SOCKETOPTIONS:使用指定的socket选项。
-m, --max-protocol=MAXPROTOCOL:设置最大协议级别。
-n, --netbiosname=NETBIOSNAME:设置主NetBIOS名称。
--netbios-scope=SCOPE:使用指定的Netbios范围。
-W, --workgroup=WORKGROUP:设置工作组名称。
--realm=REALM:设置领域名称。
凭证选项:

-U, --user=[DOMAIN/]USERNAME[%PASSWORD]:设置网络用户名,可选地指定域和密码。
-N, --no-pass:不提示输入密码。
--password=STRING:输入密码。
--pw-nt-hash:提供的密码是NT散列。
-A, --authentication-file=FILE:从文件获取凭证。
-P, --machine-pass:使用存储的机器账户密码。
--simple-bind-dn=DN:用于简单绑定的DN。
--use-kerberos=desired|required|off:是否使用Kerberos认证。
--use-krb5-ccache=CCACHE:Kerberos的凭据缓存位置。
--use-winbind-ccache:使用winbind缓存进行认证。
--client-protection=sign|encrypt|off:为客户端连接配置使用的保护级别。
不推荐使用的遗留选项:

-k, --kerberos:已弃用,请迁移到--use-kerberos。
版本选项:

-V, --version:打印版本信息。
这些选项可以用来控制smbclient的行为,比如连接到服务器、列出共享、传输文件等。在命令行中使用这些选项可以更精确地控制命令的执行和输出。
案例

列出服务器上的共享:

smbclient -L 10.0.0.107 -U smb1%123456

-L参数用来列出指定服务器上的共享资源,-U后面指定用户名。

连接到一个共享:

smbclient //10.0.0.107/share1 -U smb1%123456

使用命令行方式上传和下载文件:

上传文件到共享:

smbclient //10.0.0.107/share1 -U 用户名 -c "put 本地文件路径 远程文件名"

从共享下载文件:

smbclient //10.0.0.107/share1 -U 用户名 -c "get 远程文件名 本地文件路径"

pdbedit

pdbedit 是管理 Samba 用户数据库的工具。它可以处理用户账户的创建、删除和编辑。以下是pdbedit命令的一些选项和它们的含义:

在Samba中,添加一个用户通常是一个两步过程:

  1. 创建系统用户:首先,需要在宿主操作系统中创建一个用户,这通常通过useradd命令完成。这是因为Samba服务通常需要与系统用户账户进行匹配,以便于控制访问和管理文件权限。
  2. 添加Samba用户:然后,为这个系统用户创建一个Samba账户,这通过smbpasswd -a命令完成,来添加用户到Samba的数据库,并为其设置一个Samba密码。

然而,pdbedit命令也可以直接添加Samba用户,但前提是系统用户已经存在。pdbedit提供了一个更高级的接口来管理Samba用户数据库。

使用pdbedit,可以更细粒度地控制用户属性。例如,使用pdbedit -a -u username将添加一个名为username的用户到Samba数据库中,但这个命令不会在系统用户中创建一个新用户。如果系统中没有一个与之对应的用户,Samba用户是无法正常工作的。

简而言之,pdbedit可以管理Samba的用户数据库,但它不会管理系统级的用户账户。因此,如果你需要创建一个新的Samba用户,你通常会先创建一个系统用户,然后使用smbpasswd -apdbedit -a为其添加Samba访问权限。

列出用户和详细信息
-L, --list:此选项列出所有Samba用户数据库中的用户。如果结合-v(详细模式),则可以查看更多详细信息。
用户账户的管理
-a, --create:创建一个新的用户账户。
-x, --delete:删除一个用户账户。
-r, --modify:修改一个现有的用户账户。
设置用户账户属性
-u, --user=USER:指定要操作的用户名。
-N, --account-desc=STRING:设置或修改用户账户的描述。
-f, --fullname=STRING:设置或修改用户的全名。
-h, --homedir=STRING:设置或修改用户的家目录。
-D, --drive=STRING:设置或修改用户的家目录驱动器(在Windows中映射为驱动器字母)。
-S, --script=STRING:设置或修改用户的登录脚本路径。
-p, --profile=STRING:设置或修改用户的用户档案路径(通常是Windows用户的漫游档案路径)。
-I, --domain=STRING:为用户设置或修改域名。
导入导出账户
-b, --backend=STRING:指定不同的密码数据库后端,默认为tdbsam。
-i, --import=STRING:从另一个后端导入账户信息。
-e, --export=STRING:将账户信息导出到另一个后端。
用户SID和机器账户管理
-U, --user SID=STRING:设置或修改用户的安全标识符(SID)。
-M, --machine SID=STRING:设置或修改机器账户的SID。
-m, --machine:表示操作的是机器账户,而不是普通用户账户。
用户策略和控制
-g, --group:与-i和-e结合使用时,操作的是用户组。
-P, --account-policy=STRING:设置特定的账户策略。
-C, --value=LONG:与-P结合使用,指定策略的值。
-c, --account-control=STRING:设置用户账户的控制标志。
--force-initialized-passwords:修复密码数据库中损坏的密码字符串。
-z, --bad-password-count-reset:重置用户的错误密码尝试次数。
-Z, --logon-hours-reset:重置用户的允许登录时间。
密码相关操作
-t, --password-from-stdin:从标准输入中读取密码,而不是交互式提示。
-K, --kickoff-time=STRING:设置用户账户的踢出时间。
--set-nt-hash=STRING:直接使用NT散列值设置密码,而不是明文密码。
帮助和版本信息
-?, --help:显示帮助信息,列出所有选项。
-V, --version:显示pdbedit的版本信息。
通用Samba选项
-d, --debuglevel=DEBUGLEVEL:设置Samba的调试等级。
-s, --configfile=CONFIGFILE:使用指定的Samba配置文件。
--option=name=value:直接通过命令行设置smb.conf的选项。
-l, --log-basename=LOGFILEBASE:设置日志文件的基础名称。
--leak-report:在退出时启用talloc泄漏报告。
--leak-report-full:在退出时启用完整的talloc泄漏报告。
案例

列出所有用户 (-L)

pdbedit -L

这个命令将列出所有Samba用户的用户名和SID。

详细列出所有用户 (-L -v)

pdbedit -Lv

添加新用户 (-a -u)

pdbedit -a -u username

这个命令将添加一个新的用户username到Samba数据库。在运行此命令后,你通常会被提示输入该用户的密码。

  • 修改现有用户的属性

    • 设置账户描述 (-N)*

      pdbedit -r -u username -N "Account description"
      
    • 设置全名 (-f)

      pdbedit -r -u username -f "Full User Name"
      
    • 设置主目录 (-h)

      pdbedit -r -u username -h "/home/username"
      

删除用户 (-x)

pdbedit -x -u username

这将从Samba数据库中删除用户username

修改用户密码(从标准输入) (-t)

pdbedit -r -u username -t

在使用此命令时,它将从标准输入(例如,终端)读取密码,而不是弹出密码提示。

导入/导出用户到不同的后端 (-i, -e, -b)

pdbedit -e tdbsam:/path/to/new/passdb.tdb -i smbpasswd:/path/to/old/passdb.smbpasswd

这个命令会将用户从smbpasswd格式的文件导入到tdbsam格式的数据库文件。

设置账户策略和值 (-P, -C)

pdbedit -P "maximum password age" -C 60

这将设置最大密码年龄策略的值为60天。

smbpasswd

smbpasswd 是 Samba 提供的一个工具,用于管理 Samba 用户密码。它允许管理员(root 用户)添加、删除和修改 Samba 用户账户,以及更改密码。当普通用户运行时,它允许用户更改自己的Samba密码。下面是smbpasswd命令的各个选项及其含义:

选项:
smbpasswd 是 Samba 提供的一个工具,用于管理 Samba 用户密码。它允许管理员(root 用户)添加、删除和修改 Samba 用户账户,以及更改密码。当普通用户运行时,它允许用户更改自己的Samba密码。下面是smbpasswd命令的各个选项及其含义:

-L:本地模式,通常用于管理本机上的Samba密码文件。
-h:显示帮助信息。
-s:通过标准输入进行密码提示,常用于脚本中以避免在命令行暴露密码。
-c smb.conf:指定使用特定的smb.conf配置文件,而不是默认位置的文件。
-D LEVEL:设置调试级别。数字越高,输出的调试信息越详细。
-r MACHINE:指定要管理的远程机器,通常与Samba域控制器交互时使用。
-U USER:指定远程用户名,格式为 SAM/用户名。
当由 root 用户或在本地模式运行时的额外选项:

-a:添加用户。如果用户已存在于系统中,但不在Samba的密码数据库中,此选项可添加他们。
-d:禁用用户。将用户标记为禁用状态,但不从数据库中删除。
-e:启用用户。如果用户被标记为禁用,此选项可重新启用他们。
-i:设置为域间信任账户,用于设置与其他域的信任关系。
-m:设置为机器账户,通常用于域加入操作时创建计算机账户。
-n:设置无密码。为用户账户设置一个空密码。
-W:通过标准输入使用LDAP管理员密码,通常用于与LDAP集成时。
-w PASSWORD:指定LDAP管理员密码。
-x:删除用户。从Samba的密码数据库中完全删除用户。
-R ORDER:设置名称解析顺序,如hosts, wins, bcast等。
这个命令在管理Samba用户时非常有用,例如在你设置或维护一个Samba服务器时。需要注意的是,添加Samba用户之前必须确保用户已经存在于系统中,即他们可以通过getent passwd命令找到。在实际使用时,你可能需要结合useradd命令先在系统中创建用户,然后使用smbpasswd -a来为其添加Samba访问权限。
案例

smbpasswd 是 Samba 服务中用于管理用户密码的命令。这个工具不仅用于设置和更改用户的 Samba 密码,而且还可以用来启用、禁用或删除用户的 Samba 账户。

以下是一些 smbpasswd 命令的使用示例:

添加新的 Samba 用户

首先确保系统用户已经存在(例如通过 useradd 命令创建),然后添加他们到 Samba 用户数据库:

smbpasswd -a username

这个命令会提示你为该用户输入密码。-a 选项表示添加用户。

删除 Samba 用户

要从 Samba 用户数据库中删除用户,使用以下命令:

smbpasswd -x username

-x 选项用于删除用户。

禁用 Samba 用户

如果想要禁用一个用户而不是完全删除他们,可以使用:

smbpasswd -d username

-d 选项将用户设置为禁用状态。

启用已被禁用的 Samba 用户

若用户已被禁用,要重新启用他们:

smbpasswd -e username

-e 选项将用户重新启用。

更改用户的 Samba 密码

作为系统管理员,要更改一个用户的 Samba 密码:

smbpasswd username

运行命令后,它会提示输入新的密码。

用户自己更改 Samba 密码

一个用户想要更改他们自己的密码,可以这样做:

smbpasswd

在不带用户名的情况下运行时,smbpasswd 将允许当前登录的用户更改他们自己的密码。

使用配置文件

如果你的 Samba 配置不是存储在默认位置,你可以使用 -c 选项指定配置文件路径:

smbpasswd -a username -c /path/to/smb.conf

这里,-c 选项让你指定一个自定义的 smb.conf 文件。

设置无密码的用户

创建一个不需要密码即可登录的用户账户:

smbpasswd -n username

-n 选项用于创建一个无密码的账户。

请注意,出于安全原因,不建议设置无密码账户或在脚本中明文传递密码。始终确保遵循最佳的安全实践,特别是在处理网络服务和用户凭据时。

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingYuyu_Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值