Linux権限を完全マスター:管理者に必須の6つのコマンド
ある日、コマンドを一文字打ち間違えただけで、自分のファイルにアクセスできなくなったことがあります。これが初めてLinux環境を使えなくした経験であり、原因は「パーミッション」への理解不足でした。ターミナルを眺めながら、自分のシステム上でまるで部外者になったような気分だったのを今でも覚えています。この経験から学んだのは、Linuxにおいて「制御は与えられるものではなく、勝ち取るもの」ということです。
Linuxがファイルをどのように扱うか――誰が読み取り、書き込み、実行できるのか――をマスターすれば、あなたは本物のLinux管理者になれます。私が実際に使いこなしている権限関連コマンドの中から、特におすすめしたい6つを紹介します。
1. chmod
誰が読み取り・書き込み・実行できるかを制御する
あるスクリプトがどうしても実行されない理由を突き止めてから、chmodコマンドを使う頻度がぐっと増えました。すべてのLinuxファイルには「読み取り(r)」「書き込み(w)」「実行(x)」という権限レベルがあります。chmod +x スクリプト名を実行すれば、そのファイルはプログラムとして実行できるようになります。
chmodは数値での指定も可能です。chmod 755 ファイル名とすれば、所有者にはフルアクセス(rwx)、それ以外のユーザーには読み取りと実行(r-x)が与えられます。「Permission denied」のエラーに一度遭遇すれば、このコマンドは自然と指が覚えてしまうはずです。
プロジェクトディレクトリにスクリプトを設置するときは、chmod -R 755 フォルダ名を使います。ただし-Rオプションはディレクトリツリー内のすべてのファイルとフォルダに再帰的に適用されるため要注意です。755を再帰的に適用すると、通常のファイルにまで意図せず実行ビットが付いてしまうことがあります。
2. chown
管理者のようにファイルの所有権を取得する
ドライブ間でファイルをコピーした後、アクセスできなくなったときに救ってくれるのがchownです。ファイルやフォルダの所有権を変更することで、アクセス権に直接影響を与えます。基本の書式はsudo chown ユーザー名:グループ名 ファイル名です。
システムに関わる重要なデータを移動した後や、バックアップから復元した後などに必要になります。たとえばWebサーバー(Apache)にあるフォルダを読み込ませたい場合は、sudo chown -R www-data:www-data /path/to/projectのようにします。www-dataはApache Webサーバー専用のユーザー名兼グループ名です。
アドバイスとしては、特に再帰オプションを使う場面では慎重に。所有権を別のユーザーやrootに変更すると、元のユーザーがsudoなしではファイルを編集できなくなることがあります。
3. umask
新規ファイルのデフォルト権限を設定する
Linuxにおけるumaskは、新しいファイルやディレクトリがどんなアクセス権を引き継ぐかを決める仕組みです。Linuxは現在のumask値をもとに、ベース権限からどの権限をマスク(除去)するかを判断します。umaskコマンドを使えば、現在のセッションにおける設定を確認・変更できます。
一般的なデフォルト値は0022で、「グループ」と「その他」のユーザーから書き込み権限を取り除きます。umaskだけで現在の値を確認でき、umask 0027のように入力すれば現在のセッション限定で変更できます。これにより新規ファイルがより安全になり、他のユーザーやグループ外の人からのアクセスを自動的に遮断しやすくなります。
.bashrcなどの設定ファイルにカスタムumaskを記載しておけば、恒久的なプライバシーの基準線を作れます。このシンプルな調整ひとつで、共有環境のセキュリティが向上し、今後作成するすべてのスクリプトやログに安全なデフォルトが自動適用されます。
4. sudoers
管理者権限を安全に付与・制限する
sudoersファイルの編集に成功してはじめて「真のLinux管理者になれた」と語る人もいます。/etc/sudoersファイルは、誰がsudo権限を持ち、どのコマンドを実行できるかを決定します。私は必ずsudo visudoで編集するようにしています。構文エラーによる締め出しを防ぐためです。
Linux Mintで別のユーザーに管理者権限を与えるなら、sudo usermod -aG sudo ユーザー名を使います。ファイルの手動編集よりはるかにクリーンで安全ですが、高度な設定ではコマンド単位の細かい権限指定が必要になる場合もあります。
なお、ディストリビューションによってはsudo以外のグループ名(Fedoraの「wheel」など)が使われる点に注意してください。
Linuxの堅牢なセキュリティモデルゆえ、sudoersファイルの編集は慎重に行いましょう。誤った記述ひとつでrootアクセスを失う可能性がありますが、正しく使えば管理タスクを見事に自動化できます。
5. groups
自分が属するアクセスグループを確認する
Linuxのグループは、何にアクセスできるかを定義し、システム階層の中で自分がどこに位置するのかを教えてくれます。たとえばgroups afamを実行するとafam sudo adm lpのように返り、自分が管理者権限を持つユーザーであり、プリンタにもアクセスできることが分かります。
新しいプロジェクトに参加する際は、sudo usermod -aG project afamのように対象グループへ追加してもらうだけで状況が大きく変わります。チームメイトと同じようにスクリプトを実行したりファイルを編集したりでき、各コマンドごとにsudoする必要がなくなります。
Dockerや仮想マシンの設定時にもgroupsコマンドをよく使います。デーモンの実行やハードウェアデバイスへのアクセスに必要な権限を自分のユーザーへ付与するためです。このコマンドを理解していれば、ワークフローが滑らかになり、権限由来のつまずきも大幅に減らせます。
6. id
システムに対して自分の正体を確認する
idコマンドは、システムにとって自分が誰なのかを表示します。権限を修正する前にまず押さえておきたい情報です。単にidを実行すれば、ユーザーID(UID)、グループID(GID)、所属する全グループの一覧が表示されます。ユーザータイプを直接判定するわけではありませんが、UIDから主要な4種類のLinuxユーザータイプのどれに該当するかを推測できます。
アクセス問題のデバッグ時に頼りになるコマンドです。共有フォルダが開けないとき、idで自分のユーザーが所有者やグループと一致しているかを確認すれば、「permission denied」がアイデンティティの問題なのか権限設定の問題なのかを切り分けられます。
-uや-gフラグと組み合わせると、ファイルの所有状況をより精密に把握できます。-uは数値のユーザーID、-gはグループIDを表示します。地味なコマンドに見えますが、行き詰まったときこそ、自分の正体を知ることが解決への近道になるのです。
ユーザーから管理者へ:本当の意味での「制御」はここから始まる
Linuxを離れてWindowsへ戻る人を目にしてきた中で、Linux権限への理解不足が摩擦の一因だったケースは少なくありません。今回紹介したコマンドはすべて、「システムがあなたをどう見ているか」「あなたにどんな操作権があるか」を明らかにするものです。「Permission denied」エラーは想像以上によく出会うため、これらのコマンドはLinuxにおいて非常に重要です。
もうLinuxに怯える必要はありません。ほぼ絶対的なコントロールを手に戻せるこのエコシステムで、思い通りの運用を楽しんでください。
-
Linux Live KitでカスタムLive Linuxディストリビューションを作成する方法
「Linux」という言葉を聞くと、技術者以外の人はすぐに敬遠してしまうかもしれません。しかし、デスクトップLinuxは現在、WindowsやmacOSといった大手OSにほぼ匹敵するレベルに達しています。 Canonicalなどの組織によるサポートと、数十年にわたるコミュニティの努力のおかげで、今日ではUbuntu Linuxなどをダウンロードすれば、コンピュータサイエンスの学位がなくても、Windowsでできることのほとんどを実現できます。最新のデスクトップLinuxディストリビューションは見た目も美しく、動作も安定しており、一般ユーザーにも十分使えるものになっています。 しかし、商用オペレ
-
GNOME Shell拡張機能のアップデートを通知する「Extension Update Notifier」の使い方
GNOME Shellの大きな魅力のひとつは、拡張機能(エクステンション)を使ってデスクトップの機能を手軽に拡張できる点です。これまでの記事でも、特におすすめの拡張機能をいくつか紹介してきました。しかし意外と見落とされがちなのが、インストール済みの拡張機能をどうやって更新するのか、そして更新があったときにどう通知を受け取るのかという点です。 ディストリビューションのパッケージマネージャー経由で拡張機能をインストールした場合は、システムのアップデートと一緒に更新が配信されます。ところが、GNOME Extensionsの公式サイトからインストールした場合、インストール済みの拡張機能に更新がある