急に仕事でLinuxを使うことになった
私はSEになるまで「Linux」という存在を知りませんでした。それどころか、「OS」という概念すら曖昧でした。そんななか、いきなり作業でLinuxを扱うことになりました。コマンドとかファイル名が曖昧でも、途中まで入力した状態で[Tab]キーを押下すれば続きを補完してくれますが、そもそも使いたいコマンドが出てこないなんてことも。そこで、忘れがちなLinuxのコマンドを以下にまとめておきます。
よく忘れがちなLinuxコマンド一覧
■ ファイル検索
Windowsならエクスプローラー内の検索ボックスからファイル名を入れて検索したり、MacならFinderでファイル検索ができますが、Linuxの場合はコマンドで検索します。
$ locate mydoc.txt
$ find / -name mydoc.txt
findとlocateの違い
locateはlinuxに作られるファイルやディレクトリ名の一覧を格納したDBから検索してくるので高速。ただその反面、高速化のために名前のみを検索対象としており、ファイルサイズやファイルの所有者でフィルターして検索することはできないし、直前に追加されたファイルやディレクトリは検索できないことがある。
findはlocateに比べると検索速度は遅いが、日時とかサイズとか正規表現とかいろんなオプションがつけられる。また、「minimal」など最小限のISOイメージでLinuxをインストールした場合にはlocateがデフォルトで入っていない場合があるが、findは最初から使える。
■ ファイル、ディレクトリ名の変更
mvコマンドはWindowsでいうcdと同様、カレントディレクトリを移動することができますが、ファイル名やディレクトリ名を変更することもできます。
ファイル名の変更
$ mv oldname newname
ディレクトリ名の変更
$mv oldname/ newname/
■ ファイルやフォルダの権限付与
テスト中なんかは特にいろんな権限から動作確認をすると思いますので、覚えておくと便利なコマンドです。
ファイルの所有権変更
# chown hogeuser file1
ファイル名「file1」の所有者をhogeuserに設定する
フォルダの所有権変更
# chown -R hogeuser フォルダのパス
心の中でチョウンって読んでしまうこのコマンド。。
■ 現在のディレクトリを表示
カレントディレクトリのフルパスを取得するためのコマンドです。
$ pwd
Print Working Directory の略で、その名前の通り現在のディレクトリの絶対パスを取得します。cdやlsとともによく使うコマンドの一つですね。
■ sudoコマンド、suコマンド
sudo:一時的に別ユーザーで実行する
sudoコマンドは、一時的に他ユーザーで実行したい場合に使うコマンドです。だいたいは管理者権限で操作したいときに使いますが、他ユーザーで実行したい場合には「$sudo -u [ユーザー名] [コマンド]」とユーザー名を引数に追加すればOKです。
# sudoでlsコマンドを実行(管理者権限でしか見れないファイルを含むファイル一覧を表示)
$sudo ls
#sudoでパッケージをインストール
$sudo apt-get update
このコマンド実行時にパスワード入力を求められますが、自分自身のパスワードを入力します。(※sudoersファイルに実行するユーザーが追加されている必要あり)sudoで実行したコマンドは全て履歴に残ります。
su:別ユーザーにスイッチする
「su」というのはコマンドのひとつで、ユーザーを切り替えるコマンドになります。「substitute user」の略で、このコマンドを実行すると以降は切り替えたユーザーで実行されます。
$su username
このコマンド実行時にパスワード入力を求められますが、切り替え先のユーザーのパスワードを入力します。suコマンドで実行したコマンドは履歴に残りません。
(非推奨)sudo su
sudo suコマンドを実行すると、現在ログインしているユーザーのパスワードを使用して、別ユーザーにスイッチすることができます。
$ sudo su
このコマンドは「抜け穴」「邪道」なんて言われることもあります。
そう言われる所以は実行する際のパスワード入力にあります。sudoコマンドは現在実行しているユーザーのパスワードを入力すれば実行できますが、suは切り替え先のユーザーのパスワードを知らないと本来は実行できません。ただ、「sudo su」と実行することで、sudoコマンドでsuが実行できてしまうのです。
しかし、このコマンドは基本的に使用しないほうがいいです。suコマンドはユーザー切り替えなのでそれ以降のログが残りません(切り替え・切り替え終了のログしか残らない)。sudoコマンドであれば、/var/log/secure にsudoコマンドの実行履歴が残るため、万が一問題が発生したときに原因を探りやすくなります。
とはいえ、sudo suを使わないよう徹底するというのにも限界があるかと思います。(私も仕事でlinuxを触っていたときは「いちいちsudoを頭につけるのが面倒だから」という理由でsudo su を使っていました。)問題が発生するのを防ぐために、システムファイルや設定ファイル、ネットワーク設定などの運用上変更されると問題が起こりうるファイルやディレクトリに利用制限をかけておくと良いでしょう。
コメント