首页 文章

尝试使用sudo将文件追加到root拥有的文件时,权限被拒绝[关闭]

提问于
浏览
42

当我尝试使用sudo将文件中的数据附加到另一个文件时,这是导致“权限被拒绝”的shell命令:

sudo cat add_file >> /etc/file

/etc/file 的文件归 root (即我)所有,其权限为 rw-r--r-- . 我是否应该暂时成为 root 才能使其正常工作或 sudo 是否有解决方法?

6 回答

  • 1

    运行 bashsudo

    $ sudo bash -c "cat add_file >> /etc/file"
    
    $ whoami;sudo bash -c "whoami";whoami
    iiSeymour
    root
    iiSeymour
    
  • 62

    尝试这样做:

    sudo tee -a /etc/file < add_file
    

    它比运行bash或 sh -c command

  • 5

    一个有趣的可能性是使用 ed (标准编辑器):

    sudo ed -s /etc/file <<< $'r add_file\nwq'
    

    我知道我不会因为这个美妙的答案而被投票,但我想把它包含在这里(因为它很有趣) . 完成!

  • 9

    您正在尝试将命令 sudo cat add_file 的结果写入文件/ etc / file . 显然你没有这个权利 .

    man sudo 给出了这个例子:

    在/ home分区中创建目录的用法列表 . 注意
    这会在子shell中运行命令来生成cd和文件
    重定向工作 .

    $ sudo sh -c“cd / home; du -s * | sort -rn> USAGE”

    所以你应该尝试:

    sudo sh -c "cat add_file >> /etc/file"

  • 25

    类似的方法@gniourf_gniourf回答,但使用 ex

    sudo ex +"r in.txt" -cwq out.txt
    

    这相当于 vi / vim Ex-mode( -e ) .

    这个就地编辑示例是简单,安全和方便的方法,因为它不在shell解决方法中使用任何shell管道,FIFO或shell .

    要提高脚本编写性能,请考虑使用静默模式( -s ) .

  • -2

    尝试

    sudo bash -c 'cat add_file >> /etc/file'
    

    要么

    cat add_file | sudo tee -a /etc/file > /dev/null
    

相关问题