sudo: sorry, you must have a tty to run sudo

原贴:http://linux.chinaunix.net/bbs/viewthread.php?tid=901336


急救!!cron 定制任务报错::sudo: sorry, you must have a tty to run sudo

首页 » CU论坛 » Linux » 汇总贴列表 » 系统管理 »
  •  

  • <script type="text/javascript"> function fastreply(subject) { if($('postform')) { $('postform').subject.value = subject; $('postform').message.focus(); } } </script>
    [打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
      [已解决] 本主题悬赏 可用积分 32  
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    1楼 发表于 2007-6-19 11:00 
    32分是我所有的财产了..

    [Abel@localhost ~]$ crontab -l
    */1 * * * * sudo /usr/sbin/lvscan 2>>/home/Abel/test
    [Abel@localhost ~]$ cat ~/test
    sudo: sorry, you must have a tty to run sudo
    sudo: sorry, you must have a tty to run sudo
    提示sudo要一个tty才可以运行.

    解决方法!!!!
         1. 写个脚本..把上述任务放进去.并在将本中创建tty..............................ok....怎么创建???麻烦高手..透露下..
         2. 用suid or sgid代替..sudo..但这样不安全.赋予权限太大..
    e.g
    A...查看lvm在/usr/sbin下的符号链接..
    [Abel@localhost testdir]$ symlinks -v /usr/sbin/ | grep lvm
    relative: /usr/sbin/vgck -> lvm
    relative: /usr/sbin/vgchange -> lvm
    relative: /usr/sbin/vgconvert -> lvm
    relative: /usr/sbin/lvmdiskscan -> lvm
    relative: /usr/sbin/lvresize -> lvm
    relative: /usr/sbin/lvs -> lvm
    relative: /usr/sbin/lvconvert -> lvm
    relative: /usr/sbin/pvs -> lvm
    relative: /usr/sbin/pvdisplay -> lvm
    relative: /usr/sbin/vgmerge -> lvm
    relative: /usr/sbin/lvremove -> lvm
    relative: /usr/sbin/lvmchange -> lvm
    relative: /usr/sbin/pvremove -> lvm
    relative: /usr/sbin/vgs -> lvm
    relative: /usr/sbin/vgextend -> lvm
    relative: /usr/sbin/lvmsar -> lvm
    relative: /usr/sbin/lvmsadc -> lvm
    relative: /usr/sbin/vgremove -> lvm
    relative: /usr/sbin/vgcfgrestore -> lvm
    relative: /usr/sbin/vgimport -> lvm
    relative: /usr/sbin/vgreduce -> lvm
    relative: /usr/sbin/lvchange -> lvm
    relative: /usr/sbin/vgmknodes -> lvm
    relative: /usr/sbin/vgcreate -> lvm
    relative: /usr/sbin/pvchange -> lvm
    relative: /usr/sbin/pvcreate -> lvm
    relative: /usr/sbin/lvscan -> lvm
    relative: /usr/sbin/lvreduce -> lvm
    relative: /usr/sbin/lvcreate -> lvm
    relative: /usr/sbin/pvmove -> lvm
    relative: /usr/sbin/vgexport -> lvm
    relative: /usr/sbin/vgsplit -> lvm
    relative: /usr/sbin/lvextend -> lvm
    relative: /usr/sbin/vgrename -> lvm
    relative: /usr/sbin/pvscan -> lvm
    relative: /usr/sbin/vgdisplay -> lvm
    relative: /usr/sbin/lvrename -> lvm
    relative: /usr/sbin/lvdisplay -> lvm
    relative: /usr/sbin/vgscan -> lvm
    relative: /usr/sbin/vgcfgbackup -> lvm
    relative: /usr/sbin/pvresize -> lvm

    B...如果我对lvscan赋予suid..因为lvscan是lvm的符号链接,所以s位赋给了lvm
    [Abel@localhost testdir]$ sudo chmod u+s /usr/sbin/lvscan
    Password:
    [Abel@localhost testdir]$ ll /usr/sbin/lvm
    -r-sr-xr-x 1 root root 589952 03-20 05:54 /usr/sbin/lvm
    C....但这样....所有用户都拥有lvm.......的所有权限...所以不行..
       3...还有其他的方法吗.......................


    Thanks

    [ 本帖最后由 newsecond 于 2007-6-19 13:25 编辑 ]



    您对本贴的看法:鲜花[0] 臭蛋[0]
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    free_man_008
    骑士




    UID:461542
    注册:2006-9-4
    最后登录: 2008-07-08
    帖子: 59
    精华:0

    可用积分:129 (白手起家)
    信誉积分:100
    专家积分:138 (本版:60)
    空间积分:0
    推广积分:0

    状态:...保密...

    [资料] [站内短信] [Blog]


         最佳答案 


    QUOTE:
    原帖由 newsecond 于 2007-6-19 22:58 发表于 5楼  
    这是我/etc/sudoers中的配置
    Cmnd_Alias BACK_LV=/usr/sbin/lvscan,/usr/sbin/lvremove,/usr/sbin/lvcreate
    Abel  localhost=ABEL,NOPASSWD: BACK_LV

    没错,当启用

    Defaults    requiretty

    时,会需要一个终端。但是去掉该选项(requiretty),在执行sudo命令时,就不需要终端,这完全可以满足你的需求。如果你非要终端,那就不明白你的目的了。



    您对本贴的看法:鲜花[0] 臭蛋[0]

    __________________________________

    给你推荐一个视频教程。访问 科卡在线 了解详情,这套视频对我帮助很大。希望对你也有帮助。
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    free_man_008
    骑士




    UID:461542
    注册:2006-9-4
    最后登录: 2008-07-08
    帖子: 59
    精华:0

    可用积分:129 (白手起家)
    信誉积分:100
    专家积分:138 (本版:60)
    空间积分:0
    推广积分:0

    状态:...保密...

    [资料] [站内短信] [Blog]


    3楼 发表于 2007-6-19 15:19 
    用sudo是最好的办法,针对你的问题,在/etc/sudoers文件中做如下修改:
    (1)注释掉:Defaults    requiretty所在的行。即:

    #Defaults    requiretty

    (2)你的允许执行lvscan命令的内容类似下面(即加上NOPASSWD,在使用sudo执行该命令时可以不用密码):

    bearzhang       ALL=NOPASSWD:/usr/sbin/lvscan,/sbin/sudo

    如果只允许在某台主机上使用该命令则将ALL换成允许的主机即可,例如:

    bearzhang       www.koorka.com=NOPASSWD:/usr/sbin/lvscan,/sbin/sudo

    [ 本帖最后由 free_man_008 于 2007-6-19 15:21 编辑 ]



    您对本贴的看法:鲜花[0] 臭蛋[0]

    __________________________________

    给你推荐一个视频教程。访问 科卡在线 了解详情,这套视频对我帮助很大。希望对你也有帮助。
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    jackeyj   帅哥
    圣骑士




    UID:318164
    注册:2005-9-27
    最后登录: 2008-11-13
    帖子: 112
    精华:0

    可用积分:125 (白手起家)
    信誉积分:100
    专家积分:0 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    4楼 发表于 2007-6-19 19:01 
    楼上的应该可以。



    您对本贴的看法:鲜花[0] 臭蛋[0]

    __________________________________

    财富大教堂www.StockThink.cn
    当当购书www.dangdangwanggoushu.net
    卓越亚马逊 www.zhuoyueyamxun1.cn


    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    5楼 发表于 2007-6-19 22:49 
    先谢谢free_man_008 ......谢谢你的回答...
    是我没讲清楚..不好意思.


    我现在是想通过cron 执行我一个脚本或者命令,为了安全考虑.我使用了sudo...........
             但sudo 在cron执行时候..提示需要一个tty...................怎么在脚本中创建一个tty????

      或者使用其他方法代替...

    [ 本帖最后由 newsecond 于 2007-6-19 22:53 编辑 ]



    您对本贴的看法:鲜花[0] 臭蛋[0]
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    6楼 发表于 2007-6-19 22:58 
    这是我/etc/sudoers中的配置
    Cmnd_Alias BACK_LV=/usr/sbin/lvscan,/usr/sbin/lvremove,/usr/sbin/lvcreate
    Abel  localhost=ABEL,NOPASSWD: BACK_LV



    您对本贴的看法:鲜花[0] 臭蛋[0]
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    7楼 发表于 2007-6-20 09:43 
    谢谢 free_man_008 了........在请教下..怎么在脚本中创建个tty.????????



    您对本贴的看法:鲜花[0] 臭蛋[0]
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    8楼 发表于 2007-6-20 10:05 
    在问下.....
    前提::::::::关闭#Defaults    requiretty
    把错误,和标准输出一起输入到一个文件
    运行时...sudo /usr/sbin/lvscan 2>>/home/Abel/test 并不会把错误和标准输出输入到该文件当中.
    只能sudo /usr/sbin/lvscan >> /home/Abel/test.....为什么......       错误和标准输出 不能一起输入到一个文件当中.....
    麻烦 free_man_008 。。。
    我也去查查..



    您对本贴的看法:鲜花[0] 臭蛋[0]
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    free_man_008
    骑士




    UID:461542
    注册:2006-9-4
    最后登录: 2008-07-08
    帖子: 59
    精华:0

    可用积分:129 (白手起家)
    信誉积分:100
    专家积分:138 (本版:60)
    空间积分:0
    推广积分:0

    状态:...保密...

    [资料] [站内短信] [Blog]


    9楼 发表于 2007-6-20 10:25 


    QUOTE:
    原帖由 newsecond 于 2007-6-20 10:05 发表于 8楼  
    在问下.....
    前提::::::::关闭#Defaults    requiretty
    把错误,和标准输出一起输入到一个文件
    运行时...sudo /usr/sbin/lvscan 2>>/home/Abel/test 并不会把错误和标准输出输入到该文件当中.
    只能su ...

    呵呵,共同进步。

    如果要使用tty,必然需要一个终端窗口。
    而服务进程都是在后台执行的,所以没有必要让输出内容输出到窗口,如果需要查看或保存后台进程输出的内容,可以使用重定向到一个文件中。也就是你所使用的方法。

    需要错误输出和标准输出都重定向,应该这样:


    */1     *       *       *       *       sudo /usr/sbin/lvscan >> /home/Abel/test 2>&1




    您对本贴的看法:鲜花[0] 臭蛋[0]

    __________________________________

    给你推荐一个视频教程。访问 科卡在线 了解详情,这套视频对我帮助很大。希望对你也有帮助。
    积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
    newsecond
    圣骑士




    UID:572548
    注册:2007-6-6
    最后登录: 2009-01-06
    帖子: 146
    精华:0

    可用积分:84 (白手起家)
    信誉积分:105
    专家积分:10 (本版:0)
    空间积分:0
    推广积分:0

    状态: ...离线...

    [资料] [站内短信] [Blog]


    10楼 发表于 2007-6-20 17:01 
    thanks  free_man_008



    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 1
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值