V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
happlebao
V2EX  ›  Linux

关于bash script中的权限切换

  •  
  •   happlebao · 2013-05-20 22:16:32 +08:00 · 4228 次点击
    这是一个创建于 4205 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一些命令需要在root下运行,一些需要在普通权限下运行。大家是怎么处理这个问题的?
    我只找到3种方案,都不是很好。
    1.需要root的从standinput读取password
    echo LOGINPASSWD | sudo -S COMMAND HERE
    2.用expect配合
    3.让这个script以root权限运行,脚本内需要普通用户的地方用
    sudo -u User 或者
    sudo bash <<EOF
    whoami
    id
    EOF
    做切换。

    求更好的方法,或者用python调用?求例子。
    11 条回复    1970-01-01 08:00:00 +08:00
    dndx
        1
    dndx  
       2013-05-20 22:17:53 +08:00
    Please Google "setuid"
    halfbloodrock
        2
    halfbloodrock  
       2013-05-20 22:25:44 +08:00
    我不知道我理解的是不是正确,普通用户run 脚本,然后脚本里有一些命令要用root权限。

    我的方法:如果就1,2台机器
    在visudo里配置command alias。然后脚本里写sudo command.
    liprais
        3
    liprais  
       2013-05-20 22:27:45 +08:00
    @halfbloodrock 这种需要输入密码啊....
    halfbloodrock
        4
    halfbloodrock  
       2013-05-20 22:37:56 +08:00
    @liprais 设为NOPASSWROD就可以了。
    happlebao
        5
    happlebao  
    OP
       2013-05-20 22:42:30 +08:00
    @halfbloodrock 20台吧,一半ubuntu,一半os x。我是想拿bash写自动化环境配置脚本。每台机子都手动配的话就太累了...
    little_cup
        6
    little_cup  
       2013-05-21 00:01:13 +08:00
    @dndx 我依稀记得是不能用于脚本的……
    chemzqm
        7
    chemzqm  
       2013-05-21 02:28:29 +08:00
    在脚本里一般情况需要root就是sudo,需要重定向就用sudo sh -c COMMOND
    Ubuntu可修改sudo密码过期时间,命令sudo visudo添加
    Defaults passwd_timeout=30
    设置为30分钟后过期
    运行脚本输入一次当前用户密码即可,或者使用expect
    egen
        8
    egen  
       2013-05-21 11:06:44 +08:00   ❤️ 1
    个人觉得 sudo 跑脚本然后 sudo -u User 的方法好一点
    如果普通权限跑一半遇到 sudo 到 root,需要输入密码是挺烦人的一件事,无人值守方面不大好
    panzhc
        9
    panzhc  
       2013-05-21 17:11:15 +08:00
    把需要root执行权限的命令改成普通用户也可以执行呢?
    chown 0.0 /path/to/file
    chmod u+s /path/to/file
    linchanx
        10
    linchanx  
       2013-05-21 17:34:15 +08:00
    setuid 可以让普通账号执行root账号才能执行的程序
    glancesx
        11
    glancesx  
       2013-05-23 21:05:01 +08:00
    su - xxx -c " command "
    xxx是普通用户
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:58 · PVG 22:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.