我希望对某些目录具有编辑权限,但我不想意外获得rm
它。我rm -rf *
之前不小心跑到了错误的目录中,并且想安全地证明这一点。
我知道我可以将其设置为只读,但我仍然需要能够编辑它,只是不能轻易删除整个目录。
答案1
最好的解决方案可能是设置粘滞位并确保该文件夹由其他用户拥有(root 可能是一个不错的选择),但可由您的用户编辑。
答案2
您可以更改文件属性您想要防止rm
(删除)的文件的 s(标志)。取一个名为testfile
;的文件也许您想复制一个实际文件来创建testfile
并进行试验;例如
$ cp realfile testfile
$ ls -l testfile
-rw-r--r-- 1 pi pi 14 Oct 17 07:10 testfile
$
设置附加属性在testfile
。此模式允许您添加(附加)数据testfile
(但不能删除(rm
),并且不更改文件中的任何现有数据):
$ sudo chattr =a testfile
$ ls -l testfile
-rw-r--r-- 1 pi pi 14 Oct 17 07:10 testfile
# note testfile permissions unchanged
# try to delete (rm)...
$ rm testfile
rm: cannot remove 'testfile': Operation not permitted
$ sudo rm testfile
rm: cannot remove 'testfile': Operation not permitted
如果你testfile
在编辑器中打开,你会发现可以对其进行更改(添加、删除),但无法保存在testfile
文件名下。但是,我们可以将编辑器放入附加模式,进行我们想要的任何添加,然后将其保存在该testfile
名称下。
以nano
编辑器为例,打开testfile
并添加几行文本:
使用
ctrl-X
启动退出,然后使用“Y”确认应保存文件。当出现提示时,从键盘
File Name to Write: testfile
输入选项(可能是、 或,具体取决于您的键盘,但请参阅 man nano 以获得明确的指导)。M_a
ctrl-a
esc-a
输入正确的键盘序列后,提示符将更改为 FROM:
File Name to Write: testfile
TO:File Name to Append to: testfile
。按该enter
键应该成功完成追加操作。确认成功附加 w/
cat testfile
- 或其他到删除追加属性
$ sudo chattr -a testfile
$ rm testfile
$
# testfile is deleted as its immunity is gone :)
#
# of course the file can also be "fully edited" upon removal of the append attribute;
# just make your edits & then restore the append attribute, or use the -i attribute
请参阅man chattr
参考资料 选项和详细信息。