【发布时间】:2012-12-15 17:50:18
【问题描述】:
我们可以通过当前进程的uid来测试一个目录是否可写:
if [ -w $directory ] ; then echo 'Eureka!' ; fi
但是任何人都可以建议一种方法来测试一个目录是否可以被某些 other uid 写入?
我的场景是我正在管理一个 MySQL 服务器实例,我想临时更改慢查询日志文件的位置。我可以通过执行 MySQL 命令 SET GLOBAL slow_query_log_file='$new_log_filename' 来做到这一点,然后禁用和启用查询日志记录以使 mysqld 开始使用该文件。
但我希望我的脚本检查mysqld 进程的uid 是否有权创建新的日志文件。所以我想做一些类似(伪代码)的事情:
$ if [ -w-as-mysql-uid `basename $new_log_filename` ] ; then echo 'Eureka!' ; fi
但这当然是一个虚构的测试谓词。
澄清:我想要一个不依赖 su 的解决方案,因为我不能假设我的脚本的用户具有 su 权限。
【问题讨论】:
-
相关 Ruby 问题:stackoverflow.com/questions/13369667/…
-
有趣的是,OS X 上的 Server Admin.app 有一个“权限检查器”,可以将用户拖放到上面,然后选择任何文件,它会显示用户可以和不能的所有文件操作做。但是,不知道它是如何工作的。你会认为这很容易。
-
你真的需要这么通用的解决方案吗?为什么不要求该目录由 mysql 拥有并具有所有者写入权限,然后只检查该特定情况?
-
@Bamar,我正在尝试开发一个 MySQL 社区普遍使用的工具,并不是每个人都以字面用户“mysql”运行 MySQL(即使他们应该这样做)。
标签: bash directory file-permissions