![即使以 root 身份也无法编辑具有 777 权限的 /tmp 中的文件;可以删除;](https://linux22.com/image/1206464/%E5%8D%B3%E4%BD%BF%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E4%B9%9F%E6%97%A0%E6%B3%95%E7%BC%96%E8%BE%91%E5%85%B7%E6%9C%89%20777%20%E6%9D%83%E9%99%90%E7%9A%84%20%2Ftmp%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9B%E5%8F%AF%E4%BB%A5%E5%88%A0%E9%99%A4%EF%BC%9B.png)
我有一个文件,该文件的所有者www-data:www-data
和rwxrwxrwx
权限为用户。尽管我是 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 的命令。