我必須使用給定的用戶名執行此命令;撲朔迷離$su devrim -c "touch miki"我想,首先我需要從用戶名獲取uid,并在執行ForkExec之前使用setuid。你可以建議嗎?我該怎么做呢 ?(ps:我沒有uid,只有用戶名)func exec(cmd *Command, async bool) os.Error { parts := strings.Fields(cmd.Command) command := parts[0] // cmd.Su holds the username "root" or "myUser" pid, err := os.ForkExec(command, parts, os.Environ(), "", []*os.File{nil, cmd.Stdout, cmd.Stderr}) cmd.Pid = pid if !async { os.Wait(pid, 0) } return nil}編輯:由于該sysuser的東西不起作用,我看到它只是解析/ etc / passwd,所以我決定自己做:func getUid(su string) int{ passwd,_ := os.Open("/etc/passwd", os.O_RDONLY , 0600) reader := bufio.NewReader(passwd) for { line,err := reader.ReadString('\n') if err != nil { println(err.String()) break } parsed := strings.Split(line,":",4) if parsed[0] == su { value,_ := strconv.Atoi(parsed[2]) return value } } return -1}我不確定所有/ etc / passwd是否在* nix上都相同,我們使用debian和ubuntu,請謹慎進行。
- 1 回答
- 0 關注
- 337 瀏覽
添加回答
舉報
0/150
提交
取消