はじめに
Linuxの「ユーザー管理」と「権限設定」について実践的に学習する過程で、WSL (Ubuntu) 環境において複数のエラーに遭遇しました。本記事では、新規ユーザーの作成からファイル権限の検証までの手順と、その過程で発生した問題およびその解決方法を記録します。
同様の環境でLinux学習を始められる方の参考になれば幸いです。
検証環境
- OS: Windows 11
- WSL: Ubuntu 22.04 LTS
- メインユーザー: myuser(sudo権限あり)
- テストユーザー: testuser(一般ユーザー)
目的
本検証の目的は以下の通りです。
- メインユーザー(
myuser)が作成したファイルに対し、別ユーザー(testuser)が削除操作を試みる - 適切な権限設定により、
Permission deniedエラーが発生することを確認する - Linuxのファイル権限機構が正常に機能していることを実証する
発生した問題と解決手順
問題1: ユーザー名の命名規則エラー
事象
WSL初回セットアップ時、ユーザー名として数字始まりの文字列を入力したところ、以下のエラーが発生しました。
Create a default Unix user account: 1808
Invalid username. A valid username must start with a lowercase letter...
原因
Linuxにおけるユーザー名の命名規則では、先頭文字は小文字のアルファベットまたはアンダースコアである必要があります。
解決策
命名規則に従い、小文字のアルファベットで始まるユーザー名を使用しました。
問題2: suコマンドでの認証失敗
事象
テストユーザーを作成後、ユーザー切り替えを試みましたが認証エラーが発生しました。
# ユーザー作成
sudo useradd testuser
sudo passwd testuser
# ユーザー切り替え試行
myuser@ishikawa:~$ su - testuser
Password:
su: Authentication failure
原因
su コマンド実行時に、誤って現在のユーザー(myuser)のパスワードを入力していました。su コマンドでは、切り替え先ユーザーのパスワード入力が必要です。
解決策
切り替え先ユーザー(testuser)に設定したパスワードを正しく入力することで解決しました。
補足:パスワードを忘れた場合、sudo権限を持つユーザーから sudo passwd [ユーザー名] で再設定が可能です。
問題3: ホームディレクトリ不在によるエラー
事象
ユーザー切り替えには成功したものの、複数のエラーメッセージが表示されました。
su: warning: cannot change directory to /home/testuser: No such file or directory
-bash: dircolors: command not found
-bash: lesspipe: command not found
-bash: command_not_found_handle: function definition error
bash: /home/testuser/.bashrc: No such file or directory
$
原因
useradd コマンドのデフォルト動作では、ホームディレクトリが自動作成されない場合があります。その結果、以下の問題が発生していました。
- ホームディレクトリの不在
- シェル設定ファイル(
.bashrc等)の欠如 - プロンプト表示の簡略化(
$のみ)
解決策
ホームディレクトリを手動で作成し、適切な所有者を設定しました。
# メインユーザーに戻る
exit
# ホームディレクトリの作成
sudo mkdir /home/testuser
# 所有者の設定
sudo chown testuser:testuser /home/testuser
問題4: シェル設定ファイルの不在
事象
ホームディレクトリのエラーは解消されましたが、プロンプト表示が依然として $ のままでした。
原因
ホームディレクトリは作成されたものの、内部にシェル設定ファイル(.bashrc、.profile 等)が存在せず、適切なプロンプト表示がなされていませんでした。
解決策
システムのテンプレートディレクトリ(/etc/skel)から設定ファイルをコピーし、所有者を再設定しました。
# 設定ファイルのコピー(隠しファイルを含む)
sudo cp -a /etc/skel/. /home/testuser/
# 所有者の再帰的設定
sudo chown -R testuser:testuser /home/testuser
この操作により、testuser@ishikawa:~$ という標準的なプロンプトが表示されるようになりました。
問題5: コマンド構文エラー
事象
メインユーザーが作成したファイルの削除を試みたところ、想定外のエラーが発生しました。
testuser@ishikawa:~$ rm/home/myuser/testfile.txt
-bash: rm/home/myuser/testfile.txt: No such file or directory
原因
rm コマンドとファイルパスの間にスペースが欠落しており、シェルが rm/home/myuser/testfile.txt という存在しないコマンドを実行しようとしていました。
解決策
正しい構文でコマンドを実行しました。
testuser@ishikawa:~$ rm /home/myuser/testfile.txt
rm: cannot remove '/home/myuser/testfile.txt': Permission denied
この結果、期待していた Permission denied エラーが表示され、ファイル権限が正常に機能していることが確認できました。
学習成果
本検証を通じて、以下の知識を実践的に学びました。
-
ユーザー管理の基礎:
useraddコマンドの動作とオプション - ホームディレクトリの役割:ユーザー環境におけるホームディレクトリの重要性
-
シェル設定の仕組み:
/etc/skelの用途と設定ファイルの継承 -
所有者・権限の概念:
chownによる所有者変更とファイル権限 - コマンド構文の重要性:適切なスペース配置の必要性
改善提案
今回の経験から、初回から以下のコマンドを使用することで、多くの問題を回避できることがわかりました。
# -m: ホームディレクトリの自動作成
# -s: ログインシェルの指定
sudo useradd -m -s /bin/bash testuser
sudo passwd testuser
このオプション指定により、ホームディレクトリと設定ファイルが自動的に適切に配置されます。
まとめ
実際の操作を通じてエラーに遭遇し、その原因を調査し解決する過程は、ドキュメントを読むだけでは得られない貴重な学習機会となりました。本記事が同様の環境でLinuxを学習される方の一助となれば幸いです。