加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

sudo, bash, env

发布时间:2020-12-16 01:39:28 所属栏目:安全 来源:网络整理
导读:问题: [email?protected]:~$ sudo echo "ulimit -c unlimited" /etc/profilebash: /etc/profile: Permission denied 分析: 这是因为重定向符号 “” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限, 但是没有让 “” 命令也具有root 权限,所

问题:

[email?protected]:~$ sudo echo "ulimit -c unlimited" >> /etc/profile
bash: /etc/profile:  Permission denied

分析:
这是因为重定向符号 “>>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,
但是没有让 “>>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。
解决:
用sudo执行bash,将其它命令作为bash的参数
方式1

sudo bash
    echo "ulimit -c unlimited" >> /etc/profile
    exit

方式2

sudo bash -c 'echo "ulimit -c unlimited" >> /etc/profile'

注意:
单引号为字面串,双引号为解析串
ref:
[https://www.cnblogs.com/jankz/p/10889734.html]

env

sudo模式的env与用户模式的env不同,以$PATH为例

方案一:

sudo env "PATH=$PATH" command

方案一中的$PATH当前环境变量$PATH
bash会先将变量替换再执行sudo语句。
不替换的方式:双引号改为单引号,则为字面串。

echo 'echo $PATH' | bash
echo 'echo $PATH' | sudo bash

或者

bash -c 'echo $PATH'
sudo bash -c 'echo $PATH'

注意sudo bash -c ‘echo $PATH‘sudo bash -c "echo $PATH"的区别

方案二:

ln设置软链接

方案三:

通过命令visudo修改sudo配置文件 ref: [https://unix.stackexchange.com/questions/83191/how-to-make-sudo-preserve-path]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读