相关疑难解决方法(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万
查看次数

为什么我需要setuid-root C程序中的setuid(0)来调用带有system()的管理程序?

我不得不为某人做一个肮脏的Linux黑客攻击,这样他们就可以cupsenable printername在非root用户的情况下使用shell命令启动打印机.我不希望他们能够以cupsenableroot 身份使用整个语法,所以我只写了一个C包装器来清理输入argv[1]和调用system("cupsenable sanitizedprintername").

我使程序setuid root,但即便如此,cupsenable失败了"权限被拒绝".然后我setuid(0)在之前插入了一个电话system(),并且看,它起作用了.

忽视有更好的方法让用户控制打印机的问题.可能有更好的方法.我感兴趣的是chmod u+svs setuid(0)vs. 的错综复杂system().为什么这样做?

c unix setuid privilege-elevation

11
推荐指数
1
解决办法
7778
查看次数