欢迎光临
我们一直在努力

Linux技巧

如何在Linux中安全的删除文件和目录

阅读(260)评论(0)

我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。

该文件只是对用户隐藏,它驻留在硬盘上的某个地方。它有可能被数据窃贼、执法取证或其它方式来恢复。

假设文件包含密级或机密内容,例如安全系统的用户名和密码,具有必要知识和技能的攻击者可以轻松地恢复删除文件的副本并访问这些用户凭证(你可以猜测到这种情况的后果)。

在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件。

1.shred – 覆盖文件来隐藏内容

shred 会覆盖文件来隐藏它的内容,并且也可以选择删除它。

如何在Linux中安全的删除文件和目录

在下面的命令中,选项有:

如何在Linux中安全的删除文件和目录

如何在Linux中安全的删除文件和目录

你可以在 shred 的帮助页中找到更多的用法选项和信息:如何在Linux中安全的删除文件和目录

2.wipe – 在 Linux 中安全删除文件

wipe 命令可以安全地擦除磁盘中的文件,从而不可能恢复删除的文件或目录内容。

首先,你需要安装 wipe 工具,运行以下适当的命令:如何在Linux中安全的删除文件和目录

下面的命令会销毁 private 目录下的所有文件。

如何在Linux中安全的删除文件和目录

当使用下面的标志时:

如何在Linux中安全的删除文件和目录

如何在Linux中安全的删除文件和目录

注意:wipe 仅可以在磁性存储上可以可靠地工作,因此对固态磁盘(内存)请使用其他方法。

阅读 wipe 手册以获取其他使用选项和说明:

如何在Linux中安全的删除文件和目录

3.Linux 中的安全删除工具集

secure-delete 是一个安全文件删除工具的集合,它包含用于安全删除文件的 srm(secure_deletion)工具。

首先,你需要使用以下相关命令安装它:

如何在Linux中安全的删除文件和目录

安装完成后,你可以使用 srm 工具在 Linux 中安全地删除文件和目录。

如何在Linux中安全的删除文件和目录

下面是使用的选项:

如何在Linux中安全的删除文件和目录

如何在Linux中安全的删除文件和目录

阅读 srm 手册来获取更多的使用选项和信息:

如何在Linux中安全的删除文件和目录

4.sfill -安全免费的磁盘 / inode 空间擦除器

sfill 是 secure-deletetion 工具包的一部分,是一个安全免费的磁盘和 inode 空间擦除器,它以安全的方法删除可用磁盘空间中的文件。 sfill 会检查指定分区上的可用空间,并使用来自 /dev/urandom 的随机数据填充它。

以下命令将在我的根分区上执行 sfill,使用`-v` 选项启用 verbose 模式:

如何在Linux中安全的删除文件和目录

假设你创建了一个单独的分区 /home 来存储正常的系统用户主目录,你可以在该分区上指定一个目录,以便在其上应用 sfill:

如何在Linux中安全的删除文件和目录

你可以在 sfill 的手册上看到一些限制,你也可以看到额外的使用标志和命令:

如何在Linux中安全的删除文件和目录

注意:secure-deletetion 工具包中的另外两个工具(sswap 和 sdmem)与本指南的范围不直接相关,但是,为了将来的使用和传播知识的目的,我们会在下面介绍它们。

5.sswap – 安全 swap 擦除器

它是一个安全的分区擦除器,sswap 以安全的方式删除 swap 分区上存在的数据。

警告:请记住在使用 sswap 之前卸载 swap 分区! 否则你的系统可能会崩溃!

要找到交换分区(并检查分页和交换设备/文件是否已经使用,请使用swapon 命令),接下来,使用swapoff 命令禁用分页和交换设备/文件(使 swap 分区不可用)。

然后在(关闭的) swap 分区上运行sswp 命令:

如何在Linux中安全的删除文件和目录

如何在Linux中安全的删除文件和目录

阅读 sswap 的手册来获取更多的选项和信息:

如何在Linux中安全的删除文件和目录

6. sdmem – 安全内存擦除器

sdmem 是一个安全的内存擦除器,其设计目的是以安全的方式删除存储器(RAM)中的数据。

它最初命名为 smem,但是因为在 Debain 系统上存在另一个包 smem – 报告每个进程和每个用户的内存消耗,开发人员决定将它重命名为 sdmem。

如何在Linux中安全的删除文件和目录

关于更多的使用信息,阅读 sdmen 的手册:

如何在Linux中安全的删除文件和目录

怎样把新硬盘挂载到centos系统的根目录?linux挂载硬盘到根目录?

阅读(293)评论(0)

最近有一个比较奇葩的需求,数据硬盘准备直接挂载到根目录。

执行了下面的命令:

fdisk -l #发现新硬盘是/dev/sdb

mkfs.xfs /dev/sdb #于是执行这个命令格式化硬盘

mount /dev/sdb / #接着执行命令视图把硬盘挂载到系统根目录

注意上边都是废话!

下面我们开始回归正题讲解把新硬盘挂载到centos系统根目录的操作方法:

1、一般,我们的系统默认是没有parted这个命令的,所以我先得安装:

# yum -y install parted (安装parted工具)

2、命令行查看新增硬盘:

# lsblk (查看当前磁盘设备)

3、给新硬盘分区并打上lvm标签

# parted /dev/sdb (视实际情况的盘符编号)

(parted) mklabel gpt (设置分区类型为gpt)

Yes/No? yes (确认)

(parted) mkpart extended 0% 100% (扩展分区extended,主分区primary 并使用整个硬盘空间)

