- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下 bash 脚本:
echo "$(id -u)"
mkdir test
我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过subprocess.check_output
调用脚本时该脚本按预期工作并创建一个属于我的文件夹。但是,当我使用 sudo 启动 python 然后使用 os.setegid(1000); os.setuid(1000)
,脚本输出 0 并且文件夹“test”归 root 所有。当我明白时echo "$(id -u)"
可能是期望的行为,我不明白为什么这个文件夹由root拥有。不应该os.seteuid()
函数可以防止这种情况发生吗?
我的确切电话是:
>>> os.setegid(1000)
>>> os.seteuid(1000)
>>> subprocess.check_output(["/.script.sh"])
这会导致文件夹“test”归 root 所有。这是期望的行为吗?如果是的话,有什么方法可以以普通用户身份启动脚本,同时仍然能够返回 python 脚本中的 root 权限(即不设置“真实”uid?)
最佳答案
setegid
仅设置current process的有效组ID 。与 seteuid 相同.
check_output
生成一个新进程,该进程显然仍以 root 身份运行。如果您尝试创建文件夹using python,您可能会更幸运。而不是花钱去做这件事,但我想这是一个简化的例子,所以可能不合适。是否可以以预期用户的身份运行 python 脚本?如果没有,你可能需要做这样的事情;
subprocess.check_output(["sudo", "-uexpected_user", "./script.sh"])
关于python - subprocess.check_output 忽略 euid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47067013/
我正在尝试解决这个问题: 2014-04-07 14:00:58,628 srv proftpd[10143] srv (pfsense.localdomain[192.168.0.1]): FTP
我有以下代码片段。 char *const parmList[] = {"sh", "-c", "whoami", NULL}; if(geteuid() == 0) { seteuid(ato
我有以下 bash 脚本: echo "$(id -u)" mkdir test 我自己的用户id是1000。现在,当我在没有root权限的情况下运行python3.5并通过subprocess.ch
EUID 与 UID 不同。脚本中在什么上下文中使用了这两个? 我试图通过 echo "UID is $UID and EUID is $EUID" 获取值,但只有空格作为输出。我的机器运行 Ubun
我查看了我的一些系统日志及其关于适用于随机有效用户 ID 和组 ID 的错误的声明。例如: Jan 31 13:20:48 server exim[24551]: 2016-01-31 13:20:4
fork() 操作子进程从父进程继承属性真实有效的用户 Id,当执行 exec() 时它的行为如何? 最佳答案 Exec 不会改变它们中的任何一个。来自 linux 手册: The exec() fa
这个示例 suid 程序 #include #include #include #include void main() { int ret; printf("uid=%d, euid=%d\
如果我知道进程的 pid,如何找到进程的 euid我试过我使用以下方法获取进程 ID: ps -f -u user1 然后我用 grep pid 尝试了 ps aux , ps -ef 但看不到 eu
我想知道 Linux 内核在哪里保存“ruid”和“euid”。 以下是我对他们的了解。 当用户运行一个文件并且该文件变成一个进程时,该进程会获得 ruid 和 euid。 如果文件已经设置为使用se
如果我在脚本中将我的 shell 指定为/bin/bash,则 root 的 EUID 为 0。如果我不这样做,并且脚本在我的默认 shell(也是/bin/bash)中运行,则 root 的 EUI
我被分配到 Write a C program that prints the following identifiers PID, PPID, SID, PGID, UID, EUID. 作业接着问
上下文:我正在获取当前的 Ruby 进程 ID。 Process.pid #=> 95291 Process.ppid #=> 95201 Process.uid #=> 501 Process.
如LDD3第6章p175所示,我们可以通过current->uid获取当前进程的UID和EUID和 current->euid . 但是struct task_struct的定义Linux Kerne
我正在尝试使用 TestCafe 在 CircleCi 上运行浏览器测试。我已经关注了这个documentation 。主要问题是chrome浏览器打不开。 CircleCi 能够成功下载镜像,因为
我是一名优秀的程序员,十分优秀!