在ubuntu上创建自己的samba服务器

samba

类Unix(Gnu/Linux)操作系统上用来和标准Windows文件系统互相通信的一种程序套件;Samba允许类Unix系统和Windows系统共享文件和打印机,忽略两个系统间的差异性,从而实现共存。

在ubuntu上安装Samba

1
sudo apt update && sudo apt install -y samba

修改配置文件,设置共享目录

1
2
# 创建共享目录
$ mkdir /tmp/share
1
2
# 将共享目录添加到配置文件中
$ sudo vim /etc/samba/smb.conf

将下面的内容追加到文件末尾:

1
2
3
4
5
[share]
comment = Samba share directory # 共享目录说明
path = /tmp/share # 共享目录的系统路径
read only = yes # 是否只读
browsable = yes # 是否可浏览

修改默认端口(适用于公网访问的场景,内网访问可以不用修改)

1
$ sudo vim /etc/samba/smb.conf

将下面的内容追加到[global]部分的末尾(如果端口配置已存在,则直接修改端口号)

1
2
3
[global]
...
smb ports = 4450 1390 #想要指定的端口号,原本为445 139

重启smbd守护进程

1
$ sudo systemctl restart smbd

查看修改后的端口号是否生效

1
2
$ ss -nltp | grep 4450
$ ss -nltp | grep 1390

配置防火墙ufw

1
2
3
4
# 如果开启了ufw,则需要将samba服务添加到允许访问服务列表中
sudo ufw allow samba
# 如果重新配置了端口,则需要指定允许访问的端口号
sudo ufw allow [port] # 可以在端口号后面加上tcp或者udp,如1390/tcp、1390/udp

创建samba用户账户

samba默认不使用系统账户,因此,我们需要为共享目录设置一个用户名和密码:

1
2
sudo smbpasswd -a $USER
# 该命令会将当前用户加入到samba的用户中,并提示设置该用户对应的密码

验证samba服务的可用性

1
2
3
4
5
sudo apt install smbclient
# 验证可用的samba共享目录
smbclient -L samba_server_ip
# 如果修改了默认端口号,还需要手动指定端口号
smbclient -p 1390 -L samba_server_ip

如果服务正常的话,会出现如下内容:

1
2
3
4
5
6
7
8
9
Enter WORKGROUP\pengkai's password: 

Sharename Type Comment
--------- ---- -------
sambashare Disk Samba And linux
www-data Disk apache web root
print$ Disk Printer Drivers
IPC$ IPC IPC Service (kyleVps server (Samba, Ubuntu))
SMB1 disabled -- no workgroup available

在终端中连接samba共享目录

1
2
3
4
5
6
7
8
9
10
11
smbclient -U [user] [-p port] //[samba_ip]/[share_directory] 
# 上述命令需要指定登陆用户和samba服务器ip以及共享目录,随后系统会提示输入密码
# 密码验证通过之后会进入smb的命令行交互界面:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Feb 21 18:42:49 2021
.. D 0 Sun Feb 21 18:42:18 2021
Test File N 20 Sun Feb 21 18:42:49 2021

971515904 blocks of size 1024. 843676384 blocks available
smb: \>

将samba挂载至指定目录下

1
未完待续

至此,samba的安装、配置和使用就说完了。

nmap命令使用教程

  1. 扫描单个目标地址:

    1
    nmap 192.168.0.100
  2. 扫描多个目标地址

    1
    nmap 192.168.0.100 192.168.0.105
  3. 扫描一个范围内的目标地址

    1
    nmap 192.168.0.100-200
  4. 扫描目标地址所在的某个网段:

    1
    nmap 192.168.0.100/24
  5. 扫描主机列表targets.txt文件中的所有目标地址

    1
    nmap -iL ~/targets.txt
  6. 扫描除某一个目标地址之外的所有目标地址

    1
    nmap 192.168.0.100/24 -exclude 192.168.0.105
  7. 扫描除某一文件中的目标地址之外的目标地址

    1
    nmap 192.168.0.100/24 -exceludefile ~/targets.txt
  8. 扫描某一目标地址的21、22、23、80端口

    1
    nmap 192.168.0.100 -p 21,22,23,80
  9. 对目标地址进行路由跟踪

    1
    nmap --traceroute 192.168.0.100
  10. 扫描目标地址所在C段的在线状况

    1
    nmap -sP 192.168.0.100/24
  11. 目标地址的操作系统指纹识别

    1
    nmap -O 192.168.0.100
  12. 目标地址提供的服务版本检测

    1
    nmap -sV 192.168.0.105
  13. 探测防火墙状态

    1
    nmap -sF -T4 192.168.0.100

