【笔记】samba shell 脚本 离线安装 - Ubuntu 20.04

news2024/9/22 1:23:52

前言

按照官网调试代码、网上各种步骤来走(还收费)都不行
结果发现是防火墙问题
公司服务器安装的ufw使用失效,导致端口号放行添加失败
换用firewall-cmd成功
现在免费放下代码,气死他们收费的

目录

├── home
    │    ├── katja
    │    │    ├── samba
    │    │    │    ├── install_samba.sh
    │    │    │    ├── smb.conf
    │    │    │    ├── xxxxx.deb
    │    │    │    ├── ...
    │    │    │    └──
    │    │    ├── localoss
    │    │    │    ├── test  (被共享的目录)
    │    │    │    └──
    │    │    └──
    │    └──   
    └──

代码

install_samba.sh

#!/bin/bash
# -*- coding: utf-8 -*-
# @Time  : 2022/11/14 14:38
# @Author: katja
# @File  : install_samba.sh
# @Desc  : samba 共享文件夹
# 
path=/home/katja/samba
share_user=tps_share
share_group=sambashare
share_path=/home/katja/localoss

# 安装samba
is_exist(){
package=$1
package_deb=$2
if test ! -z "$(dpkg -l | grep -w $package)";then
	echo -e "$package exist "
else
	dpkg -i ${path}/$package_deb
fi
}

install(){
	is_exist python3-ldb python3-ldb_2%3a2.2.3-0ubuntu0.20.04.3_amd64.deb
	is_exist libldb2 libldb2_2%3a2.2.3-0ubuntu0.20.04.3_amd64.deb
	is_exist libsmbclient libsmbclient_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist libwbclient0 libwbclient0_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist samba-libs samba-libs_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	
	is_exist python3-dnspython python3-dnspython_1.16.0-1ubuntu1_all.deb
	is_exist python3-crypto python3-crypto_2.6.1-13ubuntu2_amd64.deb
	is_exist python3-tdb python3-tdb_1.4.3-0ubuntu0.20.04.1_amd64.deb
	is_exist python3-samba python3-samba_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist samba-common samba-common_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_all.deb
	is_exist samba-common-bin samba-common-bin_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist tdb-tools tdb-tools_1.4.3-0ubuntu0.20.04.1_amd64.deb
	is_exist samba samba_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist attr attr_1%3a2.4.48-5_amd64.deb
	is_exist libibverbs1 libibverbs1_28.0-1ubuntu1_amd64.deb
	is_exist ibverbs-providers ibverbs-providers_28.0-1ubuntu1_amd64.deb
	is_exist librdmacm1 librdmacm1_28.0-1ubuntu1_amd64.deb
	is_exist libboost-iostreams1.71.0 libboost-iostreams1.71.0_1.71.0-6ubuntu6_amd64.deb
	is_exist librados2 librados2_15.2.16-0ubuntu0.20.04.1_amd64.deb
	is_exist libcephfs2 libcephfs2_15.2.16-0ubuntu0.20.04.1_amd64.deb
	is_exist python3-gpg python3-gpg_1.13.1-7ubuntu2_amd64.deb
	is_exist python3-pyparsing python3-pyparsing_2.4.6-1_all.deb
	is_exist python3-packaging python3-packaging_20.3-1_all.deb
	is_exist python3-markdown python3-markdown_3.1.1-3_all.deb
	is_exist python3-pygments python3-pygments_2.3.1+dfsg-1ubuntu2.2_all.deb
	is_exist samba-dsdb-modules samba-dsdb-modules_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	is_exist samba-vfs-modules samba-vfs-modules_2%3a4.13.17~dfsg-0ubuntu1.20.04.1_amd64.deb
	# 安装完毕后会自动启动
	echo 'starting service'
    sudo systemctl status nmbd smbd
}
install


# 防火墙
sudo firewall-cmd --add-service=samba
sudo firewall-cmd --add-port=137/udp
sudo firewall-cmd --add-port=138/udp
sudo firewall-cmd --add-port=139/tcp
sudo firewall-cmd --add-port=445/tcp

group_add(){
	# 新建组
	sudo groupadd ${share_group}
	# 主目录
	sudo mkdir ${share_path}
	# 群组所有权
	sudo chgrp ${share_group} ${share_path}
}

