su: setgid failed: Operation not permitted error in aosp

Viewed 728

aosp version android-8.1.0_r18 phone nexus5x eng system My app is system signature image

There is no problem in the shell

# adb shell
# getenforce selinux status is disabled
Permissive
# su system
$ su

no anything error

permission description of su

-rwsrwsrwx 1 root shell 11080 2021-06-07 17:14 /system/xbin/su

and i modified su.cpp

    if (current_uid != AID_ROOT && current_uid != AID_SHELL && current_uid != AID_SYSTEM) error(1, 0, "not allowed");

app code

process = Runtime.getRuntime().exec("su");
                BufferedReader resultReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
                result = new StringBuffer();
                error = new StringBuffer();
                DataOutputStream os = new DataOutputStream(process.getOutputStream());
                process.waitFor();
                String line;
                while ((line = resultReader.readLine()) != null) {
                    line += "\n";
                    result.append(line);
                    Log.d("AC", line);
                }

                resultReader.close();

                while ((line = errorReader.readLine()) != null) {
                    line += "\n";
                    error.append(line);
                    Log.e("AC", "exec err:" + line);
                }

i get su: setgid failed: Operation not permitted err

1 Answers

@Yong i set cap_setgid capability of su file, run app i get java.io.IOException: Cannot run program "su": error=1, Operation not permitted

bullhead:/ # getcap /system/xbin/su                                                                                                                                                                        
/system/xbin/su = cap_setgid+eip
bullhead:/ # 

Related