(parted) p (查看分区情况)

(parted)toggle 1 lvm (将1分区打上lvm标签)

(parted) p (查看分区情况)

(parted) quit (退出)

4、把物理分区转为卷组

# partprobe (不重启读取分区信息)

# pvcreate /dev/sdb1 (将分出来的sdb1分区转为物理卷)

# vgdisplay (显示vg名称为:cl)

5、把新增卷组空间全部扩容到根目录的逻辑卷

# pvcreate /dev/sdb1 (将分出来的sda1分区转为物理卷)

# vgextend cl /dev/sdb1 (添加到cl卷组)

# lvextend -l +100%FREE /dev/mapper/centos-root (将所有空间分配给centos-root)

6、同步更新逻辑卷,使扩容生效

# xfs_growfs /dev/mapper/centos-root (同步文件系统,使扩容生效)

# lsblk (查看磁盘分区大小)

7、查看硬盘的使用情况

# df -hl (查看磁盘使用率)

怎样把新硬盘挂载到centos系统的根目录?linux挂载硬盘到根目录?

vps常用脚本大全

阅读(412)评论(0)

以下脚本均来自网络收集,包括但不限于别人分享,网上分享等路径,可以放心使用。如果脚本已失效请在下方评论告知!

自动草稿

准备工作

在测试的过程中,出现命令不充在,一般情况下你首先要安装wget和curl

Centos安装命令

yum install wget -y

Debian/ubuntu安装命令

apt-get install wget -y

提示证书问题可以使用以下命令

1、BBR 锐速一键安装
#脚本1
wget -N "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
#脚本2(进入网址查看)
https://github.com/Meilinhost/LotServer_Vicer

2、DD系统脚本一脚本DD各种linux脚本

来至萌伽大佬

wget --no-check-certificate -O AutoReinstall.sh https://git.io/AutoReinstall.sh && bash AutoReinstall.sh
#来自互联网

3、Besttrace4Linux路由测试脚本(链路可视化)

wget http://cdn.ipip.net/17mon/besttrace4linux.zip
#解压
unzip besttrace4linux.zip
#授权
chmod +x besttrace
#使用
./besttrace -q 1 这里是目标IP
#如果是64位系统则直接besttrace替换besttrace32
4、TCP回程路由测试
wget -qO- git.io/autobesttrace | bash

5、柠檬脚本可测试配置、IO、CPU、内存、路由

curl -fsL https://ilemonra.in/LemonBenchIntl | bash -s fast

6、专业测硬盘脚本测IO和网速(可直接测IPv6的网速,国外节点)

wget -qO- bench.sh | bash
#测试VPS基础信息,以及下载速度,来自秋水逸冰

7、SuperBench可测试配置、IO、网速等

