小编kas*_*erd的帖子

跟踪没有读取权限的可执行文件

strace在我没有读取权限的可执行文件上使用时,我在 Ubuntu 14.04 上发现了一些令人惊讶的行为。我想知道这是一个错误,还是某些标准要求这种模糊的行为。

首先让我们看看当我在后台启动一个普通的可执行文件并附加到它时会发生什么。正如预期的那样,这有效:

$ /bin/sleep 100 &
[2] 8078
$ strace -p 8078
Process 8078 attached
restart_syscall(<... resuming interrupted call ...>
Run Code Online (Sandbox Code Playgroud)

接下来我尝试使用一个可执行文件,我没有读取权限:

---x--x--x 1 root root 26280 Sep  3 09:37 sleep*
Run Code Online (Sandbox Code Playgroud)

不允许附加到这个正在运行的进程:

$ ./sleep 100 &
[1] 8089
$ strace -p 8089
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Run Code Online (Sandbox Code Playgroud)

这也是我所期望的。如果我可以简单地将调试器附加到进程并有效地以这种方式对可执行文件具有读取权限,那么在没有读取权限的情况下授予执行权限不会有多大好处。

但是,如果我在已经跟踪的进程下启动可执行文件,则可以这样做:

$ strace ./sleep 100
execve("./sleep", ["./sleep", "100"], [/* 69 vars */]) = 0
brk(0)                                  = 0x9b7a000
Run Code Online (Sandbox Code Playgroud)

这对我来说是出乎意料的。这是安全漏洞,还是标准强制要求的功能?

permissions strace

17
推荐指数
1
解决办法
2370
查看次数

每个用户 tmpfs 目录

/tmp众所周知,当使用可预测的文件名时,使用共享目录会导致许多安全漏洞。而且随机生成的名字看起来并不好看。

我想也许最好使用每个用户的临时目录。许多应用程序将使用TMPDIR环境变量来决定临时文件的去向。

在登录时,我可以简单地设置TMPDIR=/temp/$USER在那里/temp那么就必须包含目录与该目录是可写的,以该用户,并没有其他人的每个用户。

但在那种情况下,我仍然希望/temp成为一个tmpfs挂载点,这意味着重新启动后子目录将不存在,需要以某种方式重新创建。

对于如何创建tmpfs每个用户的子目录,是否有任何(事实上的)标准?或者我是否必须想出我自己的非标准工具来动态生成这样的目录?

fhs security tmpfs

7
推荐指数
1
解决办法
6711
查看次数

为什么某些 TCP 重置数据包会出现在我的 iptables 日志中?

我开始在我的 Debian Jessie 服务器上添加一些基本的 iptables 规则。我的目标是过滤和记录网络流量(出于安全和学习目的)。不考虑 ICMP 数据包,这些是我正在使用的规则:

# INPUT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -j REJECT --reject-with tcp-reset

# OUTPUT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT …
Run Code Online (Sandbox Code Playgroud)

iptables tcp

6
推荐指数
1
解决办法
5812
查看次数

在 SSD 和 HDD 上配置 mdadm RAID-1

我需要在一个 SSD 和一个 HDD 上配置 RAID-1。SSD 和 HDD 都有一些我不需要的预装软件,因此如果有任何优势,它们都可以完全擦除。

到目前为止,我的研究使我找到了这个--write-mostly选项,我知道我应该在 HDD 上使用它,以便读取操作可以获得 SSD 的全速。

但是我不清楚如何确保正确使用 TRIM 命令。

我在设置期间阅读了有关 mdadm 写入设备每个扇区的警告,无论在设置突袭之前执行了任何 TRIM,SSD 都没有备用扇区。

我最好先创建以 SSD 作为唯一设备而降级的 RAID,然后添加 HDD,以便只有 HDD 被写入?

在设置 RAID 之前,我需要对 SSD 做什么,以便执行任何需要的 TRIM?SSD 预装了软件(我不需要),这意味着我不知道以前写入了哪些扇区。

如果有任何相关性,SSD 是 128GB,并且在SAMSUNG MZ7LF128HCP-00000, FXT0101Qata 层和SAMSUNG MZ7LF128 101Q PQsd 层提到的 dmesg 输出中。

linux ssd mdadm trim

6
推荐指数
1
解决办法
3411
查看次数

pwd 输出什么?

pwdshell 脚本中的命令是否输出 shell 脚本所在的目录?

linux command-line shell

6
推荐指数
3
解决办法
5061
查看次数

为什么`mkdir -pm` 没有设置我要求的权限?

我用命令创建了一些目录 mkdir -pm 700 /tmp/a/b/c

我很惊讶地发现/tmp/a有权限775而不是700我请求的权限。

是否有某种原因mkdir只将指定的模式应用于创建的最后一个目录并忽略它的父目录?

permissions mkdir

5
推荐指数
1
解决办法
1961
查看次数

标签 统计

linux ×2

permissions ×2

command-line ×1

fhs ×1

iptables ×1

mdadm ×1

mkdir ×1

security ×1

shell ×1

ssd ×1

strace ×1

tcp ×1

tmpfs ×1

trim ×1