我需要做的就是以特定用户身份运行特定脚本,该用户nologin/false在/etc/passwd.
我会以 root 身份运行脚本,这应该以另一个用户身份运行。跑步:
~# su -c "/bin/touch /tmp/test" testuser
Run Code Online (Sandbox Code Playgroud)
会工作,但我需要一个有效的测试用户外壳。我知道我可以禁用密码passwd -d testuser并将外壳保留为/bin/bash这种方式会安全一点,但我需要有nologin/false外壳。
基本上我需要的是crontab当我们将作业设置为以特定用户身份运行时会做什么,而不管这个用户是否有nologin/falseshell。
ps 我发现这个线程Executing a command as a nologin user,但我不知道如何concatenate将命令su -s /bin/sh $user发送到我需要运行的脚本。
您如何允许用户使用“ su - user ”登录但阻止用户使用 SSH 登录?
我试图将外壳设置为/bin/false但是当我尝试su它时不起作用。
有几种方法只允许登录su?
SSH 是AllowUser要走的路吗?(如果这是要走的路,我会怎么做)
我最近设置了我的服务器,因此我的 suPHP“虚拟”用户无法使用本文登录
我现在的问题是,在我rake为服务器上运行的 Ruby on Rails 应用程序运行命令之前,我曾经从那里su进入www-data并执行命令 - 显然,由于 nologin,我不能再这样做了。
因此,作为 root 用户,我如何以其他用户的身份执行命令,即使他们没有登录?
PostgreSQL 用户默认在 unix 套接字上进行对等身份验证,其中 unix 用户必须与 PostgreSQL 用户相同。所以人们经常使用su或sudo成为postgres超级用户。
我经常看到人们使用以下结构:
sudo su - postgres
Run Code Online (Sandbox Code Playgroud)
而不是
sudo -u postgres -i
Run Code Online (Sandbox Code Playgroud)
我想知道为什么。同样,我见过:
sudo su - postgres -c psql
Run Code Online (Sandbox Code Playgroud)
代替
sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)
如果没有领导sudo的su版本可能会做出一些感觉,如果你是一个老平台没有sudo。但是为什么要在比史前时代更短的 UNIX 或 Linux 上使用sudo su?
我被说服了一个用户来运行一个特定的长时间运行的脚本。我想使用 screen 但我收到错误消息“无法打开您的终端 '/dev/pts/4' - 请检查。”
所以我在谷歌上搜索并发现了一个论坛帖子,指示运行$ script '/dev/null/'. 我这样做了,然后我就可以筛选了。
为什么这样做?su 在做什么,该屏幕无法以 su 用户身份运行?为什么将“脚本”重定向到 /dev/null 否则会被阻止?是否使用脚本将原始用户的日志写入某处?
我在 Ubuntu 11.04 ( adduser --system) 中创建了一个“系统”用户来运行某些 cron 作业,但有时我想通过以该用户身份手动运行命令来测试一下。什么是最简单的方法来做到这一点?
su不起作用,因为用户有/bin/false它的外壳(这对 cron 很好)。我一直在手动更改外壳以/bin/bash进行测试,然后再次将其更改回来,但我想知道有没有更简单的方法?
我正在致力于自动创建 subversion 存储库和相关网站,如我写的这篇博文中所述。我在向 www-data 用户运行以下命令的部分遇到了问题:
svnadmin create /svn/repository
Run Code Online (Sandbox Code Playgroud)
在脚本的开头有一个检查,以确保它以 root 或 sudo 身份运行,并且该命令之后的所有内容都需要以 root 身份运行。有没有一种好方法可以将那个命令作为 www-data 运行然后切换回 root 来完成?
当我su -进入 root 时,我的当前目录被设置为 root 的家。无论如何要保留我所在的当前目录,就像sudo -s. 或者是使用 sudo 的答案?
注意:请阅读本文中点附近以“EDIT”开头的更新信息 - 此问题的环境和背景已更改
我在这里安装了一个沼泽标准的 Debian 6.0,我决定将其转移到 Debian 测试存储库。我通过在我的 sources.list 中交换对 Squeeze 存储库的引用来使用测试存储库来做到这一点。
安装软件包并重新启动后,尝试向另一个用户执行 su - 时出现以下错误:
root@skaia:~# su joebloggs -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)
如果我省略 -,则不会发生这种情况。
请注意,用户可以正确地成为 root,这似乎只有在从 root 切换到其他人并使用 - 获取该用户的环境时才会发生。
谷歌在这里基本没用。我能找到的唯一的东西是 2011 年关于sux包的参考文献,这些参考文献似乎同时得到了修复。
这看起来和闻起来很像升级错误,可以通过以正确的方式调整正确的包来修复。我只是不知道从哪里开始 - 除此之外,我的系统完全正常并按预期工作。
编辑
如上所述,这现在发生在我的 Debian稳定机器上。这次没有升级或任何东西,只是直接稳定。
是的,一年后。仍然不知道问题是什么。
这是现在的样子(变化不大):
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
terraria@skaianet:~$ …Run Code Online (Sandbox Code Playgroud) 背景
我知道其中的差别之间su -,sudo su -以及sudo <command>:
su - - 将用户切换到 root,需要 root 密码sudo su - - 将用户切换到 root,只需要当前用户的密码sudo <command>- 仅授予特定命令的 root 访问权限;只需要当前用户的密码我的问题是sudo su -在生产环境中使用是否是一种安全的做法。
一些想法:
sudo su -通过根据个人用户密码访问 root 帐户,似乎允许会带来安全风险。当然,这可以通过执行严格的密码策略来缓解。我认为su -没有更好的办法,因为它需要管理员共享实际的 root 密码。
允许用户完全切换到 root 帐户使得跟踪谁对系统进行了更改变得更加困难。我在日常工作中看到过多个用户被授予sudo su -访问权限的情况。用户登录系统后做的第一件事是运行sudo su -,然后再开始工作。然后,有一天发生了一些事情,并且无法追踪谁跑到rm -rf *了错误的目录中。
问题
鉴于上述问题,允许用户使用sudo su -甚至su -根本不使用是否是一个好主意?
管理员是否有任何理由为sudo su -或su -代替 …