normal_add(){
	group_add
	user_name=normal
	# 普通用户 (ubuntu的)无需Ubuntu登录密码
 	sudo useradd -M -d ${share_path}/$user_name -s /usr/sbin/nologin -G ${share_group} $user_name
	# 主目录
	sudo mkdir ${share_path}/$user_name
	# 权限
	sudo chown $user_name:${share_group} ${share_path}/$user_name
	# 新创建文件继承所属组
	sudo chmod 2770 ${share_path}/$user_name
	# 密码设置
	sudo smbpasswd -a $user_name
	# 启用
	sudo smbpasswd -e $user_name
}
#normal_add  # 我的业务用不到,所以注释了

admin_add(){
	group_add
	user_name=sadmin
	# 管理员用户
	sudo useradd -M -d ${share_path}/users -s /usr/sbin/nologin -G ${share_group} $user_name
	# 共享目录
	sudo mkdir ${share_path}/users
	# 权限
	sudo chown $user_name:${share_group} ${share_path}/users
	# 新创建文件继承所属组
	sudo chmod 2770 ${share_path}/users
	# 密码设置
	sudo smbpasswd -a $user_name
	# 启用
	sudo smbpasswd -e $user_name
}
#admin_add # 同上

file_add(){
	# 无密码用户
	sudo mkdir -p ${share_path}/test
	sudo chmod -R 777 ${share_path}/test
	
	# 创建Ubuntu的新用户
	sudo useradd  smbuser
	sudo passwd  smbuser
	# 新用户加入smb服务器
	sudo smbpasswd -a smbuser	
}
file_add

# 配置smb.conf
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cp smb.conf /etc/samba/smb.conf

# 重启服务
echo 'starting smbd'
sudo service smbd restart

echo 'starting smbd'
sudo service nmbd restart

# 查看状态
sudo systemctl status smbd nmbd

smb.conf

在最末尾追加代码 share

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which 
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic 
# errors. 

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKSPACE	

# server string is the equivalent of the NT Description field
   server string = %h server (Samba, Ubuntu)

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
;   interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
;   bind interfaces only = yes



#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
   max log size = 1000

# We want Samba to only log to /var/log/samba/log.{smbd,nmbd}.
# Append syslog@1 if you want important messages to be sent to syslog too.
   logging = file
   
   log level = 2

# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d


####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller". 
#
# Most people will want "standalone server" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
   pam password change = yes

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
   map to guest = bad user

########## Domains ###########

#
# The following settings only takes effect if 'server role = primary
# classic domain controller', 'server role = backup domain controller'
# or 'domain logons' is set 
#

# It specifies the location of the user's
# profile directory from the client point of view) The following
# required a [profiles] share to be setup on the samba server (see
# below)
;   logon path = \\%N\profiles\%U
# Another common choice is storing the profile in the user's home directory
# (this is Samba's default)
#   logon path = \\%N\%U\profile

# The following setting only takes effect if 'domain logons' is set
# It specifies the location of a user's home directory (from the client
# point of view)
;   logon drive = H:
#   logon home = \\%N\%U

# The following setting only takes effect if 'domain logons' is set
# It specifies the script to run during logon. The script must be stored
# in the [netlogon] share
# NOTE: Must be store in 'DOS' file format convention
;   logon script = logon.cmd

# This allows Unix users to be created on the domain controller via the SAMR
# RPC pipe.  The example command creates a user account with a disabled Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u

# This allows machine accounts to be created on the domain controller via the 
# SAMR RPC pipe.  
# The following assumes a "machines" group exists on the system
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u

# This allows Unix groups to be created on the domain controller via the SAMR
# RPC pipe.  
; add group script = /usr/sbin/addgroup --force-badname %g

############ Misc ############

# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
;   include = /home/samba/etc/smb.conf.%m

# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
;   idmap config * :              backend = tdb
;   idmap config * :              range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash

# Setup usershare options to enable non-root users to share folders
# with the net usershare command.

# Maximum number of usershare. 0 means that usershare is disabled.
#   usershare max shares = 100

# Allow users who've been granted usershare privileges to create
# public shares, not just authenticated ones
   usershare allow guests = yes

#======================= Share Definitions =======================

# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home directory as \\server\username
;[homes]
;   comment = Home Directories
;   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
;   create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
;   directory mask = 0700

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \\server\username
# This might need tweaking when using external authentication schemes
;   valid users = %S

# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
;   write list = root, @lpadmin
security = user
#[users]
#   comment = share folder with usrname and passwd
#   path = /home/katja/users
#   browseable = yes
#   read only = no
#   writeable = yes
#   force create mode = 0660
#   force directory mode = 2770
#   valid users = @sambashare @sadmin
#   #available = yes
#   # public = yes
#   #create mode = 0644
#   #directory mode = 0755
   
#[normal]
#	comment = normal user
#	path = /home/katja/normal
#	browseable = no
#    read only = no
#    force create mode = 0660
#    force directory mode = 2770
#    valid users = normal @sadmin
   
[share]
    comment = Ubuntu File Server Share
	public = no
    path = /home/katja/localoss/test
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0755   
# testparm

deb 包

链接:https://pan.baidu.com/s/10Iy3b4jIJnZM0srPlh2HvA
提取码:pptd

使用方法

  1. 把deb包、bash文件、conf文件一起放到你想要放的路径下,假设这个路径是A
    则,修改bash文件里path为A

  2. sudo bash ./install_samba.sh运行
    中途会停下来4次让你输入账号密码
    前2次是让你输入新用户登录Ubuntu的密码
    后2次是让你输入这个新用户在Samba服务器里的登录密码

  3. 最后显示状态,不代表一定创建成功
    在这里插入图片描述

  4. 查看当前电脑ip ip address : 我的是192.168.10.142

  5. 用其他电脑试试能否访问

  • windows——
    在这里插入图片描述
  • linux ubuntu —— smbclient //192.168.10.142
    在这里插入图片描述
    centos 是mbclient
    如果没有就直接安装

如图就是成功了

失败

  1. NT_STATUS_HOST_UNREACHABLE
  • 查看SMB配置文件是否正确 testparam /etc/samba/smb.conf
    在这里插入图片描述
  • 确认防火墙已经通过了samba和端口
    (按照我的脚本应该没有问题)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux备份mysql8.0数据库脚本

文章目录环境要求步骤1、创建一个.sh文件编写shell脚本2、添加定时任务环境要求 linux系统&#xff0c;安装了mysql8.0 步骤 1、创建一个.sh文件编写shell脚本 创建文件的命令&#xff1a; vim ***.shshell文件文件参考自文章 链接 export LANGen_US.UTF-8 #注意&#xf…

测试开发技术:Python测试框架Pytest的基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

十五、Lua 协同程序(coroutine)的学习

Lua 协同程序(coroutine) 什么是协同(coroutine)&#xff1f; Lua 协同程序(coroutine)与线程比较类似&#xff1a;拥有独立的堆栈&#xff0c;独立的局部变量&#xff0c;独立的指令指针&#xff0c;同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功…

2646-61-9, 脯氨酰内肽酶(PEP)底物: Z-GPLGP-OH

编号: 160473中文名称: 脯氨酰内肽酶&#xff08;PEP&#xff09;底物&#xff1a;Z-Gly-Pro-Leu-Gly-ProCAS号: 2646-61-9单字母: Z-GPLGP-OH三字母: Cbz-Gly-Pro-Leu-Gly-Pro-COOH氨基酸个数: 5分子式: C28H39O8N5平均分子量: 573.64精确分子量: 573.28等电点(PI): -pH7.0时的…

Arduino程序设计(三) 光照采集 + 温度采集

光照采集 温度采集前言一、光敏电阻检测环境光二、DS18B20检测环境温度总结参考文献前言 本文主要介绍两种常见的传感器采集环境参数&#xff0c;即光照传感器和温度传感器。光照传感器采用光敏电阻GL3516&#xff08;5-10K&#xff09;检测环境光。温度传感器采用DS18B20检测…

2022Q3家电行业高增长细分市场分析(含热门品类数据)

2022年&#xff0c;在大环境的影响下&#xff0c;大众消费偏好更趋于理性化、追求高性价比&#xff0c;不少行业增速有所放缓&#xff0c;在此背景下&#xff0c;2022年Q3季度中&#xff0c;消费市场中仍有一些高增长概念涌现。 在家电行业中&#xff0c;我们发现了3个高增长品…

【重识云原生】第六章容器基础6.4.9.5节——端点切片(Endpoint Slices)

