问题标签 [apparmor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 为 ptrace_scope 禁用 Docker 的 AppArmor
是否可以为特定的 Docker 容器禁用 AppArmor?我想让 ptrace 可访问,以便我可以将 gdb 附加到正在运行的进程,但是当我想更改设置时遇到以下问题:
mysql - 无法更改 MySQL 数据目录
我正在尝试将我的 MySQL 数据库的数据目录从默认位置 /var/lib/mysql 更改为新路径,在我的情况下是 /home/dev/Desktop/iiab/db/mysql。
我已尝试按照 Victor 在以下帖子中提供的答案: 如何更改 MySQL 数据目录? (我还按照维克多回答的评论中的 mak 说明编辑了别名文件)。
但是,尝试再次启动 MySQL 时出现以下终端错误:
使用以下命令检查日志文件时
它显示以下内容:
我的 my.cnf 文件如下所示(我省略了最初的注释##):
我的 /etc/apparmor.d/usr.sbin.mysqld 文件如下所示(我只包括受指令影响的部分,即用新路径替换 var/lib/mysql)。
我的 /etc/apparmor.d/tunables/alias 文件如下所示(我省略了初始注释##):
我能够成功重新启动并重新加载 apparmor。
我正在使用 Ubuntu 16.04。
有人知道我在做什么错吗?
shared-memory - 将 IVSHMEM 与 libvirt virt-manager 一起使用
在qemu中使用ivshmem需要以下步骤。
- 在主机中启动 ivshmem 服务器,
./ivshmem_server
这将创建一个 unix 域套接字/tmp/ivshmem_socket
- 使用以下命令行选项启动 qemu-
-chardev socket,path=/tmp/ivshmem_socket,id=ivshmem_socket -device ivshmem,chardev=ivshmem_socket,size=1m
现在,如果我们lspci
在来宾中进行操作,ivshmem pci 设备会显示在其中。
我怎样才能在 virt-manager 中做同样的事情?具体来说,我想做两件事。
- 将上面的命令行选项传递给 qemu,当 virt-manager 启动它时
- libvirt virt-manager 使用apparmor隔离来宾,如何确保
/tmp/ivshmem_socket
对 VM 的访问不被拒绝?
docker - docker 的 apparmor 配置文件在哪里?
以下问题发生在 Debian Jessie(在 Vagrant 下)中:
docker文档声称 apparmor 配置文件自动放置在 中/etc/apparmor.d/docker
,但是当我列出该目录的内容时,找不到它。
内容/etc/apparmor.d
:
Docker 版本信息
mysql - MySQL 未在 Ubuntu 16.04 上的 5.7.13 中获取符号链接的 cnf 更改
编辑:我可能已经发现了问题的一部分,在底部进一步编辑。
我有一个运行 mysql 的新服务器设置,一切似乎都很好。除了每当我使用显示变量时,我在 .cnf 文件中看到的配置设置都没有显示,并且显示了似乎是一般默认值的配置设置。所以它会出现,而我可以很好地使用 mysql,设置都是默认值。
我想弄清楚为什么我的 .cnf 没有被使用。我已经采取了一些步骤来检查它是否确实正在加载,这些步骤如下所示。一旦我确定它正在被加载,我不知道如何解释为什么我的设置没有被使用。任何帮助将不胜感激。
我的 cnf 文件的位置是这样的:
/etc/mysql/mysql.conf.d/mysqld.cnf
我试图验证以下内容是否正在使用:
sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
默认选项按给定顺序从以下文件中读取:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
/etc/my.cnf
不存在
/etc/mysql/my.cnf
是一个符号链接/etc/alternatives/my.cnf
/etc/alternatives/my.cnf
是一个符号链接/etc/mysql/mysql.cnf
/etc/mysql/mysql.cnf
包含:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
etc/mysql/conf.d/
是一个目录,其中包含:
mysql.cnf
mysqldump.cnf
mysql.cnf
是空的,所以大概什么也没做
/etc/mysql/mysql.conf.d/
是一个目录,其中包含:
mysqld.cnf
mysqld.cnf.dpkg-新
mysqld_safe_syslog.cnf
mysqld.cnf
是一个符号链接/home/{my_username}/conf/mysqld.cnf
/home/{my_username}/conf/mysqld.cnf
是我希望它使用的 conf 文件。
所以我看不到应该使用我的配置的问题。
在第二次尝试验证这个 .cnf 正在被使用时,我使用了strace mysql
. 我的文件与我刚刚在上面列出的其他路径一起列出并打开。
再次看起来它应该使用 .cnf 文件。
任何人都可以提供任何见解,为什么它不是?
编辑:我刚刚做了一个strace mysqld
代替,strace mysql
我的 .cnf 文件出现权限错误。这可能是问题所在。但是我对mysql和mysqld之间的区别还不够了解,谁能解释一下?
security - 对于 Docker 容器,SELinux 是否比 AppArmor 更安全?
我的理解是 AppArmor 和 SELinux 都实现了一个强制访问控制 (MAC) 系统,该系统为容器之间提供了额外的隔离安全层,并且 Docker 为两者都提供了默认策略。
但是,SELinux 特别可以使用多类别安全 (MCS) 来强制系统上的每个单独的容器只能访问标记为该特定容器的主机上的文件(更多详细信息:文章、演示文稿)。也就是说,如果两个 Docker 容器 A 和 B 在单个主机上启动,Docker 附带的默认 SELinux 安全策略实际上会强制在发生故障时,容器 A 中的 linux 进程将无法访问属于容器 B 的文件。不仅如此,文件可以从主机挂载到容器中的唯一方法是卷后缀使用“:Z”,从而告诉 Docker 确保将相关的 MCS 标签添加到该路径中主机上的文件中,以便容器可以访问它们。
相反,我在 AppArmor 中找不到对类似机制的任何引用。相反,Docker 的默认 AppArmor 配置文件似乎主要是关于拒绝访问特定的文件系统路径和主机资源,而不是拒绝容器之间的访问。
我的问题是,如果我使用 Docker 的默认 AppArmor 配置文件,我会得到与使用 SELinux 相同的有效保护吗?AppArmor 会阻止从一个容器访问另一个容器的文件吗?如果是,它是如何实现的?
proxmox - 重新启动 CT 时覆盖 lxc 配置文件
我正在尝试在 proxmox 4.4 下的 debian 8 lxc 容器上安装 Sandstorm。
根据我的搜索(和这篇文章),我需要编辑 apparmor 容器的配置文件/var/lib/lxc/*lxcId*/conf
并重新启动 CT
但是当我重新启动 CT 时,我添加到此文件中的 anny 行被抑制为儿子 ....(我准确地说,我使用 root 权限编辑此文件并且保存是可以的,直到我重新启动 CT)我错过了什么?
谢谢!
python - 如何在python中限制子进程stdout和stderr的大小
我需要运行用户提交的应用程序。我的代码如下所示:
现在,由于我无法控制用户将提交的内容,因此我想限制应用程序输出的大小。其他诸如试图访问未经授权的系统资源和滥用 CPU 周期的事情正受到 apparmor 规则执行的限制。允许运行的最长时间由父进程(在 python 中)处理。现在,恶意应用程序仍然可以通过将大量数据写入其 stdout 来尝试淹没服务器系统,因为它知道 stdout 正在保存到文件中。
我不想将 AppArmors RLIMIT 或内核模式下的任何东西用于 stdout/stderr 文件。能够使用标准库从 python 中完成它会很棒。
我目前正在考虑创建一个文件的子类,并在每次写入时检查已将多少数据写入流。或者创建一个设置了最大长度的内存映射文件。
但我觉得可能有一种更简单的方法来限制文件大小我还没有看到它。
tor - AppArmor 在 Mint18 中杀死 TOR
我正在设置新安装的 Mint 18 Cinnamon。默认的 Ubuntu TOR 或 TOR 自己的 repo 版本都不起作用。两者都失败了:
在系统日志中。但是 /usr/bin/tor 确实存在:
运行 /etc/init.d/tor start 也是如此。但奇怪的是,运行 sudo /usr/bin/tor 确实有效!当然,这是一个非常糟糕的方法......
/var/log/tor 中什么都没有
有任何想法吗?我以前从来没有处理过 AppArmor,它总是能正常工作,而谷歌让我无处可去。
docker - 拒绝 docker 容器写入主机的文件系统
我有 2 台电脑,一台正在使用 Fedora。当我在 fedora 上使用这个命令时:
我无法从我的主机写入/读取文件。这是我想要的行为。
问题是:当我使用相同的命令时,使用 ubuntu。容器可以读取/写入主机上的每个文件。我不想要这个。
我认为 Fedora SELINUX 正在保护我的系统。如何使用 AppArmor 做到这一点?
我在互联网上做了很多研究,但我只找到了关于如何允许在主机的文件系统上写入的主题....../:
提前致谢。
此致,
编辑
计算机是免费访问的,所以我无法控制用户将如何执行 docker run。我需要保护主机和 apparmor 守护进程。