相关疑难解决方法(0)

Bash测试目录是否可由给定的UID写入?

我们可以测试目录是否可由当前进程的uid写入:

if [ -w $directory ] ; then echo 'Eureka!' ; fi
Run Code Online (Sandbox Code Playgroud)

但是,有人可以建议一种方法来测试目录是否可由其他 uid 写入?

我的方案是我正在管理MySQL Server实例,我想暂时更改慢查询日志文件的位置.我可以通过执行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
Run Code Online (Sandbox Code Playgroud)

但当然这是一个想象的测试谓词.

澄清: 我想要一个不依赖的解决方案,su因为我无法假设我的脚本用户具有su特权.

directory bash file-permissions

45
推荐指数
4
解决办法
5万
查看次数

Nodejs文件权限

在Node中,该fs.stat方法返回一个fs.Stats对象,我可以通过该fs.Stats.mode属性获取文件权限.

以下是来自节点和shell的相同目录的实际输出:

node  shell
17407 d rwx rwx rwt
16877 d rwx r-x r-x
16749 d r-x r-x r-x
16832 d rwx --- ---
Run Code Online (Sandbox Code Playgroud)

我需要知道如何解析fs.Stats.mode数字以获得权限.

回答

数字是八进制数字系统,转换为十进制后如下所示:

17407 41777 d rwx rwx rwt
16877 40755 d rwx r-x r-x
16749 40555 d r-x r-x r-x
16832 40777 d rwx --- ---
Run Code Online (Sandbox Code Playgroud)

从八进制到十进制的转换是这样的:

parseInt(stat.mode.toString(8), 10)
Run Code Online (Sandbox Code Playgroud)

关于linux中文件权限的精彩教程 - https://www.linux.com/learn/understanding-linux-file-permissions

file-permissions file node.js

20
推荐指数
2
解决办法
2万
查看次数

标签 统计

file-permissions ×2

bash ×1

directory ×1

file ×1

node.js ×1