Linux 设置粘滞位时无法从根用户写入sqlite
我在文件夹中有一个sqlite数据库,权限中有一个Linux 设置粘滞位时无法从根用户写入sqlite,linux,sqlite,ubuntu,Linux,Sqlite,Ubuntu,我在文件夹中有一个sqlite数据库,权限中有一个粘性位。文件夹由root用户打开。db文件不属于任何根用户,并且具有完全权限: ibse@ibse-VirtualBox:/var/internal$ ll total 32 drwxrwxrwt 2 root root 4096 кві 16 12:00 ./ drwxr-xr-x 3 root root 4096 кві 16 10:47 ../ -rwxrwxrwx 1 ibse ibse 21504 кві 16 12:00 mydb
粘性位。文件夹由root用户打开。db文件不属于任何根用户,并且具有完全权限:
ibse@ibse-VirtualBox:/var/internal$ ll
total 32
drwxrwxrwt 2 root root 4096 кві 16 12:00 ./
drwxr-xr-x 3 root root 4096 кві 16 10:47 ../
-rwxrwxrwx 1 ibse ibse 21504 кві 16 12:00 mydb.dat*
当我尝试从root
用户插入数据库时,数据库拒绝尝试写入只读数据库
:
ibse@ibse-VirtualBox:/var/internal$ sudo sqlite3 mydb.dat
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> INSERT INTO DATA (sent) VALUES (1);
Error: attempt to write a readonly database
sqlite>
但是,当我从包含数据库文件的文件夹中删除粘性位时,我可以将以下内容插入其中:
ibse@ibse-VirtualBox:/var/internal$ sudo chmod -t .
ibse@ibse-VirtualBox:/var/internal$ sudo sqlite3 mydb.dat
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> INSERT INTO DATA (sent) VALUES (1);
sqlite>
为什么会这样?如果我正确理解sticky bit
概念,则root
用户可以管理文件夹中的所有文件,即使设置了sticky,我现在也找不到源文件-但是如果内存足够,则DB文件和附带文件夹都需要对尝试更改DB的用户具有写入权限。因此,也许可以包括内部/?@BAerts权限的屏幕截图,我在帖子的一开始就提供了有关internal/
权限的信息。如果没有完全理解这一点,我深表歉意<代码>内部/
具有DRWXRWT 2根根目录4096іі16 12:00
权限我不好-你是对的。。。如果您执行与root不同的测试(即取消sudo),会发生什么情况?如果确保文件夹和文件的所有者都是root或ibse(chown),会发生什么情况?我之所以这么问是因为这篇文章——while说只有目录所有者才能删除tempdb文件