现在的位置: 首页 > 综合 > 正文

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

2013年10月01日 ⁄ 综合 ⁄ 共 7482字 ⁄ 字号 评论关闭
原贴:http://linux.chinaunix.net/bbs/viewthread.php?tid=901336


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




首页 » CU论坛 »
Linux

» 汇总贴列表
» 系统管理 »

 



[打印]
[订阅]
[收藏]
[本帖文本页]
[推荐此主题给朋友,立即获积分]

 
[已解决]
本主题悬赏 可用积分 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]

抱歉!评论已关闭.