Python: использование SQLite после setuid

Python 2.7.12 (default, Nov 19 2016, 06:48:10)
Type "copyright", "credits" or "license" for more information.

IPython 2.4.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: ls -l
total 8
-rwxrwxrwx 1 root root 6144 Jul  8 18:01 root.db*

In [2]: import os,sqlite3,pwd

In [3]: os.getresuid()
Out[3]: (0, 0, 0)

In [4]: pwd.getpwuid(1001)
Out[4]: pwd.struct_passwd(pw_name='testac', pw_passwd='x', pw_uid=1001, pw_gid=1001, pw_gecos='', pw_dir='/home/testac', pw_shell='')

In [5]: os.seteuid(1001)

In [6]: db = sqlite3.connect('root.db')

In [7]: db.execute("Create table A ( test text )")
---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-7-5236fe81d6c5> in <module>()
----> 1 db.execute("Create table A ( test text )")

OperationalError: unable to open database file

Выше приведен пример моей проблемы.

У меня есть база данных sqlite3, которую каждый может читать и писать. Как видите, мой питон запускается под root. Затем я установил эффективного пользователя обычным пользователем. Затем я открываю базу данных sqlite3. Он скажет, что не удалось открыть базу данных.

Почему я не могу открыть эту базу данных? Благодарю.

0 ответов

Другие вопросы по тегам