У меня есть файл, который принадлежит 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
Вы можете удалить файл, поскольку у вас есть разрешение на запись для каталога , что он в
, скорее всего, файл имеет ACL ( Список контроля доступа ). Используйте GetFACL
(из пакета ACL ), чтобы увидеть его.
Существует также команда SetFacl
для установки этих ACL.