在win11系统安装用InnoSetup封装的程序,安装完成运行程序时,不是无法运行就是运行后闪退,涉及执行权限不够,因为默认安装的目录在C:Program Files(x86)下,正常安装进去是没有足够权限运行,会报错导致无法运行。
启动Inno Setup进行编译时,输入相关编译基础信息后,会根据输入的相关内容自动生成编译脚本,在脚本中加入以下2行脚本内容:
[Dirs]
Name: {app}; Permissions: users-full
因为默认生成的脚本是没有[Dirs]这个字段的,增加这两行脚本后,打包的程序的安装目录拥有完全控制的权限。
使用Resource Hacker 修改 INNO安装目录下的SetupLdr.e32文件中的Manifest内容
修改SetupLdr.e32第24行内容:
原文:<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
修改为:<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
注意编译后保存!!!
最近再适配统信的机器,但是统信的源里的软件都不是最新的,python最高版本就能支持到3.7。然而这边的三方需要的python版本是3.10的,而且需要dev版本,就需要自己重新编译了。
sudo apt install libffi-dev tcl-dev tk-dev libbz2-dev zlib1g-dev libsqlit3-dev libxml2-dev libssl-dev libxslt1-dev liblzma-dev libreadline-dev llvm libncurses5-dev libncursesw5-dev xz-utils libgdbm-dev libncurses-dev
cas_user@casuser:/data/home/cas_user/code/$ tar -zxvf Python-3.10.13.tgz # 解压
cas_user@casuser:/data/home/cas_user/code/$ cd Python-3.10.13
cas_user@casuser:/data/home/cas_user/code/Python-3.10.13$ ./configure --prefix=/home/user/python_install_path --enable-shared CFLAGS=-fPIC # 配置参数
cas_user@casuser:/data/home/cas_user/code/Python-3.10.13$ make -j8 && sudo make install # 编译及安装
配置项 | 解释 |
---|---|
--prefix=path | 指定安装目录 |
--enable-shared | 生成.so动态库 |
CFLAGS=-fPIC | 编译选项 |
--enable-optimizations | 启用优化 |
其他参数以后补充。
所里需要在软件中添加并行下的代码运行时间,本来是想用ctime库直接统计,但是发现有些计算太微妙,不好统计。直接用毫秒来统计是一个比较好的办法
#include <iostream>
#include <chrono>
void function1()
{
// 第一个函数的代码
}
void function2()
{
// 第二个函数的代码
}
int main()
{
int total_iterations = 10000;
// 循环的总迭代次数
auto start_time_outer = std::chrono::high_resolution_clock::now();
// 记录整个循环的开始时间
for (int i = 0; i < total_iterations; i++)
{
auto start_time_function1 = std::chrono::high_resolution_clock::now();
// 记录第一个函数的开始时间
function1();
// 调用第一个函数
auto end_time_function1 = std::chrono::high_resolution_clock::now();
// 记录第一个函数的结束时间
auto start_time_function2 = std::chrono::high_resolution_clock::now();
// 记录第二个函数的开始时间
function2();
// 调用第二个函数
auto end_time_function2 = std::chrono::high_resolution_clock::now();
// 记录第二个函数的结束时间
auto duration_function1 = std::chrono::duration_cast<std::chrono::microseconds>(end_time_function1 - start_time_function1);
// 计算第一个函数的执行时间
auto duration_function2 = std::chrono::duration_cast<std::chrono::microseconds>(end_time_function2 - start_time_function2);
// 计算第二个函数的执行时间
std::cout << "Function 1 time in each loop iteration is: " << duration_function1.count() << " microseconds" << std::endl;
std::cout << "Function 2 time in each loop iteration is: " << duration_function2.count() << " microseconds" << std::endl;
}
auto end_time_outer = std::chrono::high_resolution_clock::now();
// 记录整个循环的结束时间
auto duration_outer = std::chrono::duration_cast<std::chrono::microseconds>(end_time_outer - start_time_outer);
// 计算整个循环的执行时间
std::cout << "The overall loop time is: " << duration_outer.count() << " microseconds" << std::endl;
return 0;
}
2023年7月19日,OpenSSH发布紧急安全补丁,解决OpenSSH ssh-agent转发中存在安全漏洞远程执行CVE-2023-38408。CVE-2023-38408是一个远程代码执行漏洞,位于 ssh-agent 的转发功能内,特别是涉及提供PKCS#11相关服务的情况下。在某些条件下,可以操纵ssh-agent对PKCS#11的支持,以便通过转发的代理套接字来促进远程代码执行。利用的先决条件包括受害者系统上存在特定库以及需要将代理转发到攻击者控制的系统。
1 . 升级到OpenSSH 9.3p2或更高版本:升级到最新版本的OpenSSH至关重要,因为它包含缓解漏洞的关键补丁。确保所有相关系统和服务器及时更新至推荐版本或更高版本。
2 . 另外采取预防措施来避免被利用:
建议在仅仅OpenSSH用于远程主机管理的机器,通过Openssh配置(sshd_config)、防火墙,安全组ACL等限制来源访问IP为白名单仅可信IP地址,同时,非必要,关闭SSH代理转发功能,禁止在有关主机启用ssh隧道等。
关闭SSH代理转发功能方法为:
配置/etc/ssh/sshd_config
AllowTcpForwarding NO
这边是Centos7的系统,默认的Openssh版本是
1 . 安装对应服务
yum install telnet* xinetd # 安装telnet服务
2 . 配置xinetd
下面文件内容需要自己创建文件或者编辑
service telnet
{flags=REUSE socket_type=stream wait=no user=root server=/usr/sbin/in.telnetd log_on_failure += USERID disable= no
}
3 . 启动相关服务
# 设置服务开机自启及启动
systemctl enable xinetd.service
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start xinetd
# 设置防火墙放通telnet
firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --complete-reload
# 添加telnet用户(不能直接用root登录)
useradd telnet
passwd telnet
1 . 使用telnet形式登录后su到管理员
2 . 下载源码解压
阿里云(官方推荐镜像站):https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
openssh-9.3p2源码下载地址
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz
tar -zxvf openssh-9.3p2.tar.gz
# 停止当前ssh服务
systemctl stop sshd
3 . 备份相关信息
# 备份当前ssh服务及配置
cp -a /etc/ssh /etc/ssh.bak
cp -a /usr/sbin/sshd /usr/sbin/sshd.bak
cp -a /usr/bin/ssh /usr/bin/ssh.bak
# 删除老配置
rm -rf /etc/ssh/*
# 卸载已安装的openssh相关软件包
rpm -e `rpm -qa | grep openssh` --nodeps
4 . 配置
#编译预配置
cd openssh-9.3p2 && ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam
5 . 编译及安装
make
make install
这里编译安装会出现一些问题。提示Ubable to load host key "/etc/ssh/ssh_host_*_key": bad permission等文件权限的错误。
问题解决办法:
直接重新给文件附上权限
chomd 0600 /etc/ssh/ssh_host_*_key
6 . 启动
# 检查并删除老版本启动脚本
ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*
# 拷贝启动脚本
cp contrib/redhat/sshd.init /etc/init.d/sshd
# 拷贝sshd.pam配置文件
cp contrib/redhat/sshd.pam /etc/pam.d/
# 建立软连接
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/# 若报错可将已存在的文件重命名,再执行软连接
systemctl daemon-reload
# 启动并设置开机自启动
systemctl start sshd && systemctl enable sshd
# 允许root远程登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# 启动ssh服务
systemctl start sshd
# 查看ssh服务状态
systemctl status sshd
启动ssh服务报错:
Starting sshd:/etc/rc.d/init.d/sshd: line 49: /usr/sbin/sshd: No such file or directory
Failed to start SYSV: Openssh server daemon.
解决办法:
cp -a /usr/local/openssh/sbin/sshd /usr/sbin/sshd
7 . 准备战斗结束
# 删除telnt
systemctl stop telnet.socket
systemctl disable telnet.socket
#删除防火墙放行端口
firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload
# 启动ssh服务
systemctl start sshd