我想 su 到另一个用户,使用 expect,然后以该用户身份运行图形程序。我正在使用 kcalc 进行测试:
#!/usr/bin/expect
set timeout 20
spawn su dummy
expect "Password:"
send "PASS\r";
send "kcalc\r"
Run Code Online (Sandbox Code Playgroud)
我还尝试删除最后一行并将 su 更改为“su dummy -c kcalc”,但这也不起作用。我很感激任何帮助。
我想授予 wheel 组的用户(其他系统管理员)su 访问权限,而不会被要求输入密码。
我知道如何在 linux 中使用 pam 进行操作,但现在的问题是针对 FreeBSD。我不熟悉 FreeBSD 的 PAM 子系统的语法。我应该输入什么/etc/pam.d/su而不是默认值:
auth sufficient pam_rootok.so no_warn
auth sufficient pam_self.so no_warn
auth requisite pam_group.so no_warn group=wheel root_only fail_safe ruser
auth include system
# account
account include system
# session
session required pam_permit.so
Run Code Online (Sandbox Code Playgroud) sudo(我已配置为要求输入密码)拒绝我的密码(就像我输入错误一样)我绝对没有输入错误。我暂时将密码更改为仅字母字符,并且在同一个终端中以纯文本格式看起来不错。我的用户名是这样配置的:
myusername ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我使用的是我的密码,而不是 root 密码,它们是不同的。可以肯定的是,我已经尝试了两者(即使我知道 root 密码不是我应该使用的) - 都不起作用。
我另外将自己添加到“wheel”组中,并包含以下行:
%wheel ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我有点束手无策了。我不知道什么会导致它表现得好像在接受我的密码,但随后拒绝了它。无论是在终端 shell 还是通过 X11 登录管理器,我都可以使用相同的密码登录。
可能的重复:
sudo -i 和 sudo su - 有什么区别
我知道这两个命令都会导致获得 root-shell。但也有一些区别。在某些服务器上,例如提示不同:
nomike@testerver:~> sudo -i
root@testerver:~> logout
nomike@testerver:~> sudo su -
[root@testerver ~]#
Run Code Online (Sandbox Code Playgroud)
所以我猜“.bashrc”、“.bash_profile”和“.profile”的处理方式有些不同。
一个会调用登录 shell 而另一个不调用吗?
我试图为我的 Minecraft 服务器设置计划备份。我使用了在 GitHub 上的frdmn/minebackup.sh上找到的脚本,当我直接从终端运行它时,它似乎运行良好。
但是,由于某种原因,我设置的 cronjobs 不起作用。在邮件中,我收到以下错误消息:
Hexxit 服务器正在运行,正在暂停保存... su:必须从终端运行
su:必须从终端运行
su:必须从终端运行
done
备份 hexxit-01... done
总备份大小(175 MiB ) <= (5000 MiB)... done
Hexxit Server 正在运行,重新启用保存... su:必须从终端运行
su:必须从终端运行
done
主要问题似乎是su: must be run from a terminal,我认为这与服务器上的安全问题有关,而不是脚本,所以这就是我在这里问的原因。
它或多或少是一个新安装的 Debian 7.1.0 x64 实例,上面有一个用户,mc. 如何修复它以便此脚本成功运行?
cronjobs 看起来像这样,并已添加使用 crontab -e
*/15 * * * * /usr/bin/minebackup backup
0 0 * * * /usr/bin/minebackup backup full
Run Code Online (Sandbox Code Playgroud)
我一直在四处寻找,我觉得我需要编辑/etc/sudoers,但是我应该注释掉的那行甚至不在文件中,所以我不知道 Debian 是否更改了它的默认值或……嗯?
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root …Run Code Online (Sandbox Code Playgroud) 什么是更好的选择:使用 su 切换到 root 或启用 sudo?如果不使用 sudo,入侵者将需要知道允许 ssh 的用户的密码(或密钥)以及 root 密码。使用 sudo 非特权用户的密码就足够了。
我设置了一个新的网络服务器 (Debian 8.2),想知道通过 SSH 安全连接到它的最佳实践是什么,并且我仍然可以轻松使用它。
到目前为止,我已经在 SSH 上禁用了 PermitRootLogin 并切换了端口。iptables 也可以阻止我不需要的一切。现在我必须使用非特权用户登录,然后切换
su root
Run Code Online (Sandbox Code Playgroud)
但是作为 root 工作并不是我听说过的最好的事情......所以我想只授予我的非特权用户 sudo 权限。
然后再次入侵者只需要知道一个密码,因为 sudo 要求提供当前用户密码而不是 root 密码。因此,我通过禁用 SSH 中的 PermitRootLogin 使攻击者更难的计划不再起作用。
所以:su root 还是 sudo?
在更大努力的背景下,我遇到了一个令我困惑的特定问题。
在 Mac OS X 10.6.7 上,使用系统提供的 Apache 和 PHP,我创建了一个简单的HelloWorld.php脚本,毫不奇怪,它只是打印Hello, World!,没有别的。
如果我将它作为php helloworld.php.
但是,如果我:
sudo su
su _www php helloworld.php
Run Code Online (Sandbox Code Playgroud)
它什么也不发出; php几乎立即返回,没有执行的迹象。
我哪里出轨了(更重要的是,我应该收集哪些诊断信息来帮助推断问题)?
没有骰子。
bash-3.2$ls -alF foo.php
-rw-r--r-- 1 _www _www 37 Apr 4 21:08 foo.php
bash-3.2$ ls -dalF .
drwxr-xr-x 56 _www _www 1904 Apr 4 21:08 ./
bash-3.2$ whoami
bbum
bash-3.2$ php foo.php
Hello, World!
bash-3.2$ sudo sh
sh-3.2# php foo.php
Hello, World!
sh-3.2# su _www php foo.php
sh-3.2#
Run Code Online (Sandbox Code Playgroud)
如果我复制foo.php …
使用 CentOs,我想以用户“培训”的身份运行脚本作为系统服务。我使用 daemontools 来监控进程,它需要一个以 root 身份运行并且没有 tty 标准的启动程序脚本。
下面我给出了我的五种不同尝试,但都失败了。
:
#!/bin/bash
exec >> /var/log/training_service.log 2>&1
setuidgid training training_command
Run Code Online (Sandbox Code Playgroud)
最后一行不够好,因为对于training_command,我们需要为trqaining 用户设置环境。
:
su - training -c 'training_command'
Run Code Online (Sandbox Code Playgroud)
这看起来像(以不同的用户身份运行 shell 脚本)但提供 ' standard in must be tty' as su 确保 tty 存在以可能接受密码。我知道我可以通过修改 /etc/sudoers(a la https://superuser.com/questions/119376/bash-su-script-giving-an-error-standard-in-must-be-a- tty)但我不情愿并且不确定后果。
:
sudo -u training -i bash -c 'source $HOME/.bashrc; training_command'
Run Code Online (Sandbox Code Playgroud)
同一主题的变体:' sudo: sorry, you must have a tty to run sudo'
:
runuser - training -c 'training_command'
Run Code Online (Sandbox Code Playgroud)
这个给runuser: cannot set …
我可以使用具有 sudo 权限的管理员帐户通过 SSH 连接到我的服务器(CentOS 5.9):
$ ssh admin@myserver
Last login: Wed Feb 27 19:23:11 2013 from [IP ADDRESS]
[admin@myserver ~]$
Run Code Online (Sandbox Code Playgroud)
然后我可以 su 到 root:
[admin@myserver ~]$ sudo su root
[sudo] password for admin:
[root@myserver admin]#
Run Code Online (Sandbox Code Playgroud)
但是我不能 su 到另一个用户,并且 su 命令没有告诉我原因:
[admin@myserver ~]$ sudo su anotheruser
[admin@myserver ~]$ whoami
admin
Run Code Online (Sandbox Code Playgroud)
知道为什么我可以 su 到 root 而不是其他用户吗?
我怎样才能让 su 告诉我为什么它没有做我想做的事?
在红帽 linux 中。来自我的用户,如果我发出命令 sudo su -> 更改为 root su tomcat --> 更改为 tomcat 用户
为什么在单行中拖尾命令不起作用?须藤苏; su tomcat --> 仍然在 root 中。不切换到tomcat