标签: su

命令:必须从终端运行

我有一个共享主机帐户,我使用 ssh 登录。例如,当我输入时,su我有这个输出: su: must be run from a terminal

这个错误是否与我没有足够的权限或其他原因有关?

linux ssh debian su

9
推荐指数
1
解决办法
2万
查看次数

如何从 root 登录返回到我的用户登录?

我正在使用 SuSE Linux Enterprise 并且我知道有一个命令

su root
Run Code Online (Sandbox Code Playgroud)

用于更改为 root 登录。但是反过来呢?如果我更愿意返回我的用户帐户,该怎么做?

command-line su

9
推荐指数
1
解决办法
8万
查看次数

从使用“su -c”启动的命令中获取进程ID

我在 shell 中运行一个 java 程序并将进程 ID 写入文本文件。所以当我这样做时:

nohup java app.Main > /dev/null 2>&1 &
echo $! > /var/run/app.pid
Run Code Online (Sandbox Code Playgroud)

有用。但我真的想以另一个用户的身份运行它

su - appuser -c "nohup java app.Main > /dev/null 2>&1 &"
echo $! > /var/run/app.pid
Run Code Online (Sandbox Code Playgroud)

这不起作用。有没有办法获取使用 -c 选项启动的命令的进程 ID?

shell bash su

9
推荐指数
1
解决办法
4148
查看次数

如何跨 su - 保留环境变量?

我在使用 ssh 到远程系统时导出LC_ALL="en_US.UTF-8"(通过sendEnvssh_config)。当我su - user123这个变量被登录shell重置时。LC_xxx在远程系统上以其他用户身份执行登录 shell 时,有没有办法保留此变量(以及其他变量)?

我意识到我可以在执行 shell 或~/.bashrc目标用户的输入后手动导出变量,但是ssh如果可能的话,我宁愿尝试保留发送的原始值。谢谢。

编辑:我确实需要初始化用户环境的特定部分,这就是使用的原因su -。我只想保存LC_xxx

shell su environment-variables

9
推荐指数
2
解决办法
1万
查看次数

如何以不同的用户身份运行命令

是否可以运行命令

  • 参数首先以-(破折号)开头,例如/usr/bin/echo -n foo
  • 作为不同的用户和组,例如 apache:apache
  • 使用命令 su
  • 当登录 shell 设置为/sbin/nologin?

我试过:

  • su -s "/usr/bin/echo" -g apache apache -n foo
    • 失败su: invalid option -- 'n'。看起来第一个参数可能不是以破折号开头。
  • su -c "/usr/bin/echo -n foo" -g apache apache
    • 失败nologin: invalid option -- 'c'-c如果登录 shell 是,看起来不能使用/sbin/nologin

su

9
推荐指数
2
解决办法
7万
查看次数

运行“su - username”时,pam_group 不会从 /etc/security/group.conf 添加其他组,但 sshd login 会添加?

我无法确定为什么su不像 PAM 配置所暗示的那样表现。简而言之,使用su成为另一个用户应该根据 PAM 配置加载辅助组,但pam_group不添加/etc/security/group.conf组,我们最终只得到我们的 LDAP 组。当以用户身份通过​​ SSH 登录时,您拥有来自两个来源的组。

我们的设置与默认的 CentOS 6.5 相差不远,我们使用 SSSD 通过 Kerberos / LDAP 提供登录,但/etc/pam.d据我所知,尚未对任何内容进行直接更改,这些更改是由以下人员进行的:

authconfig --updateall --enablesssd --enablesssdauth --enablemkhomedir
Run Code Online (Sandbox Code Playgroud)

当然有单独的/etc/pam.d/suand /etc/pam.d/sshd,但它们都包含相同的文件 wherepam_group.so被调用(分别包括system-authpassword-auth,但这两个包含的文件是相同的)。

的相关部分/etc/pam.d/su

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth
Run Code Online (Sandbox Code Playgroud)

