问题描述
root进程调sem_open(XXX, O_CREAT, 0666, 1)
创建信号量后,非root进程使用sem_open
打开同一个信号量失败,报Permission Denied
错
原因分析
非root进程调用sem_open
, 以O_CREAT
方式打开信号量,需要同时有对该信号量文件的读权限 + 写权限。
ll /dev/shm/sem.semname
查看信号量文件权限,发现权限为0644,缺少其他用户写权限。这个权限与sem_open中指定的权限值0666不一致。