网络上只有普通帐户的系统的单一管理员计算机

Oxw*_*ivi 7 remote-access user-management

如何让系统只有一个普通帐户,并由一台计算机管理管理任务?

我只是希望能够从一个系统中添加/删除所有计算机上的软件。批发 - 不是单独登录每台计算机并做需要做的事情。我可以通过物理方式或通过 SSH 来做到这一点,但是对于一百台左右的计算机,这并不是我真正想考虑的选择。

Egi*_*gil 11

要从一台中央计算机管理多台机器,您可以尝试学习一个系统管理平台,例如Puppet。它允许您从一台主机(puppetmaster)管理多台机器(人偶)。根据您的情况,它可能有点矫枉过正,但它是从中央控制点管理许多机器的绝佳工具。它还使设置新机器(或重新安装旧机器)变得非常容易,因为您可以从服务器中提取所有配置、包列表等。

这是安装和测试 puppetmaster的 ubuntu 操作指南的链接。


Tak*_*kat 5

隐藏管理员

每个系统至少需要一个管理用户,因为在 Ubuntu 中禁用了一个不同的 root 帐户*。尽管如此,通过在 中添加以下行,可以从 gdm 登录中隐藏此用户“管理员” /etc/gdm/custom.conf

[greeter]
Exclude=nobody,administrator
Run Code Online (Sandbox Code Playgroud)

我们可能会进一步限制非管理用户的读取访问权限 /home/administrator/

对于管理任务,我们以用户管理员身份在本地登录(例如在命令行上或通过在 GUI 中选择其他人),或通过 ssh 远程登录。

定义 ssh_config

为了向多台远程机器发出命令,我们需要定义一个本地配置文件,~/.ssh/ssh_config其中列出登录到远程机器所需的详细信息以及可以为客户端定义方便的名称:

# ssh configuration
Host remote1
    HostName 192.168.0.1
    Port 22
    User USERNAME

Host remote2
    HostName 192.168.0.2
    Port 22
    User USERNAME
Run Code Online (Sandbox Code Playgroud)

可能需要其他选项来进一步控制会话详细信息(例如禁用密码身份验证)。

在多个客户端上运行命令

我们现在编写一个脚本,连接到一个接一个的客户端以运行给定的命令:

#!/bin/bash

# run a command on multiple remotes   

REMOTES=$1;shift
COMMAND=$1;shift

for remote in $REMOTES
do
    echo $remote
    ssh -oConnectTimeout=10 $remote $COMMAND
done
Run Code Online (Sandbox Code Playgroud)

如果这个脚本被命名,remote_command.sh我们就可以通过调用在我们的远程机器 1-X 上运行任何命令:

remote_command "remote1 remote2 ... remote<X>" "<COMMAND>" > remote_command.log
Run Code Online (Sandbox Code Playgroud)

根据个人需要,我们可以从文件中读取 $REMOTES 的列表,或者我们可以使用常规模式作为遥控器名称以方便脚本使用。如果远程客户端没有改变,我们也可以在这个脚本中编码所有名称,以便仅使用命令调用它。

*不鼓励重新启用 root 帐户(通过passwd root <password>在 root shell 中为 root 定义有效密码),因为缺点过于严重。