【问题标题】:Check that file is writable by current user in POSIX shell检查文件是否可由当前用户在 POSIX shell 中写入
【发布时间】:2016-03-15 23:04:16
【问题描述】:

当前用户是$USER。以前我使用:

 if [ -e "$f" ] && [ `stat -c %U "$f"` != $USER ] \
    || [ -e "${f%/*}" ] && [ `stat -c %U "${f%/*}"` != $USER ]; then

检测文件是否归用户所有(如果文件不存在,则检测目录)。

但是文件可以被其他人拥有并且用户仍然可以修改它(组/其他可写)。

如何检查当前用户是否可以通过 POSIX 实用程序(或者如果不可能 - 通过 GNU 扩展)编辑文件?

我需要考虑扩展属性吗?如何处理?

【问题讨论】:

  • 不能'你只是尝试以写模式打开文件,检查打开的返回值然后关闭文件描述符?
  • 我受限于 POSIX 或 GNU 实用程序(命令行),无法编译自定义 C 程序。

标签: posix file-permissions file-exists file-ownership


【解决方案1】:

似乎我忘记了 实用程序。为我感到羞耻!

$ test -w /etc/hostname && echo ok || echo fail
fail
$ [ -w /etc/hostname ] && echo ok || echo fail
fail
$ sudo test -w /etc/hostname && echo ok || echo fail
ok
$ sudo [ -w /etc/hostname ] && echo ok || echo fail
ok

目录也一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2011-05-18
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多