我有一个文件,该文件的所有者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 的命令。