执行sudo find . | cpio -o -H newc > ../init.cpio时提示权限拒绝的问题求助
执行sudo find . | cpio -o -H newc > ../init.cpio时提示权限拒绝的问题求助
兄弟,我太懂你碰到的这个糟心问题了!先把你的情况再理清楚:
我运行命令
sudo find . | cpio -o -H newc > ../init.cpio时,返回了:
-bash: ../init.cpio: Permission denied.
我不知道怎么修复,换个目录运行同一个命令就没问题,跟着教程做的但人家视频里完全没报错,查了一些方案也不管用。
其实这个问题的核心特别简单:sudo只给前面的find命令提升了权限,后面的管道、cpio命令,还有最关键的重定向>操作,都是用你当前的普通用户权限执行的!而你当前所在目录的父目录(../),你的普通用户没有写入权限,所以就触发了权限拒绝的报错。
给你几个靠谱的解决办法,你可以挨个试试:
用sudo包裹整个命令,让重定向也在root权限下执行:
把命令改成这样:sudo bash -c "find . | cpio -o -H newc > ../init.cpio"这里用
bash -c把整个命令串当成一个参数传给sudo,这样整个流程都跑在root权限里,自然就能写入父目录了。先给父目录的init.cpio文件赋予你的用户权限:
先手动创建空文件并修改归属:sudo touch ../init.cpio && sudo chown $USER:$USER ../init.cpio之后再运行你原来的命令,这时候因为文件已经属于你了,普通用户就能正常写入了。
直接切换到root用户执行命令:
先输入sudo su切换到root身份,然后直接运行你的原命令:find . | cpio -o -H newc > ../init.cpio完成后输入
exit退出root身份就行。
另外为啥换个目录就好使?因为那个目录的父目录你有写入权限,普通用户就能直接创建文件,所以没报错~
备注:内容来源于stack exchange,提问作者thatkidinvirtual
相关产品推荐
相关产品推荐

