Python:在setuid之后使用SQLite

时间:2017-07-09 03:32:59

标签: 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数据库,每个人都可以读写。 如您所见,我的python在root下运行。然后我将有效用户设置为普通用户。然后我打开sqlite3数据库。它会说无法打开数据库。

为什么我无法打开该数据库?谢谢。

0 个答案:

没有答案