Linux のフォルダを Windows からアクセスできるようにする
◆ samba で Linux のフォルダを Windows に共有する
◆ samba のインストール → smb を起動 → ユーザとパスワード設定
◆ これだけで使える
◆ samba のインストール → smb を起動 → ユーザとパスワード設定
◆ これだけで使える
久々に Linux 触りました
前に WinSCP とかで十分だからと Windows どうしのようにエクスプローラで \\ から始まるアドレスで Linux の共有フォルダにアクセスする方法は流してましたが 今回はそれをやってみます
ぐぐってみると 複雑そうに色々書いてるところとか よくわからないコマンドの説明を色々書いてるところとかばかりで分かりづらかったのでシンプルにまとめます
httpd みたいに d はつかないです
これだけで Windows からアクセスができるようになります
普段は

こうなりますが smb を起動してると

おー 認証画面です
samba 用のアカウントとパスワードを作ります
パスワード変更なら
最初の登録だけ -a が必要です
登録したら認証画面で入力します
ドメインの入力もいるので Linux PC のホスト名も込み("linu-server" だとアカウント名は "linu-server\root" のように PC 名と \ を最初に入れます)で打ってたのですが いきなりユーザ名でも大丈夫でした
Windows でフォルダを右クリックして共有するみたいに 共有できるフォルダを増やしたいときは 設定ファイルに追加すればいいです
/etc/samba/smb.conf を編集します
最後の方にあるものを真似て
[share] の部分が共有名になります
共有するディレクトリのパスが path です
ルート(/) 自体を共有してしまえば
Windows で Linux の設定ファイルをいじれます

ただ 見かけた説明ページで不要だったのを上げておきます
smb.conf のデフォルトのワークグループは MYGROUP になっています
Windows のデフォルトは WORKGROUP なのでこれに合わせないといけない という記事を見ましたが ここは全くいじらなくても共有できました
もうひとつ unix password sync = yes とすれば smbpasswd なしで Linux のユーザのパスワードを使いまわせると見たのですが これを設定しても Windows からの認証画面でログインはできませんでした
自分で smbpasswd をやる必要があるみたいです
一時的にOFFにするコマンドです
Windows からログインしたあとで別のユーザに変更したいからログアウトしたいときは コマンドプロンプトで
フォルダを開いているならいったん閉じてから またアクセスすると認証画面が出て別ユーザでログインできます
ここまでの例に合わせれば PC 名のところはこうなります
samba はバージョンや種類がいっぱいあって もっと新しいコマンドもあって使える機能が多いようです
ですが 特にそんな機能が必要でもないので シンプルで覚えやすいこれで十分かと思います
前に WinSCP とかで十分だからと Windows どうしのようにエクスプローラで \\ から始まるアドレスで Linux の共有フォルダにアクセスする方法は流してましたが 今回はそれをやってみます
ぐぐってみると 複雑そうに色々書いてるところとか よくわからないコマンドの説明を色々書いてるところとかばかりで分かりづらかったのでシンプルにまとめます
samba をインスト
Windows と共有できるようにするためには samba というソフトが必要ですsudo dnf install samba
smb を起動
samba をインストしたら systemctl で起動しますsudo systemctl start smb
httpd みたいに d はつかないです
これだけで Windows からアクセスができるようになります
普段は

こうなりますが smb を起動してると

おー 認証画面です
パスワード
いきなりパスワードを打ってログインしたいところですが このままではログインできませんsamba 用のアカウントとパスワードを作ります
sudo smbpasswd -a USERNAME
パスワード変更なら
smbpasswd USERNAME
最初の登録だけ -a が必要です
登録したら認証画面で入力します
ドメインの入力もいるので Linux PC のホスト名も込み("linu-server" だとアカウント名は "linu-server\root" のように PC 名と \ を最初に入れます)で打ってたのですが いきなりユーザ名でも大丈夫でした
root
passwd
のような感じでおっけいですpasswd
共有フォルダ
ログインすると そのユーザのホームフォルダにだけアクセスできますWindows でフォルダを右クリックして共有するみたいに 共有できるフォルダを増やしたいときは 設定ファイルに追加すればいいです
/etc/samba/smb.conf を編集します
最後の方にあるものを真似て
[share]
path = /usr/share_dir
public = yes
writable = yes
printable = no
のようなものを追加しますpath = /usr/share_dir
public = yes
writable = yes
printable = no
[share] の部分が共有名になります
共有するディレクトリのパスが path です
ルート(/) 自体を共有してしまえば
Windows で Linux の設定ファイルをいじれます

オプション
IP 制限とか色々できるようですが 今回はとりあえず読み書きできればいいのであまり詳しくは書かないですただ 見かけた説明ページで不要だったのを上げておきます
smb.conf のデフォルトのワークグループは MYGROUP になっています
Windows のデフォルトは WORKGROUP なのでこれに合わせないといけない という記事を見ましたが ここは全くいじらなくても共有できました
もうひとつ unix password sync = yes とすれば smbpasswd なしで Linux のユーザのパスワードを使いまわせると見たのですが これを設定しても Windows からの認証画面でログインはできませんでした
自分で smbpasswd をやる必要があるみたいです
その他
認証画面すら出ない場合は firewall とか selinux を切ってみてください一時的にOFFにするコマンドです
sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl stop firewalld
Windows からログインしたあとで別のユーザに変更したいからログアウトしたいときは コマンドプロンプトで
net use \\PC名 /delete
と打ってログイン情報を削除しますフォルダを開いているならいったん閉じてから またアクセスすると認証画面が出て別ユーザでログインできます
ここまでの例に合わせれば PC 名のところはこうなります
net use \\192.168.1.5 /delete
samba はバージョンや種類がいっぱいあって もっと新しいコマンドもあって使える機能が多いようです
ですが 特にそんな機能が必要でもないので シンプルで覚えやすいこれで十分かと思います