分类 教程 下的文章

教程 | Gogs-一款极易搭建的自助 Git 服务


需求

自己需要一个git服务,gitlab有点大,小小的树莓派带不动啊。选择一个极简的git服务来管理。这里用docker来安装服务。

composer处理基础环境

  • version: '3.6'
  • services:
  • postgres-gogs:
  • container_name: gogs_database
  • image: postgres:9.6
  • restart: always
  • volumes:
  • - "/mnt/data/gitGogs/postgres:/var/lib/postgresql/data" # 挂载数据库文件目录
  • environment:
  • POSTGRES_USER: gogs
  • POSTGRES_PASSWORD: yak_gogs
  • POSTGRES_DB: gogs
  • networks:
  • - "net_gogs"
  • gogs:
  • container_name: gogs
  • image: gogs/gogs
  • restart: always
  • ports:
  • - "9822:22" # 暴漏ssh端口
  • - "9880:3000" # 暴漏web端口
  • volumes:
  • - "/mnt/data/gitGogs/data:/data" # 挂载数据目录
  • depends_on:
  • - "postgres-gogs"
  • networks:
  • - "net_gogs"
  • networks:
  • net_gogs:

安装

访问http://IP:9880
首次进入自动跳转安装界面填写对应信息,数据库这里选择postgres,在填写对应的管理员信息。立即安装即可。

成果

屏幕截图 2023-10-03 100428.jpg


InnoSteup | 打包后由于执行权限导致无法执行问题


描述

在win11系统安装用InnoSetup封装的程序,安装完成运行程序时,不是无法运行就是运行后闪退,涉及执行权限不够,因为默认安装的目录在C:Program Files(x86)下,正常安装进去是没有足够权限运行,会报错导致无法运行。

解决办法

方法1:修改Inno Setup创建出来的iss内的代码

启动Inno Setup进行编译时,输入相关编译基础信息后,会根据输入的相关内容自动生成编译脚本,在脚本中加入以下2行脚本内容:

  • [Dirs]
  • Name: {app}; Permissions: users-full

因为默认生成的脚本是没有[Dirs]这个字段的,增加这两行脚本后,打包的程序的安装目录拥有完全控制的权限。

方法2:修改SetupLdr.e32下的配置文件

使用Resource Hacker 修改 INNO安装目录下的SetupLdr.e32文件中的Manifest内容
修改SetupLdr.e32第24行内容:

  • 原文:<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
  • 修改为:<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

注意编译后保存!!!


Docker | -v 对挂载的目录没有权限 Permission denied


情况

今天用docker部署jenkins的时候碰到问题了,挂载的目录权限出现了问题。本人的解决办法是临时关闭selinux即可

报错代码

  • touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
  • Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

问题所在

centos7中安全模块selinux把权限禁掉了。

jenkins的composer

  • version: "3"
  • services:
  • jenkins:
  • build: .
  • container_name: jenkins
  • ports:
  • - "8083:8080"
  • volumes:
  • - "/home/jenkins:/var/jenkins_home"
  • image: jenkins/jenkins:lts
  • restart: always

处理流程

  1. 先不添加挂载的情况查看一下文件需要的用户权限是啥,这里显示的是jenkins:jenkins
    屏幕截图 2023-06-28 105338.jpg
  2. 心思直接赋上1000的权限,才发现容器内外权限不能通用
  3. 临时禁用selinux
  • setenforce 0
  1. 启动jenkins容器即可

四种解决方案

1.在运行时加 --privileged=true

  • docker run -d -p 8083:8080 -v /home/jenkins:/var/jenkins_home --privileged=true --name jenkins jenkins/jenkins:lts

2.临时关闭selinux然后再打开

  • [root@localhost home]# setenforce 0
  • [root@localhost home]# docker start jenkins
  • [root@localhost home]# setenforce 1

3.永久关闭selinux,修改/etc/selinux/config

SELINUX=enforcing
改为
SELINUX=disabled

4.添加linux规则,把要挂载的目录添加到selinux白名单

  • chcon -Rt svirt_sandbox_file_t /home/jenkins/

chcon命令简介

chcon命令 是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。使用--reference选项时,把指定文件的安全环境设置为与参考文件相同。chcon命令位于/usr/bin/chcon。

语法

chcon [选项]... 环境 文件...
chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
chcon [选项]... --reference=参考文件 文件...

选项

-h, --no-dereference:影响符号连接而非引用的文件。

  • --reference=参考文件:使用指定参考文件的安全环境,而非指定值。

-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:为处理的所有文件显示诊断信息。
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。

以下选项是在指定了-R选项时被用于设置如何穿越目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。

-H:如果命令行参数是一个通到目录的符号链接,则遍历符号链接。
-L:遍历每一个遇到的通到目录的符号链接。
-P:不遍历任何符号链接(默认)。
--help:显示此帮助信息并退出。
--version:显示版本信息并退出。


Centos7: 添加bind9的DNS服务


需求

内网需要的服务比较多了,不能都用IP地址来处理相关服务,得搭建个内网的DNS服务器来区分相关业务。

安装bind

这里选择yum直接安装,也可以编译安装使用。

  • yum install bind bind-utils

配置bind主配置文件

