我想在 Alpine 中构建内核模块,我知道如何在 Ubuntu 中进行。
在 Ubuntu 中,我曾经通过运行以下命令安装内核头文件:
apt install -y build-essential linux-headers-$(uname -r)
阿尔卑斯山的等价物是什么?
我在网上搜索,有人写道,相当于build-essential
isbuild-base
但是linux-headers-$(uname -r)
?
我有以下脚本:
installRequiredFiles=$1
install_with_pkg()
{
arg1=$1
echo $arg1
echo "[+] Running update: $arg1 update."
}
if [ $installRequiredFiles = "true" ]; then
if [ -x "$(command -v apt)" ]; then
install_with_pkg "apt"
elif [ -x "$(command -v yum)" ]; then
install_with_pkg "yum"
elif [ -x "$(command -v apk)" ]; then
install_with_pkg "apk"
else
echo "[!] Can't install files."
fi
fi
当我直接运行它时,它工作正常:
root@ubuntu:/# ./myscript.sh "true"
apt
[+] Running update: apt update.
Printing installRequiredFiles: true
Printing arg1: apt
但是当我使用时,sh -c
我收到以下错误:
root@ubuntu:/# sh -c ./myscript.sh "true"
./c.sh: 11: [: =: unexpected operator
Printing installRequiredFiles:
Printing arg1:
我希望能够正确运行它,sh -c
并且我希望它支持sh
并且bash
目前支持。
我有一个程序接收一个参数并每秒打印一次:
~# ./myapp 234
234
234
234
234
...
我希望能够在后台和 shell 之后立即运行它,但它必须在一行中(我不想解释为什么我需要它,因为我现在不想让讨论变得太复杂) .
这是我尝试过的,我收到的错误是:
~# bash -c "./myapp 234 &; sh"
bash: -c: line 0: syntax error near unexpected token `;'
bash: -c: line 0: `./myapp 234 &; sh'
我也试过&&
作为分隔符:
~# bash -c "./myapp 234 & && sh"
bash: -c: line 0: syntax error near unexpected token `&&'
bash: -c: line 0: `./myapp 234 & && sh'
知道我该如何解决吗?
编辑:
感谢@roaima。
我还找到了一个讨论它的链接:
How to run a program in background and also using && to execute another command
我有 Ubuntu 16.04,最近我重新安装了 AppArmor:
sudo rm -rf /etc/apparmor*
sudo apt-get install apparmor --reinstall
sudo service apparmor restart
当我尝试解析配置文件时apparmor_praser
出现错误:
第 1 行 my.profile 中 my.profile 的 AppArmor 解析器错误:无法打开“可调参数/全局”
我检查了我的 ApprAmor 文件夹,发现它缺少一些文件:
root@ubuntu:/etc/apparmor.d# ls ./tunables/
home.d multiarch.d xdg-user-dirs.d
虽然,在我删除文件之前,我有这些文件:
root@ubuntu:~# ls /etc/apparmor.d/tunables/
alias apparmorfs dovecot global home home.d kernelvars multiarch multiarch.d proc securityfs sys xdg-user-dirs xdg-user-dirs.d
似乎安装没有安装所有依赖库。
我也试过这些:
apt-get install apparmor-utils apparmor-easyprof apparmor-easyprof-ubuntu
但是我仍然没有重要文件,例如tunables/global
.
知道如何在 Ubuntu 默认安装中重新安装 AppArmor 吗?
我想做一些奇怪的容器,我的任务之一是替换uname
二进制文件。
我编码它:
#include <stdio.h>
int main() {
printf("This is a fake uname\n");
return 0;
}
编译它:
gcc uname.c -o uname
当我在我的 ubuntu 上运行它时它工作正常。
我创建了一个Dockerfile
并将其复制到图像中:
cat > Dockerfile <<EOF
FROM alpine:latest
RUN rm /bin/uname
COPY uname /bin/
ENTRYPOINT sh;
WORKDIR /home
EOF
并建造它docker build -t myimage -f Dockerfile .
当我运行图像时:
docker run -it --rm myimage
该文件存在,但是当我尝试运行它时,它写道它不存在:
/home # uname
sh: uname: not found
/home # ls -lia uname
ls: uname: No such file or directory
/home # ls -lia /bin/uname
35 -rwxr-xr-x 1 root root 8600 Jan 29 13:27 /bin/uname
我的组织中有一台机器,我 sshed 并收到了一个终端。
当我跑步时,netstat -ntlp
我收到:
[root@webtl1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 527/systemd-resolve
tcp6 0 0 :::5355 :::* LISTEN 527/systemd-resolve
tcp6 0 0 :::22 :::* LISTEN 1/systemd
当我跑步时,ps -a
我收到:
[root@webtl1 ~]# ps -a
PID TTY TIME CMD
1165 pts/0 00:00:00 ps
我没有看到过程systemd-resolve
。但如果我跑步,ps -p 527
我确实看到了:
[root@webtl1 ~]# ps -p 527
PID TTY TIME CMD
527 ? 00:00:00 systemd-resolve
为什么我看不到它ps -a
?
我想知道哪些应用程序正在使用Linux 内核密钥环?
我在谷歌搜索但没有找到此类应用程序的列表。