linux - Bash - 检查用户是否通过 ssh 登录

标签 linux bash ssh

我正在编写一个 bash 脚本,该脚本与给定目标用户 T 的 UID 和 GID 的递归修改有关。它必须在远程机器上以 root 身份运行。

为了正常工作,脚本要求这样的用户 T 不是建立 ssh 连接的用户。否则,作为 usermod 的命令将无法工作,因为由于 T (ssh) 存在事件进程。

换句话说,要在 T 上操作,我必须在连接为 S 后以 root 身份登录。

有什么方法可以确保登录的用户不是脚本的目标?即 S!=T?

最佳答案

如果您可以修改在权限提升之前运行的脚本部分,请记住 ssh 通常会设置 USER 环境变量。您可以将其导出为另一个名称以保留在升级的环境中。

OLD_USER=$USER su -m # the `-m` flag says to keep the current environment

(话又说回来,如果您可以修改在权限提升之前运行的脚本部分,为什么不检查 S=T 呢?)

此外,如果您使用 sudo 成为 root,该命令会为您设置 SUDO_USERSUDO_UID

关于linux - Bash - 检查用户是否通过 ssh 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066888/

相关文章:

java - 如何使从 Java Runtime.exec(command) 打开的程序始终在最前面

bash - 如何减少目录中每个文件名中的数字?

python - 使用 pysftp 和 Python 3 仅使用服务器指纹连接到 SFTP 服务器

linux - 多个 ssh 命令中的 cat 不起作用

Linux wget 文件输出

c - 使用信号处理程序捕获 ctrl-c 但由于回调线程中的无限循环而无法退出应用程序

linux - 通过管道读取命令行参数到 sh

bash - SSH 主机 key Rsync 问题

linux - 如何遍历目录并获取每个 txt 文件的 wc?

linux - 确保 .csv 文件在 bash 中每一行的列数相同