Ubuntu中向/etc/shells添加Xonsh时遭遇权限拒绝问题求助
Ubuntu中向/etc/shells添加Xonsh时遭遇权限拒绝问题求助
嗨,我来帮你搞定这个权限问题!
你遇到的核心问题其实是重定向操作(>>)不受sudo的权限覆盖——你输入的sudo which xonsh >> /etc/shells里,sudo只给which xonsh赋予了root权限,但后面的写入/etc/shells的操作还是用你当前普通用户的身份执行,自然会被系统拒绝。而且/etc/shells是系统关键配置文件,默认的权限机制(甚至可能有AppArmor这类安全工具限制)不允许随便修改它的权限,所以chmod u+x也会失败。
给你几个靠谱的解决办法:
方法一:用sudo tee追加内容(推荐)
tee命令可以在sudo权限下安全地向文件追加内容,不会覆盖原有数据:sudo tee -a /etc/shells <<< "$(which xonsh)"这里
-a是追加模式,<<< "$(which xonsh)"是把which xonsh的输出作为输入传给tee,完美避开重定向的权限坑。方法二:用shell命令包裹整个操作
把包含重定向的整个命令放在sudo启动的shell环境里执行,这样整个流程都用root权限:sudo sh -c 'which xonsh >> /etc/shells'
完成后记得验证一下:执行cat /etc/shells,看看最后一行是不是Xonsh的正确路径(比如/usr/local/bin/xonsh)。确认没问题后,就可以用chsh -s /你的xonsh路径把它设为默认shell,重启终端或者重新登录就生效啦!
备注:内容来源于stack exchange,提问作者Omar Morales Rivera
相关产品推荐
相关产品推荐

