samba小计
samba小计
samba能干什么?什么场合用到它?
samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
Linux对于开发来说是一个非常好的系统,但是人机友好不如windows,我就通常在windows上用sourceinsight编辑代码,然后在Linux端编译运行,而且经常需要把音视频从Linux和windows端互相拷贝,这时候Samba就显得很方便了
Samba部署
安装debain
1
2
3
4debain
apt install -y samba
centos
yum install -y samba创建共享资源账户并配置密码
1
2
3
4在Samba服务器上新建一个专用访问Samba服务账户 (eg:smbuser)
useradd -s /sbin/nologin smbuser
设置密码
smbpasswd -a smbuser创建共享资源文件目录
1
2
3
4创建共享资源目录
mkdir /opt/share/
将文件归属设置为samba服务器中存在的专用来访问共享资源的用户
chown -R smbuser.smbuser share/配置文件解析( vim /etc/samba/smb.conf)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94[global]
# 设定 Samba Server 所要加入的工作组或者域。
workgroup = SAMBA
# 设置用户访问Samba Server的验证方式
security = user
# passdb backend就是用户后台的意思。
passdb backend = tdbsam
#设置Samba共享打印机的类型
printing = cups
#设置共享打印机的配置文件。
printcap name = cups
# 设置是否在启动Samba时就共享打印机
load printers = yes
# 共享打印机的属性为原来的
cups options = raw
[homes]
# comment是对该共享的描述,可以是任意字符串。
comment = Home Directories
# 允许访问该共享的用户
valid users = %S, %D%w%S
# 用来指定该共享是否可以浏览,yes为可以,no为不可以
browseable = No
# 设置是否只读
read only = No
#
inherit acls = Yes
[printers]
# 提供共享打印的参数设置
#共享描述
comment = All Printers
# 共享的目录
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
]
# 共享打印机驱动参数的设置
#共享描述
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[smbuser]
# 自定义的共享设置
#共享描述
comment = smbuser guest share
#共享目录-也就是前面创建的共享目录
path = /opt/share
#允许guest用户访问
public = yes
#允许smbuser 在共享目录下写入
writable = yes
#默认创建目录权限 rwxrwxr_x
directory mask = 0775
#默认创建文件权限 rwxrwxr_x
create mask = 0775
#允许访问该共享的用户
valid users = smbuser,root
#可写入共享的用户列表
write list = smbuser,root
#该指定共享目录可浏览
browseable = yes
#该指定共享资源可使用
available = yes
# 设置共享目录的管理员,具有完全权限-一般如非必要不要开启管理员权限
admin users = smbuser
共享配置完整示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53自定义共享名
[cherry]
描述符,是给系统管理员看的
comment = Home Directories
共享的路径
path = /home/cherry
是否公开,也就是是否能在网上邻居看到该共享
public = yes
共享的目录是否让所有人可见
browseable = yes
是否可写
writable = yes
是否拒绝匿名访问,仅当安全级别为 share 时才生效
guest ok = no
工作组,要设置成跟 Windows 的工作组一致
workgroup = WORKGROUP
其他 Linux 主机查看共享时的提示符
server string = Samba Server Version %v
用于在 Windows 网上邻居上显示的主机名
netbios name = MYSERVER
# 指定允许访问samba服务器的主机
hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13 # 定义安全级别
security = share
定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名
log file = /var/log/samba/log.%m
定义单个日志的最大容量(KB)
max log size = 50
# Samba 用户的存储方式,smbpasswd 表示明文存储,tdbsam 表示密文存储
passdb backend = tdbsam
客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访 问环境中,这样的设置可以提高服务器性能
deadtime = 10
设置显示的字符集
display charset = UTF8
# 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接
max connections = 0
# 设置匿名账户为nobody
guest account = nobody
是否在启动 Samba 时就共享打印机
load printers = yes
# 设置打印机使用的方式
cups options = raw
# 指定哪些用户可以访问,如果不指定则所有用户都可访问
valid users = user1 user2 user3
# 指定哪些用户不可以访问
invalid users = user1 user2
# 客户端上传文件的默认权限
create mask = 0775
# 客户端创建目录的默认权限
directory mask = 0775
设置可对文件进行写操作的用户
write list = user1 user2 user3
# 设置共享目录的管理员,具有完全权限
admin users = user1重启samba服务
1
2sudo systemctl restart smbd
sudo systemctl restart nmbd设置开机挂起磁盘3种方式
使用
/etc/fstab
文件1
2
3
4
5打开 /etc/fstab 文件:
sudo nano /etc/fstab
添加一行,其中包含以下信息:
(设备 挂载点 文件系统 类型 选项 转储 检验)
/dev/sda1 /mnt/mydisk ext4 defaults 0 0使用 systemd
1
2
3
4
5
6
7
8
9
10
11
12
13创建一个 systemd 单元文件,例如 /etc/systemd/system/mydisk.mount:
[Unit]
Description=Mount mydisk
[Mount]
What=/dev/sda1
Where=/mnt/mydisk
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target
启用并启动该单元:
sudo systemctl enable mydisk.mount
sudo systemctl start mydisk.moun使用 cron 守护进程
1
2
3
4只需在 /etc/crontab 文件中添加一行即可设置开机启动挂载
crontab -e
重启后挂载硬盘
@reboot mount /dev/sda /mnt/ssd/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 奥德彪的博客!