homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Linux: expose the new execveat() syscall
Type: enhancement Stage:
Components: Extension Modules Versions: Python 3.6
process
Status: closed Resolution: later
Dependencies: Superseder:
Assigned To: Nosy List: r.david.murray, socketpair, vstinner
Priority: normal Keywords:

Created on 2015年02月13日 12:32 by vstinner, last changed 2022年04月11日 14:58 by admin. This issue is now closed.

Messages (8)
msg235889 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015年02月13日 12:32
execveat() was added to Linux in kernel 3.19:
http://man7.org/linux/man-pages/man2/execveat.2.html
It may be interesting to expose it in Python.
"The primary aim of adding an execveat syscall is to allow an
implementation of fexecve(3) that does not rely on the /proc
filesystem. The current glibc version of fexecve(3) is implemented
via /proc, which causes problems in sandboxed or otherwise restricted
environments."
http://lwn.net/Articles/600344/ 
msg240188 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015年04月06日 21:36
I'm not more interested to work on this issue, so I just close it. I'm not convinced that there is a real need for it in Python, and it's not obvious how it should be exposed.
Open a new issue or reopen this issue if you want to work the issue.
msg266720 - (view) Author: Марк Коренберг (socketpair) * Date: 2016年05月30日 22:12
It is actual to me due to it's AT_EMPTY_PATH feature (I download script, verify signature, and want to run it)
See also `man 3 fexecve`
Why not to add `dir_fd=None` ? (as in `os.rmdir()` for example).
It should be very small patch, as I think.
Reopen please.
msg266721 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016年05月30日 23:57
You can currently call os.execve with a file pointer. How is that different from adding an execveat with AS_EMPTY_PATH, functionally? I think we don't need to add this syscall, because it is intended to allow more robust implementation of fexecve, and we are already effectvely exposing fexecve. We should be able to assume that glibc will switch to using execveat under the hood, and not worry about it ourselves. If that's not true, then we can revisit this.
msg266734 - (view) Author: Марк Коренберг (socketpair) * Date: 2016年05月31日 05:44
> we are already effectvely exposing fexecve
Did not found neither os.fexecve() nor os.execve() documentation about this. How I can use glibc's fexecve() ?
msg266736 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016年05月31日 06:03
By passing an fd to os.execve. Under the hood it calls fexecve.
msg266737 - (view) Author: Марк Коренберг (socketpair) * Date: 2016年05月31日 06:08
Sorry, but still did not found that in official documentation. Pass fd in place of `path ` ?
https://docs.python.org/3.6/library/os.html#os.execve 
msg266753 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016年05月31日 14:55
Yes, last paragraph of that section. It doesn't mention fexecve explicitly because it doesn't need to, the functionality is what matters.
History
Date User Action Args
2022年04月11日 14:58:12adminsetgithub: 67647
2016年05月31日 14:55:05r.david.murraysetmessages: + msg266753
2016年05月31日 06:08:43socketpairsetmessages: + msg266737
2016年05月31日 06:03:35r.david.murraysetmessages: + msg266736
2016年05月31日 05:44:34socketpairsetmessages: + msg266734
2016年05月30日 23:57:43r.david.murraysetnosy: + r.david.murray
messages: + msg266721
2016年05月30日 22:12:56socketpairsetversions: + Python 3.6, - Python 3.5
nosy: + socketpair

messages: + msg266720

type: enhancement
2015年04月06日 21:36:11vstinnersetstatus: open -> closed
resolution: later
messages: + msg240188
2015年02月13日 12:32:39vstinnercreate

AltStyle によって変換されたページ (->オリジナル) /