如何取消对tee制作的保护文件的写保护?

有趣的...

我有一个小程序,我想确保它在写保护的文件和未写保护的文件上都可以使用。因此,代替使用echo $text > $fileor echo $text >> $file,我不得不分别使用echo $text | sudo tee $fileecho $text | sudo tee --append $file当我使用时sudo tee,即使更改了权限,只要rm在文件上使用它,它都会提示我:

$ ls
someFile writeProtectedFile
$ rm someFile
$ ls
writeProtectedFile
$ rm writeProtectedFile
rm remove write-protected regular file 'writeProtectedFile'? yes
$ ls

然后,我在网上闲逛,寻找可能解决我的困境的方法。我只能找到两种:不正确的权限或一组更改的权限。我知道权限的大小写是不正确的,因为我可以通过运行轻松更改权限sudo chmod xxx filename,这将导致成功的权限更改。当时我以为文件属性存在问题,所以我lsattr在该文件上运行,它的输出-------------e--与目录中的每个其他文件相同。

更新

我使用的原因是tee回显文本以写入受保护的文件,但作为副作用,它也写入受保护的常规文件...实际上,我的目标是执行类似的操作sudo echo "whatever" >> /etc/someFile,但该操作不起作用,因此我找到了解决方案在echo "whatever" | sudo tee /etc/someFile

英美

当命令tee传递不存在的文件作为参数时,该命令将在将输出写入文件之前创建该文件。通过在该命令前添加前缀sudo,您要求外壳程序以方式运行该tee命令root结果是由创建的文件由tee启动命令:的用户拥有,root因此对于其他用户是只读的。如果您运行ls -l并查看usergroup列,则可以自己查看

$ rm -f writeProtectedFile # Removing the file in case it already exists
$ echo $text | sudo tee writeProtectedFile
yourtext
$ ls -l
total 4
-rw-r--r-- 1 root root 9 22.07.2015 14:26 writeProtectedFile

有几种方法可以克服此问题:

  • 在要求tee写入文件之前,以标准用户身份创建文件tee然后将截断或仅截断--append它,而不会更改其所有权:

    $ touch writeProtectedFile # creates the file as standard user
    $ echo $text | sudo tee writeProtectedFile
    $ rm writeProtectedFile
    
  • 在尝试删除文件之前,请先更改其所有权:

    $ echo $text | sudo tee writeProtectedFile
    $ sudo chown $(whoami) writeProtectedFile # `whoami` returns the current user name
    $ rm writeProtectedFile
    
  • 使用以下命令告诉rm忽略文件受写保护的事实-f, --force

    $ echo $text | sudo tee writeProtectedFile
    $ rm --force writeProtectedFile
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查文件夹的写保护?

来自分类Dev

如何写保护USB密钥?

来自分类Dev

如何使Pendrive处于写保护状态?

来自分类Dev

如何进行写保护的Ubuntu安装?

来自分类Dev

如何对SD卡进行写保护?

来自分类Dev

USB关闭写保护

来自分类Dev

神秘的内存写保护

来自分类Dev

从USB删除写保护

来自分类Dev

USB关闭写保护

来自分类Dev

写保护无法关闭

来自分类Dev

如何在写保护模式下在Excel 365(应用程序)中打开Excel文件?

来自分类Dev

在Docker内部创建的文件在主机上受写保护

来自分类Dev

我可以使用QFile截断写保护的文件吗?

来自分类Dev

在Docker内部创建的文件在主机上受写保护

来自分类Dev

如何取消保护root拥有的文件?

来自分类Dev

如何取消保护root拥有的文件?

来自分类Dev

如何格式化写保护的SD卡

来自分类Dev

如何使用diskpart在Win 7中关闭写保护?

来自分类Dev

如何格式化写保护的Sandisk PenDrive

来自分类Dev

在配置中如何突然使磁盘受到写保护是读/写

来自分类Dev

如何删除闪存驱动器的写保护?

来自分类Dev

如何在Windows中编写保护性MBR?

来自分类Dev

如何格式化写保护的DVD RW

来自分类Dev

共享库的内存写保护

来自分类Dev

USB强制关闭写保护

来自分类Dev

共享库的内存写保护

来自分类Dev

CPP类写保护成员

来自分类Dev

USB当前写保护状态

来自分类Dev

写保护类作用域