You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu Linux系统中拒绝特定主机访问共享目录

如何在Ubuntu Linux系统中拒绝特定主机访问共享目录

嘿,针对你的场景——用scp让两台主机访问Server上的共享目录,现在要禁止Host2但保留Host1的访问权限——我给你几个实用的Ubuntu本地方案,你可以根据实际情况选择:

方案一:通过SSH访问控制列表(最直接,适合完全限制Host2的SSH/scp访问)

因为scp是基于SSH协议的,我们可以直接通过系统的hosts.allow和hosts.deny来控制主机的SSH访问权限:

  • 先编辑hosts.allow文件,添加规则允许Host1访问:
    sudo nano /etc/hosts.allow
    
    在文件末尾添加一行:sshd: Host1的IP地址或主机名(比如sshd: 192.168.56.101)
  • 再编辑hosts.deny文件,添加规则拒绝Host2:
    sudo nano /etc/hosts.deny
    
    在文件末尾添加一行:sshd: Host2的IP地址或主机名(比如sshd: 192.168.56.102)
    设置完成后,Host2连SSH连接都无法建立,自然没法用scp访问共享目录。不过这个方案会完全禁止Host2的所有SSH操作,如果你只是想限制特定目录而非整个SSH,建议看下面的方案。

方案二:通过SSH密钥限制目录访问(适合密钥登录场景,精准限制单个目录)

如果Host1和Host2都是用SSH密钥登录Server的,我们可以修改Host2的密钥授权规则,让它无法访问目标共享目录:

  • 登录到Server,打开密钥授权文件:
    nano ~/.ssh/authorized_keys
    
    (如果是root用户,路径为/root/.ssh/authorized_keys)
  • 找到Host2对应的公钥行,在开头添加限制命令,示例如下:
    command="echo 'Access denied to /shared_dir'; exit 1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
    
    把/shared_dir替换成你实际的共享目录路径。这样当Host2尝试用scp访问该目录时,会直接收到拒绝提示,无法进行操作。

方案三:通过文件系统ACL精准控制目录权限(适合不同用户登录的场景)

如果Host1和Host2在Server上使用的是不同的用户账号,我们可以用ACL(访问控制列表)给共享目录设置精细的权限:

  • 先确保安装了ACL工具:
    sudo apt update && sudo apt install acl
    
  • 假设Host1用的是user1,Host2用的是user2,共享目录为/shared_dir:
    • 给user1添加读写执行权限:
      sudo setfacl -m u:user1:rwx /shared_dir
      
    • 给user2添加完全拒绝权限:
      sudo setfacl -m u:user2:--- /shared_dir
      

设置完成后,Host2登录的user2账号将完全无法访问该目录,而Host1的user1账号可以正常使用。

备注:内容来源于stack exchange,提问作者Rand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:43:16