我创build了一个testing用户,并想限制这个“testing”用户通过visudo只运行下面的命令。 echo "show stat" | socat stdio /var/run/haproxy.sock visudo命令 test ALL=(root)NOPASSWD:/usr/bin/socat stdio /var/run/haproxy.sock ls -lat /var/run/haproxy.sock srwxr-xr-x 1 munin haproxy 0 May 22 22:32 /var/run/haproxy.sock 我运行了下面的命令 test#sudo echo "show stat" | socat stdio /var/run/haproxy.sock 错误消息 2013/05/22 23:13:14 socat[21289] E connect(3, AF=1 "/var/run/haproxy.sock", 23): Permission denied 我可以知道什么是visudoconfiguration不正确
我想编写一个bash脚本,以普通用户身份login时在root下执行一些任务。 有没有可能有这样的事情? #!/usr/bash sudo -i <multiple line perform all my sudo command> … … … exit <back to my user command, continue some other task> 当然,我可以每行都写一个sudo,但是我想知道是否可以做类似上面的事情? 谢谢。
我可以使用sudo权限的pipe理员帐户SSH到我的服务器(CentOS 5.9): $ ssh admin@myserver Last login: Wed Feb 27 19:23:11 2013 from [IP ADDRESS] [admin@myserver ~]$ 那么我可以su根: [admin@myserver ~]$ sudo su root [sudo] password for admin: [root@myserver admin]# 但是我不能告诉另外一个用户,su命令不会告诉我为什么: [admin@myserver ~]$ sudo su anotheruser [admin@myserver ~]$ whoami admin 任何想法,为什么我可以扎根,而不是其他用户? 我怎么能告诉我为什么它不做我想做的事?
如何设置它,使su与当前login的用户相同,即 foo$ su -c 'something' foo 不需要密码? 这不会增加或删除任何安全性,因为它应该是一个noop。 想要这样做的原因是,我想有一个“根”下的用户类,可以pipe理该用户下运行的机器上的某些特定的服务,如news或mysql (检查他们的数据,更改configuration,重新启动等)。 这些用户将获得该帐户的sudo权限,除了在某些情况下调用init脚本之外,这通常运行良好 su -c 'start_daemon …' daemonuser 而这个计划就是这样。 当然,我可以更改init脚本或添加额外的sudo权限,但是我想避免这些exception,因为从长远来看,它们是一团糟。 su的configuration在PAM中,所以正确的魔法可能就在那里。
怎么“sudo !!” 在bash中工作: $ touch /bin/1 touch: cannot touch `/bin/1': Permission denied $ sudo !! sudo touch /bin/1
我想给我的maillogs( /var/log/maillog* )授予特定的(普通)用户grep访问权限。 我不准备更改日志权限,因为他们应该保持root ,所以我认为首选解决scheme将通过sudoers 。 另外:我想授予尽可能less的其他权限,理想情况下,用户只能访问maillog(和旋转的文件)。 例如: username ALL= NOPASSWD: /bin/grep 允许该用户基本上grep上的任何文件,这是我想避免的。 这里最好的解决scheme是什么? 仅供参考:本身不需要grep :用户只需要读取maillogs,并且可能只使用grep来访问它们。
sudo和sudo -i有什么特权区别? 随着sudo它 $sudo echo "search foo.bar.baz" >> /etc/resolv.conf bash: /etc/resolv.conf: Permission denied …和sudo -i $sudo -i #echo "search foo.bar.baz" >> /etc/resolv.conf …有用。 特权是: drwxr-xr-x 166 root root 12288 2009-10-17 21:02 . -rw-r–r– 1 root root 42 2009-10-17 20:55 /etc/resolv.conf 这些命令有不同的行为,让我吃了一惊,是什么原因导致sudo版本失败?
我有几个服务器,一些用户需要sudoers来工作。 问题是,当sudoers可以运行命令sudo su并以root用户身份login。 运行该命令似乎非常危险。 我尝试使用文件/ etc / sudoers中的命令别名,但它没有奏效。 有什么办法,他们是sudoers,但不能运行命令sudo su ?
系统pipe理员存在于所有环境的sudoers文件中,但是其他sudoers不是。 不同的环境都有略微不同的sudoers。 大多数情况下,90%的用户是相同的,10%是不同的,所以我们不能只有一个sudoers文件的一切。 目前,我们正在使用10个不同文件的木偶,如sudoers.production1,sudoers.production2,sudoers.production3,sudoers.testing1,sudoers.staging1等等。 然后Puppet根据服务器的$ domain(例如:dbserver.staging1.acme.com)或$ hardwaremodel选取要部署的文件。 它工作正常,但这是一个噩梦来维护这么多的文件。 我想基于服务器的域自动生成sudoers文件,并且只有一个大文件,所有用户和所有环境都具有sudoers权限。 东西看起来像: User_Alias ADMINS = abe, bob, carol, dave case $domain { "staging1.acme.com" { #add dev1,dev2,tester1,tester2 to sudoers file } "testing2.acme.com" { #add tester1, tester3, tester4 to sudoers file } 最好的办法是什么呢? 欢迎提出替代scheme。 我会很感激任何提示。 更新1: 出于安全原因,我们宁愿不连接位于puppet客户端的文件夹中的一堆文件,以防有人将文件放在那里(恶意或不合法),或者中断合并的文件或插入某些文件。 最重要的是,为了可用性,我们希望在puppet服务器上保留sudoers相关的文件(片段或完整)的数量为3(prod / stage / test),或者最好是1个文件。 这个文件将(以某种方式)在puppet服务器上生成sudoers文件,并向每个puppet客户端发送一个定制文件。 这样做的目的只是在一个文件中search一个用户名,并且比在11个文件上更快地删除它。 当把一个用户添加到一堆环境中时,它不会那么快,但是只需打开一个文件就可以看到,大大减less了遗漏的可能性。 我们的Sudo版本是1.6.9p8,所以我们不能使用/sudoers.d文件夹,只有sudoers文件。 UPDATE2: 我一直在search一些,我刚刚发现了这个,我花了一个小时在看: https://github.com/saz/puppet-sudo#readme […]
不pipe我尝试什么,似乎在使用sudo运行一个命令后, LD_LIBRARY_PATH环境variables不会保留。 我设法让它坚持下来的唯一方法是每当我从命令行调用sudo命令时,用LD_LIBRARY_PATH=/the/path来加前缀,但是我不想每次都这样做。 看来env_keep选项忽略了这个variables,exempt_group选项也是如此。 我的%组目前拥有ALL=(ALL) NOPASSWD:ALL作为sudoers的访问权限。 我希望这个特定的环境variables能够保存我运行的任何命令。 我怎样才能做到这一点? 我的服务器正在运行红帽企业版Linux 5.7。