1 EndpointSlice特性 Kubernetes v1.21 [stable] 端点切片&#xff08;EndpointSlices&#xff09; 是一个新 API&#xff0c;它提供了 Endpoint API 可伸缩和可拓展的替代方案。EndpointSlice 会跟踪 Service Pod 的 IP 地址、端口、readiness 和拓扑信息。 在 Kubernetes v…

一文看懂页面置换算法

页面置换算法分为两类 1、局部页面置换算法 最优页面置换算法&#xff08;OPT、optimal&#xff09;先进先出算法&#xff08;FIFO&#xff09;最近最久未使用算法&#xff08;LRU,Least Recently Used&#xff09;时钟页面置换算法&#xff08;Clock&#xff09;最不常用算法…

【算法 | 实验18】在字符矩阵中查找给定字符串的所有匹配项

文章目录题目描述思路分析bug记录&#xff1a;"error: >> should be > > within a nested template argument list"代码题目描述 题目 在字符矩阵中查找给定字符串的所有匹配项 给定一个MN字符矩阵&#xff0c;以及一个字符串S&#xff0c;找到在矩阵中所…

给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件

文章目录一、前言二、发现提交的临时文件三、去掉临时文件的方法3.1 添加.gitignore3.2 删除临时文件缓存3.3 添加后的效果一、前言 最近维护代码过程中&#xff0c;发现某APP代码库里被提交了许多临时文件&#xff0c;而这些临时文件每次都会变化&#xff0c;所以导致每次修改…

为什么要写单测

一、什么是单元测试 “在计算机编程中&#xff0c;单元测试又称为模块测试&#xff0c;是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&#xff0c;一个单元就是单个程序、函数、过程等&#xff1b;对于面向对象编程&#xff0c;最…

大屏经典组件:“无限滚动” 从分析到开发

&#x1f4d6;阅读本文&#xff0c;你将 理解大屏 “无限滚动组件” 的开发思路跟随作者&#xff0c;一步步完成一个高性能 “无限滚动组件” 的开发收获一份该实现的粗糙源码。 一、无限滚动&#xff1a;事件/告警 的有力帮手 1.1 为什么需要滚动列表 大屏之所以 “炫酷” …

稳压二极管稳压电路如何设计

在一些电流不大的地方&#xff0c;一般毫安级别&#xff0c;有时候我们可以利用稳压二极管去设计一个我们需要的电压。 大家可以看下稳压二极管的伏安曲线 在反向电压下&#xff0c;尽管电流在很大的范围内变化&#xff0c;而稳压二极管两端的电压却基本上稳定在击穿电压附近&a…

[附源码]java毕业设计旅游产品销售管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CISCN 2022 初赛 web 复现

[CISCN 2022 初赛]ezpop 可以看到版本&#xff0c;那么直接上网找链子打 www.zip 查看路由&#xff0c;是 Index/test&#xff0c;然后 post 传参 a <?php // 保证命名空间的一致 namespace think {// Model需要是抽象类abstract class Model {// 需要用到的关键字priv…

【vue】vuex中modules的基本用法

1&#xff0c;什么时候用modules 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 为了解决以上问题&#xff0c;Vuex 允许我们将 store 分割成模块&#xff08;module&#xff09…

NFT交易平台开发 创建NFT数字藏品平台

为什么需要 NFT 市场&#xff1f; NFT Marketplace 允许用户购买、出售、交易、查看或创建自己的 NFT&#xff0c;就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入 NFT 市场&#xff0c;但要做到这一点&#xff0c;用户必须满足以下要求&a…

第3关:节点状态检查、数据查看和更新

首先&#xff0c;需要启动服务器&#xff0c;并使用zkCli.sh连接服务器&#xff0c;进入客户端命令行界面&#xff08;如第一关所述&#xff09;。 节点状态包含以下信息&#xff1a; czxid: 节点创建时的时间戳。mzxid: 节点最新一次更新发生时的时间。ctime&#xff1a; 节…

[附源码]java毕业设计篮球装备商城系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

微服务中的服务发现是什么?

作者&#xff1a;罗泽轩 摘要&#xff1a;本文通过服务发现的相关背景和 APISIX 对于服务发现的应用与实践&#xff0c;来介绍微服务中的服务发现内容。 在互联网刚开始出现的年代&#xff0c;人们要想访问某个在线服务&#xff0c;需要输入一长串的 IP 地址。IP 地址虽然不长&…