回答編集履歴

1

forkのサンプルコード追加

2020/02/27 13:05

投稿

katsuko
katsuko

スコア3591

test CHANGED
@@ -5,3 +5,57 @@
5
5
  なお、(わかっているかもしれませんが)ユーザを変えられるのはスーパーユーザのみです。
6
6
 
7
7
  sudoで起動しているので`os.setuid`で他のユーザに切り替わる事ができますが、切り替わった後にrootに戻る事はできませんので、もしその必要があればプロセスをforkして処理しなければならないかもしれません。(試してないので出来るかどうかはわかりません)
8
+
9
+
10
+
11
+ ---
12
+
13
+ チャチャッと確認できるのでやってみましたが、大丈夫そうですね。
14
+
15
+
16
+
17
+ ```python
18
+
19
+ # coding: utf-8
20
+
21
+ # hoge.py
22
+
23
+ import os, sys
24
+
25
+
26
+
27
+ print('0: uid %d.' % os.getuid())
28
+
29
+ pid = os.fork()
30
+
31
+ if pid == 0:
32
+
33
+ os.setuid(1000)
34
+
35
+ print('1: uid %d.' % os.getuid())
36
+
37
+ sys.exit(0)
38
+
39
+ os.wait()
40
+
41
+ print('2: uid %d.' % os.getuid())
42
+
43
+
44
+
45
+ ```
46
+
47
+
48
+
49
+ ```
50
+
51
+ $ sudo python3 hoge.py
52
+
53
+ 0: uid 0.
54
+
55
+ 1: uid 1000.
56
+
57
+ 2: uid 0.
58
+
59
+ $
60
+
61
+ ```