即使以 root 身份也无法编辑具有 777 权限的 /tmp 中的文件;可以删除;

即使以 root 身份也无法编辑具有 777 权限的 /tmp 中的文件;可以删除;

我有一个文件,该文件的所有者www-data:www-datarwxrwxrwx权限为用户。尽管我是 root 用户,但我无法写入该文件,但是我可以删除它。该/tmp文件夹具有drwxrwxrwt权限。

问题可能出在哪里?

# Can't write to file
root@app-web:/data/app# >> /tmp/app.log
bash: /tmp/app.log: Permission denied

# Permissions on file
root@app-web:/data/app# ls -alt /tmp/app.log 
-rwxrwxrwx 1 www-data www-data 18788 /tmp/app.log

# I can remove it
root@app-web:/data/app# rm -r /tmp/app.log

# Create it 
root@app-web:/data/app# touch /tmp/app.log 

# Write to it
root@app-web:/data/app# >> /tmp/app.log 

# Once I change owner back to www-data
root@app-web:/tmp# chown www-data:www-data /tmp/app.log

# I can no longer write
root@app-web:/tmp# >> /tmp/app.log
bash: /tmp/app.log: Permission denied
root@app-web:/data/app# lsattr /tmp/app.log
--------------e--- /tmp/app.log
root@app-web:/data/app# getfacl /tmp/app.log
# file: app.log
# owner: www-data
# group: www-data
user::rwx
group::rwx
other::rwx

我的/tmp文件夹位于/安装位置。

overlay on / type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/JYPNMY5ACNKQ4ZF6Z43DCI2ITB...upperdir=/var/lib/docker/overlay2/bf343e129700f4357a4d24bd0a9782d094e8e51f21e06932111ec432a3ab27dc/diff,workdir=/var/lib/docker/overlay2/bf343e129700f4357a4d24bd0a9782d094e8e51f21e06932111ec432a3ab27dc/work,xino=off)

/tmp 的权限 drwxrwxrwt 1 root root 4096 tmp

答案1

您可以删除该文件,因为您有写入权限目录它在里面。

该文件很可能具有 ACL (访问控制列表)使用getfacl(从访问控制列表您可以使用 .package 来查看它。

还有setfacl设置这些 ACL 的命令。

相关内容