返回列表 发帖

CentOS8_在Docker中安装Samba

笺注:Docker的安装可参考 CentOS8_在Docker中使用Nginx的反向代理


查看Docker的版本信息:
[root@centos8 ~]# docker -v
Docker version 20.10.21, build baeda1f
[root@centos8 ~]#



######

从公网下载镜像:( 以下是下载MariaDB10.3.38的镜像 )
[root@centos8 ~]# docker pull mariadb:10.3.38
10.3.38: Pulling from library/mariadb
df6635ed1257: Pull complete
d5dcb717eef2: Pull complete
a070ce9ccedb: Pull complete
a053d9150480: Pull complete
381d7acd8833: Pull complete
589a0f4fa64a: Pull complete
c639e63296d1: Pull complete
705d9b9360b6: Pull complete
c63a93d49143: Pull complete
Digest: sha256:5157cee1d3297142bbcd7798787395086b3c1bd2f424362a02a022f203d1c944
Status: Downloaded newer image for mariadb:10.3.38
docker.io/library/mariadb:10.3.38
[root@centos8 ~]#


查看宿主机的所有镜像:
[root@centos8 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mariadb      10.3.38   c779ed869cd4   9 days ago      369MB
[root@centos8 ~]#


使用镜像“mariadb:10.3.38”创建并启动容器“Samba_1”:
[root@centos8 ~]# docker run -itd --name Samba_1 -p 445:445 -e MYSQL_ROOT_PASSWORD=888 -v /opt/share:/home/database_1 mariadb:10.3.38
9c2e702d9be36803d73931219441fda0694769869fbf9870b39c64922d347ab5
[root@centos8 ~]#

注释:
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 第一个445是宿主机的端口,暴露给外部直接访问;第二个445是容器的端口。
-e 环境配置 : 指定数据库管理员root@localhost的密码为888
-v 挂载目录 : 这里是把宿主机的目录/opt/share挂载到容器的目录/home/database_1;假如目录不存在,就会自动创建。
mariadb:10.3.38 : 镜像名称:版本号


在宿主机查看正在运行的容器:
[root@centos8 ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                                             NAMES
9c2e702d9be3   mariadb:10.3.38   "docker-entrypoint.s…"   50 seconds ago   Up 49 seconds   0.0.0.0:445->445/tcp, :::445->445/tcp, 3306/tcp   Samba_1
[root@centos8 ~]#

注释:宿主机的TCP 445端口,映射到容器“Samba_1”的TCP 445端口。


###

进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
root@9c2e702d9be3:/#

查看容器“Samba_1”的系统版本信息:
root@9c2e702d9be3:/# cat /etc/issue
Ubuntu 20.04.5 LTS \n \l

root@9c2e702d9be3:/# uname -a
Linux 9c2e702d9be3 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@9c2e702d9be3:/#


查看MariaDB的版本信息:
root@9c2e702d9be3:/# mysql -V
mysql  Ver 15.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
root@9c2e702d9be3:/#



在容器“Samba_1”中安装Samba:
root@9c2e702d9be3:/# whoami
root
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# apt-get update

root@9c2e702d9be3:/# apt-get -y install samba samba-common


查看Samba的版本:
root@9c2e702d9be3:/# smbd --version
Version 4.15.13-Ubuntu
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# dpkg -l |grep samba
ii  python3-samba                  2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        Python 3 bindings for Samba
ii  samba                          2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        SMB/CIFS file, print, and login server for Unix
ii  samba-common                   2:4.15.13+dfsg-0ubuntu0.20.04.1 all          common files used by both the Samba server and client
ii  samba-common-bin               2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        Samba common files used by both the server and the client
ii  samba-dsdb-modules:amd64       2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        Samba Directory Services Database
ii  samba-libs:amd64               2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        Samba core libraries
ii  samba-vfs-modules:amd64        2:4.15.13+dfsg-0ubuntu0.20.04.1 amd64        Samba Virtual FileSystem plugins
root@9c2e702d9be3:/#



查看Samba的主配置文件:(默认就是允许使用Samba用户验证、匿名用户)
root@9c2e702d9be3:/# cat /etc/samba/smb.conf |grep -v "^#"|grep -v "^;"|grep -v "^$"
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
root@9c2e702d9be3:/#



创建共享目录:
root@9c2e702d9be3:/# chmod -R 777 /home/database_1
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# mkdir -p /home/database_2
root@9c2e702d9be3:/# chmod -R 777 /home/database_2
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# mkdir -p /home/database3
root@9c2e702d9be3:/# chmod -R 777 /home/database3
root@9c2e702d9be3:/#



添加Samba用户:(使用Samba用户验证)
root@9c2e702d9be3:/# useradd -s /sbin/nologin zhuohua
root@9c2e702d9be3:/# smbpasswd -a zhuohua
New SMB password:
Retype new SMB password:
Added user zhuohua.
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# useradd -s /sbin/nologin user_1
root@9c2e702d9be3:/# smbpasswd -a user_1
New SMB password:
Retype new SMB password:
Added user user_1.
root@9c2e702d9be3:/#



###

在宿主机上修改容器“Samba_1”的Samba的主配置文件:
[root@centos8 ~]# docker cp Samba_1:/etc/samba/smb.conf ./
[root@centos8 ~]# vi smb.conf
追加:

## 用户zhuohua对目录/home/database_1里的数据可读可写;用户user_1对目录/home/database_1里的数据只可读:
[Share1] ##共享时目录显示的名称
        comment = 共享文件夹1
        path = /home/database_1
        public = no
        writeable = yes
        valid users = zhuohua,user_1
        read list = user_1
        write list = zhuohua

## 用户zhuohua对目录/home/database_2里的数据可读可写;用户user_1对目录/home/database_2里的数据不可读写:
[共享文件夹2] ##共享时目录显示的名称
        comment = 共享文件夹2
        path = /home/database_2
        public = no
        writeable = yes
        valid users = zhuohua
        write list = zhuohua

## 用户zhuohua对目录/home/database3里的数据只可读;用户user_1对目录home/database3里的数据不可读写:
[共享文件夹_share3] ##共享时目录显示的名称
        comment = 共享文件夹3
        path = home/database3
        public = no
        writeable = yes
        valid users = zhuohua
        read list = zhuohua


在宿主机上,往容器“Samba_1”上传修改好的文件:
[root@centos8 ~]# docker cp ./smb.conf Samba_1:/etc/samba/
[root@centos8 ~]#



###

在容器“Samba_1”里重启Samba服务:(Samba服务不会自动启动)
root@9c2e702d9be3:/# service smbd restart
[ OK ]pping SMB/CIFS daemon smbd        
[ OK ]rting SMB/CIFS daemon smbd     
   
root@9c2e702d9be3:/#

查看Samba的状态:
root@9c2e702d9be3:/# /etc/init.d/smbd status
* smbd is running
root@9c2e702d9be3:/#



创建任务计划:
root@9c2e702d9be3:/# apt-get -y install vim

root@9c2e702d9be3:/# crontab -e -u root
覆盖:
*/1 * * * * chmod -R 777 /home/database_1
*/1 * * * * chmod -R 777 /home/database_2
*/1 * * * * chmod -R 777 /home/database3

查看任务计划:
root@9c2e702d9be3:/# crontab -l -u root  
*/1 * * * * chmod -R 777 /home/database_1
*/1 * * * * chmod -R 777 /home/database_2
*/1 * * * * chmod -R 777 /home/database3
root@9c2e702d9be3:/#


要手动启动任务计划服务:(cron服务不会自动启动)
root@9c2e702d9be3:/# service cron status
* cron is not running
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# service cron start
[ OK ]rting periodic command scheduler cron        
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# service cron status
* cron is running
root@9c2e702d9be3:/#


###

Windows客户端访问容器“Samba_1”的Samba共享:(使用Samba用户验证)
图片1.png
2023-3-14 12:16


图片2.png
2023-3-14 12:16


图片3.png
2023-3-14 12:16



###

Ubuntu18.04桌面版的客户端访问容器“Samba_1”的Samba共享:(使用Samba用户验证)

打开Linux文件管理器,在左侧窗格中点击“其他位置”》“连接到服务器”:

smb://192.168.168.154/Share1
图片4.png
2023-3-14 12:17


图片5.png
2023-3-14 12:17


图片6.png
2023-3-14 12:17



实验至此,
## 用户zhuohua对目录/home/database_1里的数据可读可写;用户user_1对目录/home/database_1里的数据只可读(支持中文)

## 用户zhuohua对目录/home/database_2里的数据可读可写;用户user_1对目录/home/database_2里的数据不可读写(支持中文)

## 用户zhuohua对目录/home/database3里的数据只可读;用户user_1对目录home/database3里的数据不可读写(支持中文)














######
######

Samba匿名共享:

在容器“Samba_1”里修改Samba的主配置文件:
root@9c2e702d9be3:/# vi /etc/samba/smb.conf
追加:
[共享文件夹] ##共享时目录显示的名称
        comment = public
        path = /home/database4
        browseable = yes
        public = yes
        writeable = no

注释:要删除前面添加的代码。


再次,查看Samba的主配置文件:
root@9c2e702d9be3:/# cat /etc/samba/smb.conf |grep -v "^#"|grep -v "^;"|grep -v "^$"
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
[共享文件夹]
        comment = public
        path = /home/database4
        browseable = yes
        public = yes
        writeable = no

root@9c2e702d9be3:/#


创建共享目录:
root@9c2e702d9be3:/# mkdir -p /home/database4
root@9c2e702d9be3:/# chmod -R 777 /home/database4
root@9c2e702d9be3:/#


在容器“Samba_1”里重启Samba服务:
root@9c2e702d9be3:/# /etc/init.d/smbd restart
[ OK ]pping SMB/CIFS daemon smbd        
[ OK ]rting SMB/CIFS daemon smbd  

root@9c2e702d9be3:/#

查看Samba的状态:
root@9c2e702d9be3:/# service smbd status
* smbd is running
root@9c2e702d9be3:/#


###

Windows客户端访问容器“Samba_1”的Samba共享:(使用Samba匿名用户)
图片7.png
2023-3-14 12:19


图片8.png
2023-3-14 12:19


实验至此,
## 不需要用户名、密码验证就可以登录了
## 匿名用户对目录/home/database4里的数据只可读(支持中文)














######
######

登录容器“Samba_1”时,自动启动Samba服务、cron服务:

进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# whoami
root
root@9c2e702d9be3:/#
root@9c2e702d9be3:/# pwd
/
root@9c2e702d9be3:/#

root@9c2e702d9be3:/# cd ~
root@9c2e702d9be3:~# pwd
/root
root@9c2e702d9be3:~#

root@9c2e702d9be3:~# ls -alh      
total 32K
drwx------. 1 root root   67 Mar 13 04:10 .
drwxr-xr-x. 1 root root   85 Mar 13 01:17 ..
-rw-------. 1 root root 1.9K Mar 13 04:07 .bash_history
-rw-r--r--. 1 root root 3.1K Dec  5  2019 .bashrc
-rw-r--r--. 1 root root  161 Dec  5  2019 .profile
-rw-r--r--. 1 root root    0 Mar 13 01:20 .selected_editor
-rw-------. 1 root root  15K Mar 13 03:54 .viminfo
-rw-r--r--. 1 root root  165 Mar  2 04:44 .wget-hsts
root@9c2e702d9be3:~#


root@9c2e702d9be3:~# vi .bashrc
追加:
service smbd start
service cron start


root@9c2e702d9be3:~# tail -3 .bashrc  
#fi
service smbd start
service cron start

root@9c2e702d9be3:~#


在宿主机重启容器“Samba_1”:
[root@centos8 ~]# docker restart Samba_1
Samba_1
[root@centos8 ~]#


再次,进入容器“Samba_1”:
[root@centos8 ~]# docker exec -it Samba_1 /bin/bash
[ OK ]rting SMB/CIFS daemon smbd        
[ OK ]rting periodic command scheduler cron     
   
root@9c2e702d9be3:/#

笺注:至此,登录容器“Samba_1”时,会自动启动Samba服务、cron服务。





相关文章:
用户管理
Samba用户验证(一)
本地备份站点目录和数据库+crontab计划任务

CentOS8_在Docker中安装vsftpd

返回列表