🌊

Amazon Linux2023でSambaファイルサーバーを構築してみた

2024/06/15に公開

はじめに

業務でAmazonLinux2023を使ったSambaファイルサーバーを構築する要件が出てきたのですが
私自身、Sambaを触ったことがないので後学のために調べながら構築してみよう思います。

先に結論

Amazon Linux2023でもAmazon Linux2と同様の手順で問題なくSambaを構築することができました。

環境

  • Mac
  • Vscode
  • Windows

事前準備

下記テンプレートを使ってEC2をデプロイしておきます。

lib/vpc-stack.ts
AWSTemplateFormatVersion: "2010-09-09"

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default
      Tags:
      - Key: Name
        Value: VPC-Samba-Server

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
      - Key: Name
        Value: IGW-Samba-Server

  IGWAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway

  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.0.0/24
      AvailabilityZone: !Select [ 0, !GetAZs ]
      MapPublicIpOnLaunch: true
      Tags:
      - Key: Name
        Value: PublicSubnet-Samba-Server

  PublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
      - Key: Name
        Value: PublicRouteTable-Samba-Server

  PublicRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref PublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway

  PublicSubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PublicSubnet
      RouteTableId: !Ref PublicRouteTable

  SambaSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: SambaSecurityGroup-Samba-Server
      GroupDescription: Allow Samba traffic
      VpcId: !Ref VPC
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 445
        ToPort: 445
        CidrIp: 0.0.0.0/0
      Tags:
      - Key: Name
        Value: SambaSecurityGroup-Samba-Server

  SambaInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

  SambaInstanceProfile:
    DependsOn: SambaInstanceRole
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: /
      Roles:
      - !Ref SambaInstanceRole

  SambaInstance:
    DependsOn: SambaInstanceProfile
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0f9fe1d9214628296
      InstanceType: t2.micro
      BlockDeviceMappings:
      - DeviceName: /dev/sdf
        Ebs:
          VolumeSize: 10
          VolumeType: gp3
      IamInstanceProfile: !Ref SambaInstanceProfile
      UserData: !Base64 |
        #!/bin/bash
        sudo dnf update -y
        sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
        sudo systemctl start amazon-ssm-agent
      SecurityGroupIds:
      - !Ref SambaSecurityGroup
      SubnetId: !Ref PublicSubnet
      Tags:
      - Key: Name
        Value: Samba-Server

  SambaServerEIP:
    Type: AWS::EC2::EIP
    Properties:
      Domain: vpc
      InstanceId: !Ref SambaInstance

1. Sambaのインストール

sudo yum -y install samba

2. Sambaユーザー作成

Sambaユーザー登録時にPWを求められますがSambaに接続する際に必要になりますので控えておいてください。

#OSユーザー作成
sudo useradd samba-user

#SambaにOSユーザーを登録
sudo pdbedit -a sambda-user

#登録状況を確認
sudo pdbedit -L
samba-user:1002:

3. Samba起動

sudo systemctl start smb.service
sudo systemctl enable smb.service

4. Windowsから接続できるか確認

  1. Windowsのエクスプローラーを開いて"¥¥<EC2のパブリックIP>"を入力します。
  2. 認証情報を求められるので先ほど作成したユーザー名とPWを入力します。
  3. 下記画面のようにSambaにアクセスできました。

参考

https://dev.classmethod.jp/articles/amazonlinux2-samba/

おわりに

今回構築したこのファイルサーバーをいじりながらもう少し勉強してみようと思います。

GitHubで編集を提案

Discussion