我正在将各种文件放入/tmp,我想知道删除它们的规则?
我想象它对于不同的发行版是不同的,而且我对 Ubuntu 和 Fedora 桌面版本特别感兴趣。
但是找到一个很好的通用方法将是一件好事。
更好的是控制它的一个很好的通用方法!(类似于“每天凌晨 3 点,删除任何/tmp超过 60 天的文件,但不要在重新启动时清除目录”)
许多人(包括Securing Debian Manual)建议/tmp使用一noexec,nodev,nosuid组选项进行安装。这通常表现为“深度防御”策略的一个要素,通过防止让某人写入文件的攻击升级,或防止具有合法帐户但没有其他可写空间的用户的攻击升级。
然而,随着时间的推移,我遇到noexec了一些毫无用处的论点(最突出的是由 Debian/Ubuntu 开发人员 Colin Watson 提出的),原因有以下几个:
/lib/ld-linux.so <binary>尝试运行以获得相同的效果。鉴于这些论点,对更多配置的潜在需求(例如,debconf像一个可执行的临时目录)以及潜在的便利性损失,这是一项值得的安全措施吗?您还知道哪些其他漏洞可以实现规避?
我没有 open_basedir,php 可以访问 /etc /usr /proc /home 等......但不能访问 /tmp。
tmpfs 安装在 /tmp (/tmp type tmpfs (rw)) 这也是我想使用 /tmp 文件夹的原因。
我的文件归 http(nginx 和 php 的用户)所有,每个人都可以阅读。
sudo -u http cat /tmp/file 正在运行,但 php 脚本中的任何内容都不起作用(如 file_exist() 或 file())。
编辑:日志中显示的错误:
PHP Warning: file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267
Run Code Online (Sandbox Code Playgroud)
编辑2:我以另一种方式测试了这个问题。我做了
touch("/tmp/boo");
file_exist("/tmp/boo");
Run Code Online (Sandbox Code Playgroud)
和 file_exist 返回 true 以便创建文件。然后我在 /tmp 里面看了看,在那里找不到“boo”文件。这就是我所害怕的,php 看不到挂载点。为什么会这样,我该如何解决?
是否有环境变量可以在基于 debian 的系统上设置临时目录?
我有一个使用该环境变量的 Java 小程序,并且在启动同一个小程序的两个实例时会感到困惑。
在 Centos 6.3 服务器上,我注意到 /tmp 不再有可用空间来存储文件。
[root@]# df -h
已使用的文件系统大小 Avail Use% Mounted on
/dev/mapper/vg0-lv_root
99G 11G 84G 12% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 194M 65M 120M 35% /boot
/dev/mapper/vg0-lv_tmp
97M 92M 704K 100% /tmp
/dev/mapper/vg1-lv0 50G 180M 47G 1% /mnt/ssd2
但是 /tmp 中什么都没有
[root@]# ls -Sahl /tmp |more 总共 10K 博士-xr-xr-x。25 根根 4.0K Mar 16 04:29 .. drwxrwxrwt。3 根 3.0K 3 月 16 日 03:32。 drwx------. 2 根根 1.0K Mar 16 04:28 mc-root
我的问题是:怎么可能?由什么/tmp 挂载空间使用?我怎么能清理它?
我有 Linux 服务器,并且有一个备用的 500GB 磁盘分区。我想格式化它并将其用于/tmp。服务器偶尔会运行一些大数据处理任务,因此 /tmp 可能会保存 GB 的临时数据。
然后我有了一个想法,我可以将它添加为交换分区,然后将 /tmp 挂载到 tmpfs。这个想法合理吗?
服务器有 6GB 的 RAM,因此在大多数情况下 /tmp 上的数据只会在 RAM 中,具有明显的速度优势。问题是,如果 /tmp 上有 10-20GB 的数据,系统将如何执行?与简单地将 /tmp 挂载到 ext4 分区相比,性能如何?感谢帮助。
编辑:很明显,当 tmpfs 的使用量达到 RAM 限制时,系统将开始换出内存。但是 Linux 是否足够智能以换出 tmpfs 数据并将“常规”数据保存在 RAM 中?如果是,那么我想它的行为是合理的。如果没有,那么整个系统将受到严重影响。
我在使用 Apache2 的 Debian 网络服务器上的 PHP 会话mod_php似乎随机失败,说没有空间来编写它们:
sudo tail -60 /var/log/apache2/error.log
[Fri Jan 30 15:55:35 2015] [error] [client xxx.xxx.xxx.xxx] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/tmp/sess_555555555555555555, O_RDWR) failed: No space left on device (28) in /path/to-first-session-use/core/bootstrap.php on line 18
Run Code Online (Sandbox Code Playgroud)
当我尝试:
ls /tmp
Run Code Online (Sandbox Code Playgroud)
它只是永远挂起,所以这很糟糕。
但是当我检查可用空间并检查 inode 使用是否合理时......
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 150G 121G 22G 85% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 10M 16K 10M 1% /dev
tmpfs 2.0G 4.0K 2.0G 1% …Run Code Online (Sandbox Code Playgroud) 我知道已经有多个这样的问题,但他们的答案都不适用于我的问题。
所以我尝试从 Debian 7.7 升级到 Debian 8.1。每个工作正常,但某些操作报告Error: No space left on device。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 443G 28G 393G 7% /
udev 10M 0 10M 0% /dev
tmpfs 1.6G 8.7M 1.6G 1% /run
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 795M 0 795M 0% /run/user/0
Run Code Online (Sandbox Code Playgroud)
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 29450240 419083 29031157 2% / …Run Code Online (Sandbox Code Playgroud) 我的 /tmp 分区在一个非常大的 SQL 查询中不断耗尽空间。如何使 /tmp 分区更大?
谢谢汤姆
编辑:
以下是请求命令的输出
blkid
/dev/sda1: UUID="e8604436-53ea-4a05-9459-6c498cf19a1a" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: UUID="21bd6739-89c8-4196-986d-bec9474a4b1a" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda6: UUID="1a80f7c6-d524-4974-82ee-c5bd734802b9" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda7: TYPE="swap"
/dev/sda8: UUID="edee40d5-9337-4705-b152-7bc2b9b35336" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda9: UUID="5c586547-8d78-4dd1-86c9-92f83b4d8fb5" SEC_TYPE="ext2" TYPE="ext3"
fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000504d7
Device Boot Start End Blocks Id System
/dev/sda1 18663 19201 4329517+ 83 Linux
/dev/sda2 35 18662 149629410 5 Extended
/dev/sda5 …Run Code Online (Sandbox Code Playgroud) sudo 联机帮助页告诉我,我可以通过传递选项来保护环境-E,这在以下情况下不起作用$TMPDIR:
> env | grep TMPDIR
TMPDIR=/localdata/tmp
> sudo env | grep TMPDIR
[no output]
> sudo -E env | grep TMPDIR
[no output]
Run Code Online (Sandbox Code Playgroud)
此选项未列入黑名单,即sudo sudo -V未将其列为“要删除的环境变量”。按照问题“如何指定根的环境变量”的答案中提出的方法,我尝试将其列入白名单,这是我的/etc/sudoers读物:
Defaults env_reset
Defaults env_keep = "TMPDIR"
Run Code Online (Sandbox Code Playgroud)
这也不起作用,它实际上甚至没有TMPDIR出现在白名单中(即“sudo sudo -V”打印为“要保留的环境变量”)。
(我运行的是 Ubuntu 10.04。)