禁止 CentOS 用户使用除 samba 之外的所有功能。

禁止 CentOS 用户使用除 samba 之外的所有功能。

我有一个运行一些 Samba 共享的存储服务器。我需要为公司里的每个人创建多个用户,但我只希望他们能够从客户端计算机访问 Samba。我不希望他们能够本地登录或通过 ssh 登录。有没有办法禁止上述用户执行任何操作,但只能从另一台计算机连接到共享?

答案1

你确实应该限制 ssh 访问指定团体或个人理所当然(即白名单)。

您可以控制任何pam 认证服务使用大多数发行版附带的标准模块。

您没有说明哪些服务提供“本地登录”的访问权限。除了配置 pam 之外,您还可以使用 getty 设置 /etc/nologin,这会阻止除 root 之外的所有人,或者将用户 shell 更改为其他内容。我认为没有针对 kdm/gdm/xdm 的特定应用程序工具(但这些工具仍将使用 pam)。

顺便说一句:如果你need to create multiple users for each individual那么你可能做错了什么。

答案2

您可以使用密码保护程序用于创建和管理可以访问 samba 共享等的用户的程序,但正如手册页所述

-a 此选项指定应将后面的用户名添加到本地 smbpasswd 文件中,并输入新密码(输入旧密码)...请注意,默认的 passdb 后端要求用户已经存在于系统密码文件(通常是 /etc/passwd)中,否则添加用户的请求将失败。

这不是一个大问题,因为你可以在创建帐户时锁定本地用户

useradd freddy
passwd -l freddy
smbpassdw -a freddy
New SMB password:
Retype new SMB password:
Added user freddy.

将创建一个可以使用 samba 共享但无法登录的用户 freddy

答案3

根据您设置 Samba 来验证用户的方式,限制这些用户的 SSH 登录访问权限会有所不同。

如果您已使用 tdbsam 后端将 Samba 配置为“用户”模式,则只需调用“usermod -L”即可锁定用户帐户。如果您不锁定 Samba 帐户,这不会中断 Samba 访问。

如果您在“域”模式下针对域控制器对用户进行身份验证(也需要本地用户帐户),这也有效。

这似乎不是您的情况,但如果您使用 Winbind 进行活动目录集成,并且想要将 SSH 登录限制为仅限本地用户(而非域级用户),则可以在 sshd.config 中禁用 PAMAuthentication。

答案4

Samba 在后端针对什么进行身份验证?Samba 可以使用自己的数据库。这似乎是限制 Samba 用户访问底层系统上任何资源的最简单方法。

passdb backend = ???

相关内容