string-in-file-search

在指定目下寻找包含指定字符串的文件:

  1. 输出文件名和内容
1
grep mysqli_connect ./

其中,,

  • 加入-r可以递归搜索

  • 加入-l可以只打印匹配的文件名

  • 加入参数-e可以支持正则表达式

  • 加入参数-i可以不区分大小写

  • 加入参数-c可以指定匹配的行数

  • 加入-v可以查出不匹配指定字符串的行数

  1. 替换上述匹配命令中的匹配字符串

    1
    sed -i "s/mysqli_connect/mysql_connect/g" `grep mysqli_connect -rl ./`

    其中,-i表示替换立即生效

在windows 10中访问wsl(linux子系统)的方式(反过来又如何)

在windows文件管理器中访问wsl(windows subsystem for linux)文件系统

  1. 进入安装好的wsl终端,输入如下命令:
    1
    $ explorer.exe .
    其中,explorer.exe为文件管理器的可执行文件,.代表当前目录(家目录)。

    在wsl中访问windows的本地文件

  2. 默认情况下,windows的各个分区以盘符作为挂载点,在wsl中可以通过目录/mnt/c进行访问,其中c代表C盘,其他分区依次类推。
    1
    $ cd /mnt/c

    在linux哲学中,一切皆是文件。

win10企业版激活方法

本文主要介绍如何通过kms服务器实现Windows 10专业版和企业版激活。

  • 安装完系统之后,按住Win+X键,选择Windows PowerShell(管理员),在弹出的窗口中输入下列命令:

    1
    2
    3
    4
    5
    6
    7
    8
    # win10专业版用户
    slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
    slmgr /skms kms.03k.org
    slmgr /ato
    # win10企业版用户
    slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43
    slmgr /skms kms.03k.org
    slmgr /ato
  • 考虑到一般笔记本厂商会预装win10家庭版,所以,在使用上面的办法之前需要先升级到win10专业版。步骤如下:

    1. 打开设置页面,选择更新和安全,继续选择激活,点击更改产品密钥,输入:

      1
      J7QT3-3GCPG-9GVWT-CH2XR-GMRJM

      点击下一步

    2. 在提示页面点击更新即可。

代码大全读后感

利用隐喻对编程进行更加深刻的理解

  1. 公式与启发之间的区别是微妙的,体现在它们与答案之间的直接程度:公式直接给予指令;而启发则告诉你该怎样找到这些指令,或者告诉你到哪里寻找它们。
  2. 隐喻仅仅是启发,而不是公式,因此,它们更倾向于比较随便,无拘无束。

    为每个工作选择合适的工具,是成为一个优秀程序员的首要素质之一。

linux上的实用软件清单(个人用)

为什么要列这个清单

在使用gnu linux(后面均简称为linux)操作系统的过程当中,总有一些软件让你觉得即使没有windows也能让自己的工作和生活变得更加便利,因此,为了方便后面因为更换发行版或者因为不可控因素导致系统损坏而必须重新安装linux系统,特别将自己平时用的比较多的软件列出来以供后面安装新系统之后能够快速恢复到正常工作和生活状态。个人觉得,对于linux用户来说,相对于windows系统中软件来源的不可控性和零散性,linux系统自带的包管理器绝对是节约我们软件安装时间的一大利器。而且更便于自动化安装和初始化,而作为软件开发者,良好的编程环境更是完胜windows系统。也希望这个清单能让自己在今后的软件开发生涯中更加注重时间的重要性,不要浪费时间在一些无意义的折腾上,毕竟,系统是拿来用的,高效才是操作系统带给我们最终的目的。

以下包管理器均采用archlinux内置的pacman

翻译类软件

  1. 带gui的:goldendict、stardict(星际译王)
    1
    2
    3
    sudo pacman -S goldendict
    # 或者
    sudo pacman -S stardict
    字典下载链接
阅读更多