🌊
Amazon Linux2023でSambaファイルサーバーを構築してみた
はじめに
業務で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から接続できるか確認
- Windowsのエクスプローラーを開いて"¥¥<EC2のパブリックIP>"を入力します。
- 認証情報を求められるので先ほど作成したユーザー名とPWを入力します。
- 下記画面のようにSambaにアクセスできました。
参考
おわりに
今回構築したこのファイルサーバーをいじりながらもう少し勉強してみようと思います。
Discussion