2025年5月21日 星期三 乙巳(蛇)年 二月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

使用 shell 脚本一键安装 Samba

时间:02-27来源:作者:点击数:14
CDSY,CDSY.XYZ

1 配置本地 yum 源

1.1 删除原有的 repo 文件

  • [root@samba_shell_install ~]$ cd /etc/yum.repos.d/
  • [root@samba_shell_install yum.repos.d]$ rm -rf ./*

1.2 编写新的 repo 文件

  • [root@samba_shell_install yum.repos.d]$ vi yum.repo
  • [AppStream]
  • name=AppStream
  • baseurl=file:///mnt
  • gpgcheck=0
  • enabled=1

1.3 挂载光盘并设置永久挂载

  • [root@samba_shell_install yum.repos.d]$ mount /dev/cdrom /mnt/
  • mount: /dev/sr0 写保护,将以只读方式挂载
  • [root@samba_shell_install yum.repos.d]$ vi /etc/fstab
  • /dev/cdrom /mnt iso9660 default 0 0
  • [root@samba_shell_install yum.repos.d]$ mount -a

1.4 验证本地 yum 源是否可用

  • [root@samba_shell_install yum.repos.d]$ yum makecache
  • 已加载插件:fastestmirror
  • Determining fastest mirrors
  • AppStream | 3.6 kB 00:00:00
  • (1/4): AppStream/group_gz | 153 kB 00:00:00
  • (2/4): AppStream/primary_db | 6.1 MB 00:00:00
  • (3/4): AppStream/filelists_db | 7.2 MB 00:00:00
  • (4/4): AppStream/other_db | 2.6 MB 00:00:00
  • 元数据缓存已建立
  • [root@samba_shell_install yum.repos.d]$ yum -y install vim net-tools bash-completion

2 编写 shell 脚本

2.1 编写shell脚本安装samba服务

  • [root@samba_shell_install ~]$ vim install_samba.sh
  • #!/bin/bash
  • if [ "$#" -ne 1 ]; then #检查传递给脚本的参数数量($#)是否不等于(-ne)1。如果参数数量不是1,则执行then后面的代码块
  • echo "脚本运行路径为: $0 /dir/" #在参数数量不是1的情况下,输出一个错误消息,说明脚本需要一个参数(即共享目录的路径),并且该参数应该跟在脚本名称($0)后面。
  • exit 1 #如果参数数量不正确,则退出脚本,并返回一个非零的退出状态码
  • else
  • dir="$1" #将传递给脚本的第一个参数($1)赋值给变量dir
  • if ! [[ "$dir" =~ ^/ ]]; then #检查dir变量是否以根目录开头。如果不以根目录开头(即不是一个绝对路径),则执行then后面的代码块
  • echo "请提供一个绝对路径:" #如果dir不是绝对路径,则输出一个错误消息,要求用户提供一个绝对路径
  • exit 1
  • fi
  • if ! rpm -q samba >/dev/null; then #使用rpm命令查询是否已安装samba软件包。>/dev/null将输出重定向到空设备,即不显示任何输出。如果samba没有安装(rpm -q samba返回非零状态码),则执行then后面的代码块
  • echo "开始安装samba服务" #如果samba没有安装,则输出一个消息说明开始安装
  • sleep 2 #暂停脚本执行2秒钟,可能是为了让用户看到前面的消息
  • yum -y install samba #使用yum命令自动安装samba软件包
  • if [ $? -ne 0 ]; then #检查上一条命令执行后的返回状态($?)是否不等于(-ne)0,如果不等于0,则执行then后面的代码块
  • echo "服务未正确安装" #如果yum命令执行失败则输出一个错误消息,告知用户安装失败
  • exit 1
  • fi
  • fi
  • dirconf="/etc/samba/smb.conf" #将smb.conf文件的路径赋值给变量dirconf,这个文件是Samba的主要配置文件
  • cat >> "$dirconf" <<EOF #使用cat命令将由<<EOF开始和EOF结束的部分的内容追加到smb.conf文件的末尾,定义了一个新的Samba共享
  • [share] #这是共享的名称。在Windows的网络浏览器中,会看到这个名称作为共享文件夹的名称
  • comment = share all #这是关于此共享的描述或注释。当用户在网络浏览器中查看此共享时,会看到这个描述
  • path = $dir #将目录($dir)作为共享文件夹的实际路径
  • browseable = yes #表明此共享可以在网络浏览器中被浏览。如果设置为 no,则用户需要知道确切的共享名称才能访问它
  • public = yes #表明此共享是公共的,不需要用户名和密码即可访问
  • writable = no #表明此共享是只读的,用户不能在此共享上写入或修改文件。如果设置为 yes,则用户可以在此共享上创建、修改和删除文件
  • EOF
  • if [ ! -d "$dir" ]; then #检查目录($dir)是否存在,如果不存在,则执行then后面的代码块
  • mkdir -p "$dir" #创建目录($dir)
  • fi
  • chmod 777 "$dir" #将目录($dir)赋予可读、可写、可执行权限(777)
  • chown nobody:nobody "$dir" #设置目录($dir)的主、组均为nobody
  • echo "test" > "$dir/test.txt" #在共享目录中创建一个名为test.txt的文件,并写入内容“test”
  • systemctl start smb #使用systemctl命令启动Samba服务
  • if [ $? -ne 0 ]; then #检查上一条命令返回值($?)是否不等于0,如果不等于0,则执行then后面的代码块
  • echo "服务启动失败。请检查配置文件" #samba服务重启失败,告知用户
  • else
  • echo "samba 配置完毕,请验证" #samba服务重启成功,告知用户配置完成
  • fi
  • fi
  • [root@samba_shell_install ~]$ chmod 777 install_samba.sh
  • [root@samba_shell_install ~]$ ./install_samba.sh /share

2.2 添加samba用户并设置密码

  • [root@samba_shell_install ~]$ useradd sambauser
  • [root@samba_shell_install ~]$ smbpasswd -a sambauser
  • New SMB password:
  • Retype new SMB password:
  • Added user sambauser.

2.3 将用户添加到samba数据库中

  • [root@samba_shell_install ~]$ pdbedit -a -u sambauser
  • new password:
  • retype new password:
  • Unix username: sambauser
  • NT username:
  • Account Flags: [U ]
  • User SID: S-1-5-21-1048911917-1102794934-2356885306-1000
  • Primary Group SID: S-1-5-21-1048911917-1102794934-2356885306-513
  • Full Name:
  • Home Directory: \\samba_shell_install\sambauser
  • HomeDir Drive:
  • Logon Script:
  • Profile Path: \\samba_shell_install\sambauser\profile
  • Domain: SAMBA_SHELL_INSTALL
  • Account desc:
  • Workstations:
  • Munged dial:
  • Logon time: 0
  • Logoff time: 三, 06 2 2036 23:06:39 CST
  • Kickoff time: 三, 06 2 2036 23:06:39 CST
  • Password last set: 五, 14 6 2024 17:40:52 CST
  • Password can change: 五, 14 6 2024 17:40:52 CST
  • Password must change: never
  • Last bad password : 0
  • Bad password count : 0
  • Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  • [root@samba_shell_install ~]$ pdbedit -L
  • sambauser:1001:

3 验证

3.1 在物理机中使用 win+R 调出运行窗口,按照图片输入samba服务器ip地址和共享文件夹名

在这里插入图片描述
在这里插入图片描述

文件夹、文档均可查看

在这里插入图片描述
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