linux文件组
avc: denied { dac_read_search } for capability=2 scontext=u:r:xxx:s0
avc: denied { dac_override } for capability=1 scontext=u:r:xxx:s0 tcontext=u:r:xxx:s0 tclass=capability permissive=0
1、当报这种dac的 avc selinux权限是一般是因为不在同一个用户组导致的无法访问。
2、我们可以查看需要访问的文件的用户组:
ls -lZ
或者有时候不知道需要在哪个组里才能访问我们需要的文件时,我们可以查看当前可以访问该文件的进程所在的用户组:
adb shell ps -AlZ | grep -Ei "xxx"
u:r:xxx_app:s0 5 S 1000 7867 1610 0 19 0 - 3727967 0 ? 00:00:00 android.xxxtest
首先查找进程的id号,这里是7867
adb shell
cat proc/7867/status
输入 上面的命令查看 android.xxxtest 进程的信息
Name: android.xxxtest
Umask: 0077
State: S (sleeping)
Tgid: 7867
Ngid: 0
Pid: 7867
PPid: 1610
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 64
Groups: 0 1000 1000 1003 1004 1007 1065 1077 2001 2901 3001 3002 3003 3007 9997
VmPeak: 15187360 kB
VmSize: 14911868 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 78300 kB
VmRSS: 68440 kB
RssAnon: 2576 kB
RssFile: 65468 kB
RssShmem: 396 kB
VmData: 667424 kB
VmStk: 8192 kB
VmExe: 28 kB
VmLib: 147056 kB
VmPTE: 940 kB
VmSwap: 36704 kB
CoreDumping: 0
THP_enabled: 0
Threads: 17
SigQ: 3/12941
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000080001204
SigIgn: 0000000000000001
SigCgt: 0000006e400084f8
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000000000
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 2
Speculation_Store_Bypass: thread vulnerable
Cpus_allowed: 3f
Cpus_allowed_list: 0-5
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 39
nonvoluntary_ctxt_switches: 45
这里可以看到就是我们需要的用户组信息:
Groups: 0 1000 1000 1003 1004 1007 1065 1077 2001 2901 3001 3002 3003 3007 9997
通过命令查看对应的数字代表的具体用户组:
id 9997
uid=9997(everybody) gid=9997(everybody) groups=9997(everybody) context=u:r:su:s0
可以看到9997 是everybody 组
3、给我们自己的进程添加组:
在init.xxx.rc里
service lala /vendor/bin/lala
class core
user root
socket lala stream 0666 root root
seclabel u:r:lala:s0
group root diag everybody external_storage sdcard_rw sdcard_r media_rw reserved_disk graphics system oem_2901
将我们的service 在group中添加需要的组即可
通过”ps -e” 可以看到,Android系统中存在很多User
当前运行的进程的UID很多样,root,system,radio,u0_a*等等,
其中前缀为u0_a代表的是APP进程的UID
版权声明:本文为qq_34250794原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。