vim /etc/named.conf

  • // named.conf
  • //
  • // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  • // server as a caching only nameserver (as a localhost DNS resolver only).
  • //
  • // See /usr/share/doc/bind*/sample/ for example named configuration files.
  • //
  • // See the BIND Administrator's Reference Manual (ARM) for details about the
  • // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
  • options {
  • #listen-on port 53 { 127.0.0.1; };
  • listen-on port 53 { 127.0.0.1; 192.66.0.113; }; # 这里添加本机地址或者直接any也可以
  • listen-on-v6 port 53 { ::1; };
  • directory "/var/named";
  • dump-file "/var/named/data/cache_dump.db";
  • statistics-file "/var/named/data/named_stats.txt";
  • memstatistics-file "/var/named/data/named_mem_stats.txt";
  • recursing-file "/var/named/data/named.recursing";
  • secroots-file "/var/named/data/named.secroots";
  • allow-query { any; }; # 这里需要注意一下修改成any,要不其他机器不能访问
  • forward only;
  • forwarders {223.5.5.5;8.8.8.8;}; # 添加上游DNS
  • /*
  • - If you are building an AUTHORITATIVE DNS server, do NOT enable recurs ion.
  • - If you are building a RECURSIVE (caching) DNS server, you need to ena ble
  • recursion.
  • - If your recursive DNS server has a public IP address, you MUST enable access
  • control to limit queries to your legitimate users. Failing to do so w ill
  • cause your server to become part of large scale DNS amplification
  • attacks. Implementing BCP38 within your network would greatly
  • reduce such attack surface
  • */
  • recursion yes; # 允许向上游查询为yes,反之为no
  • dnssec-enable no; # 安全检查,修改成no。要不会导致未配置的域名不向上游查询,导致查询错误
  • dnssec-validation no; # 安全检查,修改成no。要不会导致未配置的域名不向上游查询,导致查询错误
  • /* Path to ISC DLV key */
  • bindkeys-file "/etc/named.root.key";
  • managed-keys-directory "/var/named/dynamic";
  • pid-file "/run/named/named.pid";
  • session-keyfile "/run/named/session.key";
  • };
  • logging {
  • channel default_debug {
  • file "data/named.run";
  • severity dynamic;
  • };
  • };
  • zone "." IN {
  • type hint;
  • file "named.ca";
  • };
  • include "/etc/named.rfc1912.zones";
  • include "/etc/named.root.key";

域名配置

vim /etc/named.rfc1912.zones

  • // named.rfc1912.zones:
  • //
  • // Provided by Red Hat caching-nameserver package
  • //
  • // ISC BIND named zone configuration for zones recommended by
  • // RFC 1912 section 4.1 : localhost TLDs and address zones
  • // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
  • // (c)2007 R W Franks
  • //
  • // See /usr/share/doc/bind*/sample/ for example named configuration files.
  • //
  • zone "localhost.localdomain" IN {
  • type master;
  • file "named.localhost";
  • allow-update { none; };
  • };
  • zone "localhost" IN {
  • type master;
  • file "named.localhost";
  • allow-update { none; };
  • };
  • zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
  • type master;
  • file "named.loopback";
  • allow-update { none; };
  • };
  • zone "1.0.0.127.in-addr.arpa" IN {
  • type master;
  • file "named.loopback";
  • allow-update { none; };
  • };
  • zone "0.in-addr.arpa" IN {
  • type master;
  • file "named.empty";
  • allow-update { none; };
  • };
  • zone "code.ciomp" IN {
  • type master;
  • file "code.ciomp.zone";
  • allow-update { any; };
  • };
  • # 添加自己需要配置的域名
  • zone "ciomp-code.com" IN {
  • type master;
  • file "ciomp-code.com.zone"; #此为此域名对应配置文件名
  • allow-update { any; };
  • };

域名详细配置

这里注意一下目录,由于主配置中配置了文件夹。相对的域名配置文件直接放在这即可。

vim /var/named/ciomp-code.com.zone

  • $ORIGIN ciomp-code.com.
  • $TTL 600 ; 10 minutes
  • @ IN SOA dns.ciomp-code.com. dnsadmin.ciomp-code.com. (
  • 2023062101 ; serial
  • 10800 ; refresh (3 hours)
  • 900 ; retry (15 minutes)
  • 604800 ; expire (1 week)
  • 86400 ; minimum (1 day)
  • )
  • NS dns.ciomp-code.com.
  • $TTL 60 ; 1 minute
  • * A 10.66.0.11
  • 注意:serial字段在每次修改配置文件时数值+1

启动dns服务

systemctl start named ## 启动dns
systemctl enable named ## 设置开机启动

  • 注意:系统防火墙的53端口记得需要开放出来

检查

dns服务检查

  • [root@localhost named]# netstat -lntup | grep 53
  • tcp 0 0 192.66.0.113:53 0.0.0.0:* LISTEN 7473/named
  • tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 7473/named
  • tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 7473/named
  • tcp6 0 0 ::1:53 :::* LISTEN 7473/named
  • tcp6 0 0 ::1:953 :::* LISTEN 7473/named
  • udp 0 0 192.66.0.113:53 0.0.0.0:* 7473/named
  • udp 0 0 127.0.0.1:53 0.0.0.0:* 7473/named
  • udp 0 0 0.0.0.0:5353 0.0.0.0:* 869/avahi-daemon: r
  • udp6 0 0 ::1:53 :::* 7473/named
  • [root@localhost named]#

客户端检查(需要将DNS地址修改成DNS服务器的ip)

  • C:\Users\Administrator>nslookup www.ciomp-code.com
  • 服务器: UnKnown
  • Address: 192.66.0.113
  • 名称: www.ciomp-code.com
  • Address: 10.66.0.11