sudo chown
报告说它已经存在changed ownership
,但stat
显示它们保持不变。我完全不知道是什么导致了这种行为。命令及其输出如下:
iceberg@iceberg-Vostro-3446:/media/iceberg/Data3/Open_Source_Projects/container$ stat ./logs/mysql/tomcat/error.log
File: './logs/mysql/tomcat/error.log'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 397758 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/ iceberg) Gid: ( 1000/ iceberg)
Access: 2017-08-03 21:53:37.845481100 +0530
Modify: 2017-08-03 21:53:37.845481100 +0530
Change: 2017-08-03 21:53:37.845481100 +0530
Birth: -
iceberg@iceberg-Vostro-3446:/media/iceberg/Data3/Open_Source_Projects/container$ sudo chown -vR 999:999 ./logs/mysql/tomcat/error.log
[sudo] password for iceberg:
changed ownership of './logs/mysql/tomcat/error.log' from iceberg:iceberg to 999:999
iceberg@iceberg-Vostro-3446:/media/iceberg/Data3/Open_Source_Projects/container$ stat ./logs/mysql/tomcat/error.log
File: './logs/mysql/tomcat/error.log'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 397758 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/ iceberg) Gid: ( 1000/ iceberg)
Access: 2017-08-03 21:53:37.845481100 +0530
Modify: 2017-08-03 21:53:37.845481100 +0530
Change: 2017-08-03 21:53:37.845481100 +0530
Birth: -
编辑1:更新了与文件位置相关的信息。
编辑2:正在使用的文件系统是NTFS。 Windows分区安装在ubuntu内部。
答案1
在评论中,您提到文件系统是 NTFS。
这就是问题的根源。文件系统以用户身份挂载iceberg
,并且其所有文件都表示为该用户所有。
要改变这种情况,您可能需要:
使用不同的选项以 root 身份挂载文件系统,以便尊重 NTFS 的文件所有权。进行此更改后,您可能需要修复其他文件的所有权。
以用户 999 的身份挂载文件系统。这将使其所有文件都归该用户所有,这可能是也可能不是您想要的。
更改该文件的权限(而不是所有权),以允许用户 999 写入它。
将这些文件存储在具有本机 Linux 文件系统的磁盘上,而不是存储在 NTFS 驱动器上。
答案2
由于您的输出提到“容器”,我假设您正在使用docker ...
你确定这个文件在你的docker中吗?如果文件来自docker外部的挂载目录,就会发生这种情况。
您能检查一下主机的文件吗?
# stat /var/lib/docker/aufs/diff/<container id>/<path in container>/logs/mysql/tomcat/error.log
如果您在这里看不到该文件,则它来自 docker 镜像之外。
或者也可能是来自上层 aufs 的文件。尝试 rm 它并创建(touch)一个新文件,然后 chown 它。