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

bash – 使用su模拟sudo的行为

发布时间:2020-12-15 21:10:53 所属栏目:安全 来源:网络整理
导读:我正在尝试在su周围写一个包装器使它更像sudo,所以su_wrapper foo bar baz == su -c“foo bar baz”. 但是,我不确定如何解决这个问题.我想出了这个: su_wrapper (){ su -c "$@"} 但是,在上面,只有一个参数可以存在;这失败了多个参数(因为su将它们视为自己的
我正在尝试在su周围写一个包装器使它更像sudo,所以su_wrapper foo bar baz == su -c“foo bar baz”.

但是,我不确定如何解决这个问题.我想出了这个:

su_wrapper ()
{
  su -c "$@"
}

但是,在上面,只有一个参数可以存在;这失败了多个参数(因为su将它们视为自己的参数).

还有另一个问题:由于参数是通过shell传递的,我认为我必须明确指定shell以避免其他问题.也许我想做的事情可以用伪bash(!)表示为su -c’bash -c“$@”’.

那么,我怎么能让它接受多个参数呢?

解决方法

使用printf“%q”来转义参数,以便它们可以用作函数的字符串输入:

su_wrapper() {
    su -s /bin/bash -c "$(printf "%q " "$@")"
}

与$*不同,即使参数包含特殊字符和空格,这也适用.

(编辑:李大同)

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

    推荐文章
      热点阅读