wget -qO- --no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash
8、Superspeed测速脚本三网测速,可单独测试
bash <(curl -Lso- https://raw.githubusercontent.com/opear2008/superspeed/master/superspeed.sh)
bash <(curl -Lso- https://git.io/J1SEh)

9、UnixBench测试脚本(UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试Linux系统主机的性能。Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。)

wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh

10、独服测试硬件脚本

11、superbenchpro

可测试配置、IO、跑分、网速

bash &lt;(wget --no-check-certificate -O- https://dl.233.mba/sh/superbenchpro.sh)

12、路由测试

柠檬脚本可以直接测试路由,以下脚本可以直接测试三网路由,每个网络有三个节点

14、存检测脚本

FunctionClub大佬作品,本程序检测的可分配内存指的是用户使用时最大能占用的内存量。特点:检测VPS真实可分配内存,适用于检测VPS超售情况

#CentOS / RHEL
yum install wget -y
yum groupinstall "Development Tools" -y
wget https://raw.githubusercontent.com/FunctionClub/Memtester/master/memtester.cpp
gcc -l stdc++ memtester.cpp
./a.out
#Ubuntu / Debian
apt-get update
apt-get install wget build-essential -y
wget https://raw.githubusercontent.com/FunctionClub/Memtester/master/memtester.cpp
gcc -l stdc++ memtester.cpp
./a.out

搭建Samba共享Linux和Windows文件夹

阅读(299)评论(0)

配置Linux服务端

1. 安装服务端

1.1 CentOS安装

  1. # 安装服务端
  2. $ yum install -y samba samba-client

1.2 Debian安装

  1. # 安装服务端
  2. $ apt-get install -y samba

2. 创建共享目录

  1. # 创建文件夹
  2. $ mkdir -p /file
  3. # 给予文件夹权限
  4. $ chmod 755 -R /file/

3. 编辑Samba配置文件

Samba完整注释内容在 /etc/samba/smb.conf.example 这个模板文件中,而 /etc/samba/smb.conf 只保留生效的配置参数

  1. $ vim /etc/samba/smb.conf
  2. # See smb.conf.example for a more detailed config file or
  3. # read the smb.conf manpage.
  4. # Run 'testparm' to verify the config is correct after
  5. # you modified it.
  6. [global] # 全局设置
  7. workgroup = SAMBA # 工作组
  8. security = user # 这里指定samba的安全等级。关于安全等级有四种。share:用户不需要账户及密码即可登录samba服务器;user:由提供服务的samba服务器负责检查账户及密码(默认);server:检查账户及密码的工作由另一台windows或samba服务器负责;domain:指定windows域控制服务器来验证用户的账户及密码。
  9. #map to guest=Bad User # 添加此项,开启免密码认证
  10. passdb backend = tdbsam # passdb backend (用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam。smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用smbpasswd –a创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。pdbedit命令可参考 pdbedit --help
  11. printing = cups
  12. printcap name = cups
  13. load printers = yes # load printers 和 cups options 两个参数用来设置打印机相关。
  14. cups options = raw
  15. #hosts allow = 192.168.20.4 # 用来设置允许的主机,如果在前面加”;”则表示允许所有主机
  16. #netbios name = MYSERVER # 设置出现在“网上邻居”中的主机名
  17. #log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name
  18. #max log size = 50 # 指定日志的最大容量,单位是K
  19. [homes] # 该部分内容共享用户自己的home目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的home目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
  20. comment = Home Directories
  21. valid users = %S, %D%w%S
  22. browseable = No
  23. read only = No
  24. inherit acls = Yes
  25. [printers] # 该部分内容设置打印机共享。
  26. comment = All Printers
  27. path = /var/tmp
  28. printable = Yes
  29. create mask = 0600
  30. browseable = No
  31. [print$]
  32. comment = Printer Drivers
  33. path = /var/lib/samba/drivers
  34. write list = @printadmin root
  35. force group = @printadmin
  36. create mask = 0664
  37. directory mask = 0775
  38. [file] # 共享目录显示的名称
  39. comment=hello guest #描述信息(可以自定义)
  40. path=/file #共享的目录
  41. browseable=yes #共享目录是否对所有人可见
  42. guest ok=no #允许匿名用户访问
  43. #writable=yes #匿名用户可写
  44. #public=yes #所有人可见
  45. writable=yes #可写

4. 创建一个用户并转为Samba用户

  1. # 创建一个系统用户
  2. $ useradd -M -s /sbin/nologin guest
  3. # 将系统用户转化成Samba用户
  4. $ pdbedit -a guest
  5. new password:
  6. retype new password:
  7. Unix username: guest
  8. NT username:
  9. Account Flags: [U ]
  10. User SID: S-1-5-21-2500030998-3215874083-1041928306-1001
  11. Primary Group SID: S-1-5-21-2500030998-3215874083-1041928306-513
  12. Full Name:
  13. Home Directory: \\localhost\guest
  14. HomeDir Drive:
  15. Logon Script:
  16. Profile Path: \\localhost\guest\profile
  17. Domain: LOCALHOST
  18. Account desc:
  19. Workstations:
  20. Munged dial:
  21. Logon time: 0
  22. Logoff time: Wed, 06 Feb 2036 10:06:39 EST
  23. Kickoff time: Wed, 06 Feb 2036 10:06:39 EST
  24. Password last set: Mon, 05 Nov 2018 06:23:37 EST
  25. Password can change: Mon, 05 Nov 2018 06:23:37 EST
  26. Password must change: never
  27. Last bad password : 0
  28. Bad password count : 0
  29. Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  30. # 列出所有Samba用户
  31. $ pdbedit -L
  32. guest:1001:

5. 重启SMB服务,并设置开机自启动

  1. $ systemctl restart smb
  2. $ systemctl enable smb

6. 开启Samba端口

  1. # 开启137、138、139、445端口
  2. $ firewall-cmd --add-port=137/udp --zone=public --permanent
  3. $ firewall-cmd --add-port=138/udp --zone=public --permanent
  4. $ firewall-cmd --add-port=139/tcp --zone=public --permanent
  5. $ firewall-cmd --add-port=445/tcp --zone=public --permanent
  6. $ firewall-cmd --reload
  7. # 或者直接关闭防火墙
  8. $ systemctl stop firewalld
  9. $ systemctl disable firewalld

配置Linux客户端

1. 安装Linux客户端工具

  1. $ yum install -y samba-client

2. 登录用户并扫描资源

  1. # 查看共享目录
  2. $ smbclient -U guest -L //192.168.20.4
  3. # 查看共享文件
  4. $ smbclient -U guest //192.168.20.4/file

3. 挂载Samba

  1. # [文件格式] [/smb_file共享目录][挂载到/mnt] [username=smb用户名][password=smb密码]
  2. $ mount -t cifs //192.168.20.4/file /file -o username=guest,password=guest
  3. $ df -h
  4. 文件系统 容量 已用 可用 已用% 挂载点
  5. //192.168.20.4/file 50G 13G 38G 26% /file

配置Windows客户端

1. 开启SMB配置

Win+R 输入control 打开控制面板

在控制面板内找到 程序 -> 启用或关闭windows功能 然后勾选上SMB相关功能

自动草稿

2. 挂载Samba

在我的电脑中选择添加映射网络驱动器

自动草稿

输入之前配置过的Samba地址和配置的账户

自动草稿

完事~

自动草稿

docker-compose配置Samba服务端

1. 安装并启动docker

1.1 安装docker

1.1.1 CentOS安装docker

更新软件源

  1. $ yum update -y

卸载旧的docker(按需)

  1. $ yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装yum工具

  1. $ yum install -y yum-utils

添加docker源

  1. $ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker及相关插件

  1. $ yum install -y docker-ce docker-ce-cli containerd.io

启动docker并设为开机自启

  1. $ systemctl start docker && systemctl enable docker

创建个人网络

  1. $ docker network create veddy-base-net

配置docker国内镜像源

  1. $ cat <<EOF>> /etc/docker/daemon.json
  2. {
  3. "registry-mirrors": ["https://t0gam4iy.mirror.aliyuncs.com"]
  4. }
  5. EOF

重启docker

  1. $ systemctl restart docker

下载docker-compose

  1. $ wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64

给与docker-compose权限

  1. $ chmod 777 /usr/local/bin/docker-compose

查看docker以及docker-compose版本

  1. $ docker --version
  2. Docker version 20.10.17, build 100c701
  3. $ docker-compose version
  4. Docker Compose version v2.6.1

2. docker-compose配置

  1. version: "3.7"
  2. networks:
  3. veddy-base-net:
  4. driver: bridge
  5. services:
  6. samba:
  7. image: dperson/samba
  8. container_name: samba
  9. restart: on-failure
  10. networks:
  11. - veddy-base-net
  12. command: '
  13. -u "guest;guest123"
  14. -s "shared;/shared;no;no;no;guest"'
  15. volumes:
  16. - /shared:/shared
  17. ports:
  18. - 137:137/udp
  19. - 138:138/udp
  20. - 139:139/tcp
  21. - 445:445/tcp

Samba更改默认端口

1. 服务端配置

  1. # 修改Samba配置文件
  2. $ vim /etc/samba/smb.conf
  3. # 在[global]选项下加入以下内容
  4. smb ports = 1314
  5. # 保存配置后重启Samba
  6. $ systemctl restart smb

2. windows客户端使用端口转发

客户端通过访问本地445然后将端口转发成访问远程端的8445端口

  1. netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=8445 connectaddress=192.168.20.4

后续连接至本地445就可以了 我的后缀是/file你们改成自己的即可

自动草稿

Samba Example示例文件翻译

部分参数注释为机翻 我也不太清楚具体作用 还请各位大佬加以指正

  1. # ======================= 全 局 参 数 =======================
  2. [global]
  3. # ----------------------- 网络相关选项 -----------------------
  4. # 设定Samba所要加入的工作组或者域
  5. workgroup = WORKGROUP
  6. # 设定Samba Server的注释 %v代表版本 一般不建议显示版本号 以防针对某一版本漏洞进行攻击
  7. server string = Samba Server Version %v
  8. # 设置Samba Server的NetBIOS名称 用于指定不与主机名绑定的服务器名称 最多15个字符 如果不填 则默认会使用该服务器的DNS名称的第一部分 netbios name和workgroup名字不要设置成一样
  9. netbios name = MYSERVER
  10. # 设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址
  11. interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
  12. # 表示允许连接到Samba Server的客户端 多个参数以空格隔开 可以用一个IP表示 也可以用一个网段表示
  13. hosts allow = 127. 192.168.12. 192.168.13.
  14. # ----------------------- 日志记录选项 -----------------------
  15. # 日志路径 %m 是一个变量 标识Netbios主机名
  16. log file = /var/log/samba/log.%m
  17. # 日志最大大小 单位是kb
  18. max log size = 50
  19. # ---------------------- 独立服务器选项 ----------------------
  20. # 指定samba的安全等级 关于安全等级有四种
  21. # share:用户不需要账户及密码即可登录samba服务器
  22. # user:由提供服务的samba服务器负责检查账户及密码(默认)
  23. # server:检查账户及密码的工作由另一台windows或samba服务器负责
  24. # domain:指定windows域控制服务器来验证用户的账户及密码。
  25. security = user
  26. # passdb backend(用户后台)samba有三种用户后台:smbpasswd, tdbsam和ldapsam
  27. # smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码 客户端就用此密码访问Samba资源 smbpasswd在/etc/samba中 有时需要手工创建该文件
  28. # tdbsam:使用数据库文件创建用户数据库 数据库文件叫passdb.tdb在/etc/samba中 passdb.tdb用户数据库可使用smbpasswd –a创建Samba用户 要创建的Samba用户必须先是系统用户 也可使用pdbedit创建Samba账户 pdbedit命令可参考pdbedit --help
  29. # ldapsam:该方式则是基于LDAP的账户管理方式来验证用户 首先要建立LDAP服务 然后设置passdb backend = ldapsam:ldap://LDAP Server
  30. passdb backend = tdbsam
  31. # ---------------------- 域成员选项 ----------------------
  32. # 配置注解如上
  33. security = domain
  34. # 配置注解如上
  35. passdb backend = tdbsam
  36. # 所有的成员必须在一个realm中 并且realm必须为大写
  37. realm = MY_REALM
  38. # 默认值为* 通过赐选项指定域控制器名称 可以让Samba使用特定远程服务器进行用户名/密码验证
  39. # 示例值 password server = windc.mydomain.com:389 192.168.1.101 *
  40. password server = *
  41. # ---------------------- 域控制选项 ----------------------
  42. # 配置注解如上 域控制必须为user
  43. security = user
  44. # 配置注解如上
  45. passdb backend = tdbsam
  46. # 将该Samba指定为域主 允许Samba整理多个子网之间的浏览列表 控制器只能存在一个 如果已经有一个的话就不要启动该选项
  47. domain master = yes
  48. # 允许Samba为windows提供网络登录服务
  49. domain logons = yes
  50. # 指定再客户端登陆时运行的脚本 脚本名必须在NETLOGON的共享中提供
  51. # %m为机器名
  52. logon script = %m.bat
  53. # 存储用户配置文件的位置
  54. logon path = \\%L\Profiles\%u
  55. # 可以在域控制器上或者单机上使用脚本来做出相应的添加上山账户
  56. add user script = /usr/sbin/useradd "%u" -n -g users
  57. add group script = /usr/sbin/groupadd "%g"
  58. add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"
  59. delete user script = /usr/sbin/userdel "%u"
  60. delete user from group script = /usr/sbin/userdel "%u" "%g"
  61. delete group script = /usr/sbin/groupdel "%g"
  62. # ---------------------- 浏览控制选项 ----------------------
  63. # 设置为no时Samba不会成为你网络上的主浏览器 设置为yes时将会正常的选举应用
  64. local master = no
  65. # 选举优先级
  66. os level = 33
  67. # 首选服务器 当设置为yes时Samba在启动时强制进行本地浏览器选举并给自己更高的选举机会
  68. preferred master = yes
  69. # ------------------------ 名称解析 ------------------------
  70. # 名称解析是对windows internet名称服务(WINS)的支持
  71. # 设置为yes时 Samba的NMBD组将将启用其WINS服务器
  72. wins support = yes
  73. # 告诉Samba的NMBD组件将要成为WINS客户端
  74. wins server = w.x.y.z
  75. # 设置为yes时Samba代表不支持WINS客户端回答名称解析查询 为此网络上必须至少有哦一个WINS服务器 默认为no
  76. wins proxy = yes
  77. # 设置为yes时Samba会尝试通过DNS nslookups解析NetBIOS名称
  78. dns proxy = yes
  79. # ------------------------ 打印选项 ------------------------
  80. # 设置为yes时将会自动加载打印机列表而不是单独设置他们
  81. load printers = yes
  82. # 允许将选项传递给CUPS库 例如设置值为raw允许在windows客户端上使用驱动程序
  83. cups options = raw
  84. # 用于指定替代的printcap文件
  85. printcap name = /etc/printcap
  86. # 在 UNIX System V 系统上自动获取打印机列表
  87. printcap name = lpstat
  88. printing = cups
  89. # ------------------------ 文件系统 ------------------------
  90. # 如果文件系统支持扩展属性并启用了这些属性(通常通过user_xattr挂载选项) 则可以取消注释本届中的选项 这些选项允许管理员指定DOS属性存储在扩展属性中并确保Samba不会更改权限位
  91. # 这些选项可以在每个分享上使用 在该全局属性[global]中使用他们将成为所有共享的默认值
  92. map archive = no
  93. map hidden = no
  94. map read only = no
  95. map system = no
  96. store dos attributes = yes

踩坑

客户端

1. 查看共享文件时ls报错NT_STATUS_ACCESS_DENIED listing \*

自动草稿

原因是因为被SELinux阻挡了

Samba的example文件中也有SELinux相关说明

  1. # If you create a new directory, such as a new top-level directory, label it
  2. # with samba_share_t so that SELinux allows Samba to read and write to it. Do
  3. # not label system directories, such as /etc/ and /home/, with samba_share_t, as
  4. # such directories should already have an SELinux label.
  5. # Run the "ls -ldZ /path/to/directory" command to view the current SELinux
  6. # label for a given directory.
  7. # Set SELinux labels only on files and directories you have created. Use the
  8. # chcon command to temporarily change a label:
  9. # chcon -t samba_share_t /path/to/directory
  10. # Changes made via chcon are lost when the file system is relabeled or commands
  11. # such as restorecon are run.
  12. # Use the samba_export_all_ro or samba_export_all_rw Boolean to share system
  13. # directories. To share such directories and only allow read-only permissions:
  14. # setsebool -P samba_export_all_ro on
  15. # To share such directories and allow read and write permissions:
  16. # setsebool -P samba_export_all_rw on
  17. # To run scripts (preexec/root prexec/print command/...), copy them to the
  18. # /var/lib/samba/scripts/ directory so that SELinux will allow smbd to run them.
  19. # Note that if you move the scripts to /var/lib/samba/scripts/, they retain
  20. # their existing SELinux labels, which may be labels that SELinux does not allow
  21. # smbd to run. Copying the scripts will result in the correct SELinux labels.
  22. # Run the "restorecon -R -v /var/lib/samba/scripts" command as the root user to
  23. # apply the correct SELinux labels to these files.

有关于SELinux的介绍: https://blog.csdn.net/qq_43710889/article/details/108459729

解决办法

关闭SELinux(不推荐)

  1. $ setenforce 0

改变SELinux(推荐)

  1. $ chcon -t samba_share_t /file

2. 更改了默认端口以及设置了windows端口转发后依旧无法连接上Samba

解决办法1

请检查是否开启了Samba服务端 如果开启请关闭

自动草稿

解决办法2

Linux 系统是运行在虚拟机上还是物理机上

阅读(402)评论(0)

除了本机开发以外,我们平时使用 Linux 大部分是通过 ssh 连接到远程服务器上的,比如系统部署、运维等工作。

Linux 系统是运行在虚拟机上还是物理机上

在当前虚拟化非常成熟的环境下,我们所部署的大部分系统都是运行在虚拟机中的。但是也有部分是在物理机上。那么,怎样区分我们的系统是运行在虚拟机上,还是物理机上呢?

下面我们来详细讨论下这个问题。

有几个命令可以用来区分系统运行环境是在虚拟机还是物理机。

1,使用 dmidecode 命令

区分虚拟机和物理机,最简单的方法是使用 dmidecode 命令。如下所示:

sudo dmidecode -s system-manufacturer

如果是物理机,你会看到机器制造商的名称,比如 Dell,Lenovo 等;

如果是虚拟机,你会看到一些类似于 QEMU, innotek Gmbh(for VirtualBox)等的输出信息。

dmidecode 命令用于查看计算机的 DMI 信息,该信息以人类可读的方式输出。

DMI 是桌面管理界面(Desktop Management Interface)的缩写,是几乎所有系统制造商都遵守的标准。DMI 框架用于管理和跟踪桌面、笔记本电脑或服务器计算机中的组件。

由于有了 DMI,我们可以获得有关系统硬件、系统制造商和设备序列号的信息,而使用 dmidecode(DMI Decode)命令,可以获取这些信息。另外,使用 -s system-manufacturer 也可获取制造商的详细信息。

如果系统环境是物理机,那么可以看到制造商的信息,比如:

$ sudo dmidecode -s system-manufacturer
Dell Inc.

相反,如果是虚拟机,可以将虚拟机的信息打印出来,如下所示:

$ dmidecode -s system-manufacturer
QEMU

这个命令用起来比较便捷。关于 dmidecode 命令的详细信息,大家也可以查看 man 手册。

如果想要查看 Linux 版本的信息,可以使用 uname 命令。因为 dmidecode 命令查看的是硬件信息,对于软件信息来说不适用。

2,使用 virt-what

区分虚拟机和物理机的另外一个方法是使用 virt-what

基本上,可以将其理解为是一个 shell 脚本,可以作为命令安装在大多数 Linux 发行版中。安装命令如下:

sudo apt install virt-what

如果系统运行在一个物理机上,virt-what 命令将不会返回任何结果;相反,如果是运行在虚拟机上,将会输出虚拟机的一些信息,如下所示:

$ virt-what 
kvm

以上就是本次分享全部内容,欢迎讨论。

systemd 的 journalctl 工具及其各种命令的基础知识介绍

阅读(225)评论(0)

简介

很多人说 systemd 不好,它对系统的影响很大,这也是一个有争议的话题。但你不能否认的是,它提供了一套完善的工具来管理和排除系统故障。想象一下,当你遇到一个没有 GUI 的损坏系统时,你可能会把启动和 GRUB 弄得一团糟。在这种情况下,你可以从一个立付Live系统启动,挂上你的 Linux 分区,然后浏览 systemd 的日志,找出问题所在。

systemd 有三个基本组件,如下所示:

  1. systemd:Linux 操作系统的系统和服务管理器。
  2. systemctl :该命令用于反观和控制 systemd 系统和服务管理器的状态。
  3. systemd-analyze:该命令提供系统启动时的性能统计,并从系统和服务管理器中检索其他状态和跟踪信息。

除了这三个服务外,systemd 还提供其他服务,如 journald、logind、networkd 等。在本指南中,我们将讨论 systemd 的 journald 服务。

journald – systemd 日志服务

根据设计,systemd 提供了一个集中的方式来处理所有来自进程、应用程序等的操作系统日志。所有这些日志事件都由 systemd 的 journald 守护进程来处理。journald 守护进程收集所有来自 Linux 操作系统各处的日志,并将其作为二进制数据存储在文件中。

以二进制数据集中记录事件、系统问题的好处有很多。例如,由于系统日志是以二进制而不是文本形式存储的,你可以以文本、JSON 对象等多种方式进行转译,以满足各种需求。另外,由于日志是按顺序存储的,通过对日志的日期/时间操作,超级容易追踪到单个事件。

请记住,journald 收集的日志文件数以千行计,而且不断更新每次开机、每个事件。因此,如果你有一个长期运行的 Linux 操作系统,日志的大小应该以 GB 为单位。由于有着数以千计的日志,最好用基本命令进行过滤,以了解更多系统问题。

journald 配置文件

journald 的配置文件存在于以下路径中。它包含了关于如何进行日志记录的各种标志。你可以看一下这个文件,并进行必要的修改。但我建议不要修改这个文件,除非你知道自己在做什么。

/etc/systemd/journald.conf

journald 存储二进制日志文件的地方
journald 以二进制格式存储日志。它们被保存在这个路径下的一个目录中:

/var/log/journal

例如,在下面的路径中,有一个目录包含了迄今为止的所有系统日志。
systemd 的 journalctl 工具及其各种命令的基础知识介绍
不要使用 cat 命令,也不要使用 nano 或 vi 来打开这些文件。它们(是二进制的),无法正常显示。

使用 journalctl 来查看和分析 systemd 日志
journald 基本命令

查看 journald 日志的基本命令是:

journalctl

systemd 的 journalctl 工具及其各种命令的基础知识介绍
该命令提供了所有应用程序和进程的日志条目,包括错误、警告等。它显示的列表中,最旧的日志在顶部,当前的日志在底部。你需要不断按回车键来逐行滚动浏览。你也可以使用 PAGE UP 和 PAGE DOWN 键来滚动。按 q 键可以退出这个视图。

如何以不同时区的时间查看日志条目

默认情况下,journalctl 以当前系统时区显示日志的时间。然而,你可以很容易地在命令中提供时区,将同一日志转换为不同的时区。例如,要以 UTC 查看日志,请使用以下命令:

journalctl --utc

systemd 的 journalctl 工具及其各种命令的基础知识介绍

如何在日志中只查看错误、警告等信息

系统产生的日志有不同的优先级。有些日志可能是可以忽略的警告,有些可能是重要的错误。你可能想只看错误,不看警告。这也可以用下面的命令来实现。

要查看紧急系统信息,请使用:

journalctl -p 0

systemd 的 journalctl 工具及其各种命令的基础知识介绍
错误代码:
0: 紧急情况
1: 警报
2: 危急
3: 错误
4: 警告
5: 通知
6: 信息
7:调试
当你指定错误代码时,它显示该等级及更高的所有信息。例如,如果你指定下面的命令,它会显示所有优先级为 2、1 和 0 的信息:

journalctl -p 2
如何查看特定启动的日志

当你运行 journalctl 命令时,它会显示当前启动的信息,即你正在运行的会话中的信息。但也可以查看过去的启动信息。

在每次重启时,日志都会持续更新。journald 会记录不同启动时的日志。要查看不同启动时的日志,请使用以下命令。

journalctl --list-boots

systemd 的 journalctl 工具及其各种命令的基础知识介绍

  1. 第一个数字显示的是 journald 的唯一的启动跟踪号码,你可以在下一个命令中使用它来分析该特定的启动。
  2. 第二个数字是启动 ID,你也可以在命令中指定。
  3. 接下来的两个日期、时间组合是存储在相应文件中的日志的时间。如果你想找出某个特定日期、时间的日志或错误,这就非常方便了。

要查看一个特定的启动号码,你可以选择第一个启动跟踪号码或启动 ID,如下所示。

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

systemd 的 journalctl 工具及其各种命令的基础知识介绍
你也可以使用 -x 选项,在显示屏上添加 systemd 错误信息的解释。在某些情况下,这是个救命稻草。

journalctl -xb -p 3

systemd 的 journalctl 工具及其各种命令的基础知识介绍

如何查看某一特定时间、日期的日志记录

journalctl 功能强大,可以在命令中提供类似英语的参数,用于时间和日期操作。

你可以使用 --since 选项与 yesterday、today、tomorrow 或 now 组合。

下面是一些不同命令的例子。你可以根据你的需要修改它们。它们是不言自明的。以下命令中的日期、时间格式为 "YYYY-MM-DD HH:MM:SS"

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

systemd 的 journalctl 工具及其各种命令的基础知识介绍

你也可以将上述内容与错误级别开关结合起来。

如何查看内核特定的日志记录

Linux 内核信息也可以从日志中提取出来。要查看当前启动时的内核信息,请使用以下命令:

journalctl -k

如何查看某个服务、PID 的日志
你可以从 journald 日志中过滤出某个 systemd 服务单元的特定日志。例如,如果要查看 NetworkManager 服务的日志,请使用下面的命令。

journalctl -u NetworkManager.service

systemd 的 journalctl 工具及其各种命令的基础知识介绍
如果你不知道服务名称,可以使用下面的命令来列出系统中的 systemd 服务。

systemctl list-units --type=service
如何查看用户、组的日志

如果你正在分析服务器日志,在多个用户登录的情况下,这个命令很有帮助。你可以先用下面的命令从用户名中找出用户的 ID。例如,要找出用户 debugpoint 的 ID:

id -u debugpoint

然后使用 _UID 选项指定该 ID 与来查看该用户产生的日志。

journalctl _UID=1000 --since today

systemd 的 journalctl 工具及其各种命令的基础知识介绍
同样地,使用 _GID 选项也可以查到用户组的情况。

如何查看一个可执行文件的日志

你也可以查看某个特定程序或可执行文件的日志。例如,如果你想找出 gnome-shell 的信息,你可以运行以下命令。

journalctl /usr/bin/gnome-shell --since today

systemd 的 journalctl 工具及其各种命令的基础知识介绍

结束语

希望本指南能帮助你使用 journalctl 查看分析 Linux 桌面或服务器上的 systemd 日志,排除故障。如果你知道如何使用这些命令,systemd 日志管理的功能非常强大,它能让你在调试时的生活变得轻松一些。现在所有主流的 Linux 发行版都使用 systemd。Ubuntu、Debian、Fedora、Arch 它们都使用 systemd 作为其默认的操作系统组件。如果你想了解不使用 systemd 的 Linux发行版,你可能想看看 MX-Linux、Gentoo、Slackware、Void Linux。

Linux 中如何开启端口

阅读(352)评论(0)

有时我们可能需要在Linux服务器中打开端口或在Linux服务器的防火墙中启用端口来运行特定的应用程序。在本文中,小编将带大家分析一下如何在linux服务器中打开端口命令?
Linux 端口的开启

Linux 端口的开启

一、firewall 方式 (centOS7.*)

二、修改 iptables 方式 (centOS6.*)

一、firewall 方式 (centOS7.*)

查看防火墙状态

firewall-cmd --state

如果返回的是 “not running”,那么需要先开启防火墙;

开启防火墙

systemctl start firewalld.service

Linux 中如何开启端口

再次查看防火墙状态,发现已开启!

开启指定端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

显示 success 表示成功
–zone=public 表示作用域为公共的
–add-port=443/tcp 添加 tcp 协议的端口端口号为 443
–permanent 永久生效,如果没有此参数,则只能维持当前 服 务生命周期内,重新启动后失效;

Linux 中如何开启端口

重启防火墙

systemctl restart firewalld.service

系统没有任何提示表示成功!

重新加载防火墙

firewall-cmd --reload

显示 success 表示成功

其他命令

查看已开启的端口

irewall-cmd --list-ports

关闭指定端口

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --reload

查看端口被哪一个进程占用

netstat -lnpt |grep 5672
# centos7默认没有 netstat 命令,需要安装 net-tools 工具:
# 安装 net-tools
yum install -y net-tools

临时关闭防火墙

systemctl stop firewalld.service

或者

systemctl stop firewalld

永久关闭防火墙(必须先临时关闭防火墙,再执行该命令,进行永久关闭)

systemctl disable firewalld.service

或者

systemctl disable firewalld
二、修改 iptables 方式 (centOS6.*)

centOS6.* 的linux版本是自带iptables的,所以可以直接使用该方式,centOS7 不自带iptables的,所以要使用该方式,需要手动安装iptables后,再使用该方式!

修改 iptables 文件

vi /etc/sysconfig/iptables

Linux 中如何开启端口

重启防火墙

 /etc/init.d/iptables restart

Linux 中如何开启端口

三、注意事项

当在 Linux 中成功开启了某个端口,但是远程 telnet 还是无法 ping 通,是正常的!

Linux 中如何开启端口

因为 3306 端口没有被 Linux 进程监听,换句话说,就是该端口上没有运行任何程序!!!
如果这时,我将 Mysql 在 Linux 中启动,并配置完成,那么远程 telnet 该端口是可以成功的!!!

使用virt-manager 在主机和客户机之间共享文件夹

阅读(570)评论(0)

在本指南中,你将学习如何在 virt-manager 的 KVM、QEMU 和 libvirt 的主机和客户机之间共享文件夹。

​​virt-manager​​​ 应用或软件包使用 ​​libvirt​​ 库来提供虚拟机管理服务。它有一个桌面界面,有助于创建、删除和管理多个虚拟机。

virt-manager 桌面界面及其组件为各种个人和商业场景提供了灵活的虚拟机管理服务。它是一个自由开源的应用,主要用于 KVM 虚拟机。然而,它也可以支持其他管理程序,如 Xen 和 LXC。

在之前的文章中,我解释了 ​​如何使用 virt-manager 创建虚拟机​​。这篇文章介绍了如何在客户机和主机之间无缝访问文件和文件夹。

关于 virtiofs 的说明

共享文件和文件夹是由名为 virtiofs 的 libvirt 共享文件系统提供的。它提供了访问主机上的目录树的所有功能和参数。由于大多数 virt-manager 虚拟机的配置都被翻译成 XML,所以共享文件/文件夹也可以通过 XML 文件来指定。

在 virt-manager中共享文件夹

首先,确保你的客户机关闭了电源。在 virt-manager GUI 中,选择虚拟机,点击“打开Open”,弹出控制台设置。

使用virt-manager 在主机和客户机之间共享文件夹

点击工具条上显示虚拟硬件细节的图标。然后点击左边面板上的“内存Memory”。

选择选项 “启用共享内存Enable shared memory”。点击应用。

使用virt-manager 在主机和客户机之间共享文件夹

然后点击底部的 “添加硬件Add hardware”。

使用virt-manager 在主机和客户机之间共享文件夹

在添加新硬件的窗口中,从左边的面板上选择 “文件系统File system”。

然后在 “细节Details” 标签中选择 “驱动程序Driver” 为 “virtiofs”。点击 “浏览Browse > 浏览本地browse local”,选择你想在客户机内访问的主机路径。

在目标路径中,输入你想要的任何名字。这只是一个文件标签,将在挂载时使用。

所以,如果我想访问 ​​Pictures/Screenshots​​ 文件夹(​​/home/debugpoint/Pictures/Screenshots​​),示例设置可以是这样:

使用virt-manager 在主机和客户机之间共享文件夹

下面是上述配置的 XML 设置。你可以在 XML 标签中找到它。

<filesystem type="mount" accessmode="passthrough">  <driver type="virtiofs"/>  <binary path="/usr/libexec/virtiofsd"/>  <source dir="/home/debugpoint/Pictures/Screenshots"/>  <target dir="mount_tag_pictures"/>  <alias name="fs1"/>  <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/></filesystem>

点击 “完成Finish”。在 virt-manager 主窗口中,右键点击虚拟机,点击运行,启动虚拟机。确保点击“显示图形控制台show the graphical console”(如果虚拟机没有显示,点击工具条上的监视器图标)。

在客户机中,创建一个你想挂载主机文件夹的文件夹。在这个例子中,我使用了 ​​/mnt/pictures​​。

sudo mkdir /mnt/pictures

最后,使用你在上述步骤中创建的标签将主机文件夹挂载到这个新文件夹。使用下面的命令在终端做这件事。确保根据你的系统改变下面命令中的标签和文件夹名称。

sudo mount -t virtiofs mount_tag_pictures /mnt/pictures

现在你可以在 virt-manager 中的主机和客户机之间的无缝地浏览文件夹和添加/删除项目。

使用virt-manager 在主机和客户机之间共享文件夹

总结

我希望这个方案能帮助你从客户机上访问主机文件和文件夹。记住,你的用户 ID,也就是用来启动 virt-manager 应用的用户,应该有同样的权限来访问主机文件夹。

Centos7开放防火墙及查看端口

阅读(336)评论(0)

1、开放端口

firewall-cmd --zone=public --add-port=5672/tcp --permanent    开放5672端口

firewall-cmd --zone=public --remove-port=5672/tcp --permanent   关闭5672端口

firewall-cmd --reload    配置立即生效

2、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

3、关闭防火墙

如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

systemctl stop firewalld.service

 

4、打开防火墙

systemctl start firewalld

5、查看防火墙状态

 firewall-cmd --state

 

6、查看监听的端口

netstat -lnpt

Centos7开放防火墙及查看端口

PS:Centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

7、检查端口被哪个进程占用

netstat -lnpt |grep 5672

Centos7开放防火墙及查看端口

8、查看进程的详细信息

ps 6832

Centos7开放防火墙及查看端口

9、中止进程

kill -9 6832

登录

忘记密码 ?