的相关部分/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
Run Code Online (Sandbox Code Playgroud)

在包含的文件中:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the …
Run Code Online (Sandbox Code Playgroud)

linux security users pam su

8
推荐指数
1
解决办法
2778
查看次数

无法使用 su 切换到特定系统帐户

我无法在 OpenVZ 容器上切换到用户 jenkins。仍然有一个 jenkins 进程在运行,它是由这个用户启动的。

我试过了# su jenkins;它不会切换到 jenkins 用户。没有错误信息。

/etc/groups显示有一个 jenkins 组:jenkins:x:498:. 我试过了id -g jenkins,得到了这个:jenkins(uid=497)。有一个/etc/passwd条目:

jenkins:x:497:498:Jenkins Continuous Build server:/var/lib/jenkins:/bin/false
Run Code Online (Sandbox Code Playgroud)

这个容器什么也没发生。我在它停止后一段时间重新访问它,我启动它并在这种情况下找到它。

所以有一个 jenkins 用户。为什么我不能切换到它?

su

8
推荐指数
1
解决办法
1万
查看次数

如何使用 dpkg-statoverride 强化 su?

我正在阅读 Ubuntu 14 强化指南,这是建议之一:

确保只有 sudo 组中的用户才能运行 su 命令以充当(或成为)root 用户似乎是一个明智的想法:

dpkg-statoverride --update --add root sudo 4750
/bin/su

我查看了dpkg-statoverride命令,但我仍然无法弄清楚上面的命令到底在做什么?

这似乎意味着默认情况下 Ubuntu 14 允许任何人 sudo。为了测试,我创建了一个新用户,以该用户身份登录,尝试 sudo 并且失败了——这很好。

那么以上建议的目的是什么?

ubuntu su sudo dpkg hardening

8
推荐指数
1
解决办法
1771
查看次数

以 root 身份在一行中运行命令

我需要以 root 身份 su 并将命令作为一行运行。这是在 python 脚本中使用的。我正在寻找的是:

$ su root [some-magic] sh /home/jay/script-that-needs-executing-as-root.sh
<script output>
Run Code Online (Sandbox Code Playgroud)

这是在一个公共的 ubuntu 服务器上。运行此操作的帐户没有密码,但已设置好,所以基本上所有内容都无法访问,除了只读的python 脚本,在 ~/.profile 中,最后是

cd ~/py/main
python3 start.py
logout
Run Code Online (Sandbox Code Playgroud)

因此,他们无法真正访问服务器。在 python 脚本中,我让 su 工作,所以如果需要,用户可以输入shellasrootpython 脚本,输入 root 密码并运行命令,但我正在寻找一种以编程方式执行此操作的方法。


TL; DR - 在没有 sudo 特权的帐户上,我需要在一行中以 root 身份运行 shell 脚本。

su sudo python

8
推荐指数
1
解决办法
2万
查看次数

我怎样才能su到没有登录shell的用户?

问题

在Debian 10中我想创建一个无法直接登录的用户。人们应该只能通过使用su二进制文件来访问用户。在我的 Ubuntu 18.04 设置中,我确实做到了这一点,并且它的工作非常顺利,但在 Debian 10 中我无法这样做。

暗示

能够登录的用户将没有使用权限sudo

我做了什么

我已经使用默认 shell 设置了一个用户/usr/sbin/nologin。但是当我尝试访问该用户时,su --shell=/bin/bash user我无法这样做。

最小的例子

# useradd --shell /usr/sbin/nologin locked

# passwd locked
Enter new UNIX password: *secret*
Retype new UNIX password: *secret*
passwd: password updated successfully

$ su --shell /bin/bash locked
Password: *secret*
This account is currently not available.
Run Code Online (Sandbox Code Playgroud)

为什么这在 Debian 中不再起作用?

编辑1:

输出/etc/shells

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash …
Run Code Online (Sandbox Code Playgroud)

debian su nologin

8
推荐指数
2
解决办法
2万
查看次数