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

关于bash script中的权限切换

  •  
  •   happlebao 2013-05-20 22:16:32 +08:00 4557 次点击
    这是一个创建于 4597 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一些命令需要在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.
    F281M6Dh8DXpD1g2
        3
    F281M6Dh8DXpD1g2  
       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     Solana     829 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 21:00 PVG 05:00 LAX 13:00 JFK 16:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86