サーバ構築まで(Part.5)
以下内容は真似しないでください。失敗した、ダメな方法ですが晒したいと思います。
HES川添です。
サーバ構築まで(Part.5)まで長くなってしまいましたが、今現在までやってきたこととしてはWindows環境上にHyper-Vを使ってUbuntuの仮想マシンを作りました。
仮想マシンを作ってこの後どうしようかなと思って先輩社員に相談したところ「ファイルサーバでも立ててみたら?」とアドバイスいただいたのでファイルサーバを立ててみたいと思います。
ある記事を参考にやってみたところ良くないことをやっていたため、そのミスも含めて書いていきます。
ファイルサーバ構築
Sambaとは
参考にした記事に「Sambaでファイルサーバーを構築する」とあり、そもそも「Samba」とはなんだ?と思いましたので調べました。
下記とのことですが、要するにネットワークに必要な色んな機能を提供しているソフトフェアだということがわかりました。
Samba (サンバ) は、マイクロソフトのWindowsネットワークを実装した自由ソフトウェア。 Linux、Solaris、BSD、macOSなどのUnix系オペレーティングシステム (OS) を用いて、Windowsのファイルサーバやプリントサービス、ドメインコントローラ機能、ドメイン参加機能を提供する。1)
出典:1) “Samba。” https://ja.wikipedia.org/wiki/Samba, (参照2025-03-28)
事前準備
管理者権限でコマンドを実行できるようにする。
最新のパッケージ情報を取得して更新する。
既存のパッケージを更新する。
作業
Sambaのインストール
サービスの起動状態を確認
共有ディレクトリを作成する
ネットワーク上から認証不要でフルアクセスできるようにする。
誰もが読み書きできるように権限を設定する。
設定ファイルのバックアップ
やらかした事
設定ファイルのバックアップまで完了し設定ファイルの編集を行っていたところでうまくいかず一旦
状況を先輩社員に連絡したところやばいことやっているからすべてやり直しと言われました。
具体的に良くないことをやっていたのは下記2点になります。
1. 「su」 を使ってアップデートやインストールしていたこと
私は参考にしていた記事の通りに 「su」 を使って
「apt update」 や 「apt install」 を実行していました。
「suを使うのがまずい」とも「sudoを使うべき」とも知らず、
「とりあえず記事の通りにやれば動くはず」と思って手を動かしていた形です。
ですが、先輩社員からは次のように指摘されました:
「su」 でパッケージをインストールすると 一般ユーザーで操作できなくなることがある。
これはどういったことか深堀していきたいと思います。
suコマンドはユーザーrootに切り替えるだけで無く、その他のユーザーに切り替えることもできます。
特にユーザー名を指定しない場合は、デフォルトでrootユーザーに切り替わるため、
「su=rootになるコマンド」と思われがちですが、正しくは任意のユーザーに切り替えるためのなコマンドになります。
Linuxの世界ではrootは唯一神のような「なんでもできる権限」を持っているため他のユーザのパスワードを変更したり、システムファイルのパーミッションを書き換えることもできます。
そして先輩社員が言っていた「一般ユーザーで操作できなくなる」というのはァイルの所有者がrootになってしまうことで他の一般ユーザでは書き込みや編集ができなくなるということだったのかと理解しました。
正しくはどうすればよかったのか?
Linuxの基本的な運用では、普段は一般ユーザーとして作業し、下記のように必要な場面だけsudoで一時的に管理者権限を使うのが鉄則とのことです。
sudo apt update
sudo apt install samba
「sudo」 と 「su」 の違いまとめ
コマンド | 読み方 | 意味 | 特徴・使いどころ |
---|---|---|---|
「sudo」 | スードゥー | 特定の1コマンドだけを一時的に管理者権限で実行 | セキュリティが高く、推奨されるやり方 |
「su」 | エスユー、スー | 別ユーザー(通常はroot)に完全に切り替える | ずっとroot状態になるため、ミスのリスクが高く注意が必要 |
2. 「chmod 777」 を使ってしまったこと
こちらも、参考にしていた記事をそのままなぞっていた中で、
chmod 777 /media/shared
というコマンドを実行していました。
正直このコマンドが何をしているのかはわからず、
「とりあえず必要だから打つものなんだな」という認識で進めていました。
しかし先輩社員からはこう注意されました:
chmod 777
は やってはいけない
仮に俺のサーバーでchmod777をやったら〇〇してやるw
〇〇の内容はここでは言えませんが、chmod 777はそれぐらいやってはいけないことなんだと気づきました。
そもそも777のような3つ数字が並んでいるものがどのような意味を表すかわかっていないのでそこから調べたいと思います。
chmodの「777」ってどういう意味?
chmod は「ファイルやディレクトリに対するアクセス権限(パーミッション)を設定するコマンド」です。
その数字には、それぞれ誰にどんな操作を許可するかという情報が含まれています。
「777」の3つの数字はそれぞれ誰の権限?
chmod 777 /media/shared
この「777」の数字は、それぞれ次の3つのユーザーに対応しています。
桁の位置 | 対象 | 例の「7」の意味 |
---|---|---|
1桁目 | 所有者 | 読み・書き・実行すべて許可 |
2桁目 | グループ | 読み・書き・実行すべて許可 |
3桁目 | その他全員 | 読み・書き・実行すべて許可 |
つまり「777」は、誰でもなんでもできてしまう状態になります。
「7」ってどういう意味?
各数字は、読み(r)・書き(w)・実行(x) の3つの権限を表すビットを合計したものです。
権限 | 値 | 意味 |
---|---|---|
r | 4 | 読み取り |
w | 2 | 書き込み |
x | 1 | 実行 |
したがって、7 = 4 + 2 + 1 = rwx という意味になります。 |
正しくはどうすればよかったのか?
結論から言うと下記のようにするべきでした。
chmod 755 /some/file
対象 | 数字 | パーミッション | 意味 |
---|---|---|---|
所有者 | 7 | rwx | 読み・書き・実行すべて許可 |
グループ | 5 | r-x | 読み・実行OK、書き込みは不可 |
その他ユーザー | 5 | r-x | 読み・実行OK、書き込みは不可 |
まとめ・学んだこと
今回、Hyper-V上に構築したUbuntu仮想マシンで、はじめてファイルサーバを立てる作業に取り組みました。
Sambaというソフトウェアの存在を知り、結果的にミスをしておりましたが、インストールからバックアップの設定まで操作できたのは大きな経験になりました。
しかし同時に、「su」で作業していたことや「chmod 777」を使ってしまい、権限問題やセキュリティ的にいかに危険な行為か身をもって学ぶことができました。
今回のファイルサーバ構築は単なる「Linux操作の練習」ではなく、セキュリティやシステム管理の基本を学ぶ絶好の題材だったと感じます。
今後も手を動かしながら、学び続けたいと思います。
参考資料
今回のブログ記事作成にあたり、以下の資料を参考にしました:
- Linux rootユーザーとは - エンジニアの入り口
- パーミッションとは? - Koan Academy
- su【コマンド】 - IT用語辞典
- Switch Users on Linux with the su Command - GeeksforGeeks
- suコマンドで特権ユーザーになる - LinuC公式コラム
Discussion