gabuLog

趣味と考え事をつらつらと

グループの登録・削除

グループとは

ユーザの一群のこと。グループに分けておくと、色々一括で設定ができる。

ユーザは必ず一つ以上のグループに所属する。ユーザには1次グループを1つ割り当てる必要があり、2次グループは任意。

ユーザが所属するグループはgroupsコマンドで表示できる。

※以下記事の「グループ」の項目にて記載。

gabu-00.hatenablog.com

groupaddコマンド

groupadd [-g グループID] [グループ名]

新しくグループの登録をするには、groupaddコマンドを使用する。

-gオプションを使用しない場合は、現在使用されている最大値+1が設定される。

新しいグループのエントリは/etc/group//etc/gshadowファイルの最終行に追加される。

groupaddコマンドの実行例

groupaddコマンドの実行例

groupdelコマンド

groupdel [グループ名]

グループの削除。

groupdelコマンドの実行例

groupdelコマンドの実行例

まとめ

グループの変更については、usermodコマンドを使用して変更します。

今回の記事はグループの新規登録と削除のみに焦点を置いています。

ユーザの登録・変更・削除

ユーザの情報

ユーザの情報は/etc配下にある、passwd、shadow、group、gshadow、これらのファイルに記載されている。

passwdファイルの内容

ユーザのパスワードが格納されている。

システムのユーザであれば、誰でも確認可能。

/etc/passwdには6つの「:」で区切られた7つのフィールドから構成される行が追加される。

passwdのフィールド

passwdのフィールド

第1フィールド:ログイン名

第2フィールド:xまたは暗号化パスワード:ユーザID(shadowを使う場合は「x」、使わない場合は「暗号化パスワード」)

第3フィールド:ユーザID

第4フィールド:グループID

第5フィールド:コメント

第6フィールド:ホームディレクト

第7フィールド:ログインシェル

shadowファイルの内容

シャドウパスワードの仕組みで利用されている。

シャドウパスワードとはパスワードのデータを一般ユーザから見えないようにするための仕組み。

shadowファイルの内容確認

shadowファイルの内容確認

第1フィールド:ログイン名

第2フィールド:暗号化されたパスワード

第3フィールド:パスワードの変更最終日

第4フィールド:変更可能最短期間

第5フィールド:未変更可能最長期間

第6フィールド:未変更時警告日

第7フィールド:ログインしない場合に無効になる日数

第8フィールド:アカウントが失効になるまでの日数

第9フィールド:フラグ

useraddコマンド

useradd [オプション] [ユーザ名]

 
オプション 説明
-c コメント コメントの指定
-d ディレクトリパス ホームディレクトリの指定
-e 失効日 アカウント失効日の指定。

フォーマット:YYY-MM-DD(2022-12-31)

-f 日数 パスワードが失効してからアカウントが使えなくなるまでの日数
-g groupID 1次グループの指定
-G groupID 2次グループの指定
-k skel skelディレクトリの指定
-m ホームディレクトリを作成する。

/etc/login.defsで設定されていればなしでも作られる。

-M ホームディレクトリを作成しない。
-s シェルのパス ログインシェルの設定
-u UIDの指定 UIDの指定
-D デフォルト値の表示あるいは設定

新規ユーザを登録するには管理者が実行する必要がある。

オプションなしに実行した場合、/etc/default/useraddに記載されている設定が適応される。

/etc/default/useraddファイルの項目一覧
項目 説明
GROUP  
HOME 指定されたディレクトリの下にユーザ名のディレクトリを作成し、ホームディレクトリとする。
INACTIVE パスワードが失効してからアカウントが使えなくなるまでの日数。「-1」は無期限の意味。
EXPIRE アカウント失効日。値がない場合は無期限。
SHELL ログインシェル
SKEL 新規ユーザのホームディレクトリのテンプレート。/etc/skelのコピーが新規ユーザのホームディレクトリに作成される。
CREATE_MAIL_SPOOL /var/spool/mail/に新規ユーザ用のメール保存ファイルが作成される。

useraddコマンドの実行例

useraddコマンドの実行例

また、/etc/skelディレクトリ配下にあるファイルとディレクトリはuseraddコマンドを実行した時に自動的にユーザのホームディレクトリにコピーされる。

skelフォルダの内容確認

skelフォルダの内容確認

passwdコマンド

passwd [オプション] [ユーザ名]

passwdコマンドのオプション
オプション 説明 ユーザ
-d パスワードを期限切れにする

期限切れにされたユーザは次回ログイン時にパスワードの設定が必要

一般ユーザ・root
-e パスワードを削除 root
-i 日数 パスワードの有効期限が切れてから使用不能になるまでの日数を指定 root
-l ユーザのアカウントをロック root
-n 日数 パスワード変更が可能になる最小日数を指定 root
-u ユーザのアカウントロックを解除 root
-w 日数 パスワードの期限切れになる何日前から警告文を出すか指定 root
-x 日数 パスワード変更の最大日数を指定 root

パスワードの設定をするコマンド。

rootはユーザ名を指定してパスワードを変更することができるが、一般ユーザは自分のパスワードのみ。

passwdコマンドの実行例

passwdコマンドの実行例

userdelコマンド

userdel [オプション] [ユーザ名]

オプションrを付けて実行するとホームディレクトリも同時に削除する。

デフォルト実行すると/etc/passwd/etc/shadowのエントリのみ削除されホームディレクトリは削除されない。

usermodコマンド

usermod [オプション] [ユーザ名]

usermodコマンドのオプション
オプション 説明
-l 名前 ログイン名の変更
-d ホームディレクトリのパス ホームディレクトリの変更
-g groupID 1次グループの変更
-G 2次グループの変更
-s シェルのパス ログインシェルの変更

ユーザ情報を変更するためのコマンド。

usermod -l 新ログイン名 旧ログイン名 とすることでログイン名の変更可能。

まとめ

ユーザの登録・変更・削除の方法について記載しました。

パスワードの管理も重要なことなので管理者はこんなのあったなぐらいに覚えていれば、引き出すことができるかもしれません。

viエディタでファイル編集

概要

viはBlii Joy氏が開発したUNIX標準のテキスト編集用のエディタ。

viエディタを用いると、ファイルの作成・削除を行うことが可能。

Linuxではviエディタの昨日を拡張したVimが提供されていて、最近のRedHatディストリビューションではviはvimの最小構成パッケージあるいはvimエイリアスとして提供されている。

モード

viエディタは3つのモードを切り替えて作業を行う。

viエディタのモード
モード 説明
コマンドモード カーソルの移動、文字や行の削除、コピー、貼り付けなどが行える。このモードがデフォルト。
入力モード(インサートモード) 文字の入力が行える。
ラストラインモード 文章の保存、検索や文字列の置換が行える。

コマンドモード

カーソルの移動、スクロール、文字のコピーや貼り付けなどを行う。

コマンドモードの表示例

コマンドモードの表示例
カーソルの移動
viエディタのカーソル移動のコマンド
コマンド 説明
h ← カーソルを左に1文字移動
j ↓ カーソルを下に1文字移動
k ↑ カーソルを上に1文字移動
l → カーソルを右に1文字移動
0 カーソル行の先頭へ移動
$ カーソル行の末尾へ移動
G 最終行へ移動
nG n行目へ移動
画面のスクロール
画面スクロール
コマンド 説明
ctrl+b 前画面に1画面スクロール
ctrl+f 次画面に1画面スクロール

 

文字の編集

コマンドモードで文字を挿入すること無く、コピーや削除を行える。

文字・単語・行の削除
コマンド 説明
x 1文字削除
nx カーソルから右にn文字削除
dd カーソル行を削除
ndd カーソルからn行削除
dw カーソルから次の単語を削除

(単語は空白があるまでの文字列)

D カーソルから行の最後まで削除
dG カーソル行から最終行まで削除
dH 1行目からカーソル行まで削除

 

文字・単語・行のコピーとペースト
用途 コマンド 説明
コピー yl 1文字のコピー
yw 単語のコピー
yy カーソル行のコピー
nyy カーソル行からn行目までコピー
y0 行頭からカーソルの直前までのコピー
y$ カーソルの位置から行末までのコピー
ペースト P 行のコピーをしている場合は、カーソルの上の行に貼り付け

文字、単語をコピーしている場合は、カーソルの左に貼り付け

p 行のコピーをしている場合は、カーソルの下の行に貼り付け

文字、単語をコピーしている場合は、カーソルの右に貼り付け

 

入力モード(インサートモード)

ファイル内に文字を入力することができる。

インサートモードの表示例

インサートモードの表示例
インサートモードの切替方法

インサートモードにはコマンドモードからコマンドを入力することで切り替えることができる。

インサートモードに切り替えるコマンド
コマンド 説明
i カーソルの前に文字を挿入
a カーソルの後に文字を挿入
o カーソル行の下に新しい行を作成し、文字を挿入
I iと同じ
A aと同じ
O oと同じ

ラストラインモード

テキストの保存や終了、文字列の置換と検索を行える。

ラストラインモードの表示例

同じラストラインモードの表示例
ファイルの保存・終了
ファイルの保存・終了に関するコマンド
用途 コマンド 説明
保存 :w ファイル名を変更せずにそのまま保存
:w! ファイル名を変更せずに強制的に保存
:w ファイル名 ファイル名を変更して保存(もしくは新規保存)
終了 :q ファイルを保存せずに終了
:q! ファイルを保存せずに強制的に終了
保存して終了 :wq ファイルを保存して終了
:wq! 強制的にファイルを保存して終了
:wq ファイル名 ファイル名を指定して保存して終了
その他 :! コマンド viから抜けずにコマンドを実行
:e! 編集内容を破棄し、ファイルを再読込する
文字列の検索
文字列を検索するコマンド
コマンド 意味
/文字列 現在のカーソル位置からファイルの末尾に向かって検索
?文字列 現在のカーソル位置からファイルの先頭に向かって検索
n 次の検索
N 前の検索

 

その他の編集に便利なコマンド

ちょっとした便利なコマンド

編集に便利なコマンド
コマンド 説明
u 最後に実行した編集の取消
. 最後に実行した編集の繰り返し
~ カーソル上の文字を大文字・小文字切り替える

viエディタの設定

viエディタには、有効になっていない便利なオプション機能が備わっている。

オプションを設定したり、初期設定を変更したりすることができる。

オプション機能の設定コマンド
コマンド 説明
:set オプション オプション機能の設定
:set no オプション オプション機能の解除

 

オプション機能
オプション 設定
number 行番号を表示
ignorecase 大文字小文字を区別しない
list タブや行末文字等通常表示されていない文字を表示
all 全てのオプションを表示

viでオプションの実行例

viでオプションの実行例

まとめ

viエディタを利用する場合は、今どういうモードなのかを理解していないと思いもしない操作で混乱することがあります。

また、コマンドやオプションなども多々存在するためよくあるコマンドだけ理解して使い慣れるようにしたほうが良いかもしれません。

モードの遷移とコマンドの種類について理解して使うようにしましょう。

コマンドとファイルの検索

概要

LinuxにはファイルやLinuxのコマンドについて検索したりすることが多くある。

検索一つをとってもいろいろな検索があるので用途に応じた検索を行うようにしよう。

findコマンド

find [パス] [式]

findコマンドの主な式
説明
-name 指定したファイル名で検索
-type ファイルの種類で検索

d(ディレクトリ)、f(通常ファイル)、l(シンボリックファイル)

-size 指定したブロックサイズで検索
-atime

指定した日時を基に、最終アクセスがあったファイルを検索

+数値(数値以上前)、数値(数値の指定)、-数値(数値以内)

-mtime 指定した日時を基に、最終更新されたファイルを検索
-print 検索結果を標準出力
-exec command \: 検索後、コマンドを実行

指定したディレクトリ配下で、指定した検索条件に合致するファイルを検索する。式を活用して様々な条件を指定できる。

デフォルト実行するとカレントディレクトリが設定されている。

findコマンドの実行例①

findコマンドの実行例①

findコマンドの実行例②

findコマンドの実行例②

findコマンドの実行例③

findコマンドの実行例③

locateコマンド

locate [オプション] [パターン]

locateコマンドのプション
オプション 意味
-d パス データベースの位置を指定
-r 正規表現を使って検索
-c 検索された数を表示
-e 現在、存在するファイルやディレクトリのみを検索

findコマンドと同様にファイルの検索を行う。

ファイル名・ディレクトリの一覧のデータベースを使用して、インデックス検索を行っているため高速で検索できる。

しかし、データベースには日単位で更新されるためすぐに反映されるわけではない。更新されるまでは検索対象からは外れる。

locateコマンドは引数にメタキャラクタを使用でき、正規表現を用いて検索をすることができる。

また、メタキャラクタを含まない文字列だけの検索をした場合、検索した文字列を含むファイル名およびディレクトリを全て表示する。

locateコマンドの実行例

locateコマンドの実行例

updatedbコマンド

updatedb [オプション] [パス]

updateコマンドのオプション
オプション 説明
-e データベースのファイルの一覧に取り込まないディレクトリパスを指定
-o 更新対象のデータベース名を指定。独自に作成したデータベースを指定したい場合に使用

データベースの更新を行う。

引数なしで実行した場合は/etc/updatedb.confに記載されているデータベースのパスを参照し更新する。

updatedbコマンドの実行結果

updatedbコマンドの実行結果

updatedbコマンドを実行したらlocateコマンドで検索できるようになっている。

更新されたことが確認できる。

whichコマンド

which [オプション] [コマンド名]

whichコマンドのオプション
オプション 説明
-a 最初に見つかったものだけでなく、環境変数PATHに合致したものを全て表示
-i 標準入力からエイリアスを読み込み、合致したものを表示

whichコマンドの実行例

whichコマンドの実行例

指定されたコマンドがどのディレクトリに格納されているか確認する。

whichコマンドで表示されないのは、内部コマンドのためである。表示されるのは外部コマンドのみである。

whereisコマンド

whereis [オプション] [コマンド名]

whereisコマンドのオプション
オプション 説明
-b バイナリの場所を表示
-m マニュアルの場所を表示
-s ソースファイルの場所を表示

指定されたコマンドのバイナリ、ソース、マニュアルページの場所を表示する。

whereisコマンドの実行例

whereisコマンドの実行例

まとめ

パイプとか一緒に使って、検索すると活用しやすいので覚えておこう。

【ネタバレあり】よふかしのうた【1話】

ただの考察と感想をつらつら書いていきます。不快に感じられた方には申し訳ございません。

概要

女子が苦手な中学2年生の夜守コウ。普通に学園生活を過ごしていたが、とあるきっかけで不登校生活に。さらに、夜は寝れない日々を過ごしている。

ある日の夜中に初めて誰にも気づかれないように外にでたコウは、夜中独特の雰囲気の中で自由さを感じ、自分の居場所を見つけた。

そこに謎の女、七草ナズナが現れる。

ナズナはコウを連れ出し夜の街に繰り出し、夜の楽しさを教えるのである。ナズナに連れられて行き着いた先はナズナの家。

一緒に寝ようと誘われ、寝てみるとなんと首元に口を近づけ血を吸ったのである。ナズナは吸血鬼だった。

しかし、血を吸われたのに吸血鬼にならないことに疑問を感じるコウ。吸血鬼にするには条件「好きになること」だった。

「好き」という感情を知りたいコウは吸血鬼になりたがる。

そんな二人の恋愛?ストーリーが始まる。

感想

opとed

opとed両方「creepy nuts」さんが担当。

歌詞が今後の布石になっているのかちょっとだけ興味深い。

ストーリー

同級生との恋愛事情が原因のいざこざが面倒くさく感じて不登校。なんか違和感。学校に行くことは嫌になるかもしれないが、不登校にまで発展するものなのか?

夜中誰にも言わず勝手に一人で外に出たコウ。夜中は自由で自分の居場所を見つけたといっているが、無理に笑ってみせたりしていて『本当にそこがコウが居たい場所なのか?』と疑問に感じた。

親ともなにか確執があるのか、ふいに来たメールに「外に出たことを親にバレたかも!?」と焦っている様子だが、違ったことに落胆しているようにも見えた。

親がコウに無関心なのか、親に心配してもらいたくて外に出たようにも見える。

コウの悩みごとは2つ?

  • 好きとか付き合うということが分からない。
  • つまらない日々を過ごしたくない。

好きという感情を理解したいのはわかるが急につまらない日々を過ごしたいと言い出したのは疑問。好きになるという感情を知ればつまらない日々を抜け出せるということなのか。

七草ナズナの第一印象はト◯ちゃん(ヒロアカ)似だなぁ。

かわいいのとエロいのが混在している。

心配事や悩みから切り離して快楽へと導こうとする姿が印象的。

なぜコウに目をつけたのか謎。誰彼構わず声かけて居たのが偶々コウだったのか?

作画

中学生の主人公が感じる世界とは全く違う大人の世界を感じる描写が印象的。

ホテルに色は妖艶さを感じる紫色やピンクに類した色を多く使って、昼からは想像できない夜の世界を感じる。

まとめ

恋愛ストーリーっぽいけど日常と非日常が混在していて感情移入しづらい。

これは私の恋愛経験の少ない私の問題なのだろうか。。。

コウの問題解決ストーリーになるのかナズナちゃんかわいい!エロい!になるのか。

リンクについて

概要

ファイルの実体にファイル名をつなぐことをリンクといい、シンボリックリンクハードリンクの2種類がある。

シンボリックリンク

windowsのショートカット、Macだとエイリアスと同じ。

ファイルやディレクトリを別の場所から参照するために、別名をつけてリンクとして別の場所に作成するためにシンボリックリンクを作成する。

ハードリンク

linuxでは全てのファイルはinodeと呼ばれるファイルシステム上で一意のデータを参照する。

inodeとはファイルやディレクトリの所有者や更新日時、ファイルサイズなどの属性情報が書かれているデータ。

ディスク上でデータに対して一意なinodeが存在し、それに対して必ず1つのハードリンクが存在する。

なので、ファイル、ディレクトリが作成された時に少なくとも1つのinodeとハードリンクでつながる。

別途ハードリンクを作成する場合、一つのデータに複数のハードリンクで参照するファイルやディレクトリが存在する。

ハードリンクはinodeを参照する。

シンボリックリンクとハードリンクの違い

シンボリックリンクは元データが削除・移動されるとシンボリックリンクが無効になる。ディレクトリに対しても作成可能。

ハードリンクは元データが削除・移動されても参照先がinodeなのでハードリンクの参照が消えるわけではない。

lnコマンド

ln -s [ファイル名] [リンク名]

シンボリックリンクの作成。

ln -s コマンドの実行例

ln -s コマンドの実行例

元データが削除されると、参照できない。

シンボリックリンクの元データ削除された場合

シンボリックリンクの元データ削除された場合

ln [ファイル名] [リンク名]

ハードリンクの作成。

ln -liコマンド実行時、先頭にあるのがinode番号。

同じになっていることが確認できる。

lnコマンドの実行例

lnコマンドの実行例

元データを削除した場合でも、作成したハードリンクを参照できる。

ハードリンクの元データを削除した場合

ハードリンクの元データを削除した場合

まとめ

リンクの作成方法と違いについて、記載しました。

使用用途についてはわからないので、これから理解していきたいです。

パーミッション

概要

ファイルやディレクトリのアクセス制御を行う。

グループ

ユーザは、必ず一つ以上のグループに所属しなければならない。

グループには1次グループ2次グループがあり、ユーザは必ず1次グループに所属しなければならない。2次グループは任意。

1次グループはログインした直後に割り当てられているグループ。

id

ユーザとグループには識別するためにユーザID(uid)とグループID(gid)が割当らてる。

groupsコマンド

groups [ユーザ名]

groupsコマンドの実行例

groupsコマンドの実行例

idコマンド

id [オプション] [ユーザ名]

idコマンドの実行例

idコマンドの実行例

パーミッション

「誰に」、「どの操作」を許可するのかを設定すること。

パーミッションを調べるにはls -lコマンドで確認できる。

パーミッションの表示例

パーミッションの表示例

パミッションなどの項目説明図

パミッションなどの項目説明図
ファイルの種類
種類 説明
- 通常ファイル
d ディレクト
l シンボリックリンク

 

パーミッションはアクセス権限でそのファイルやディレクトリに対して、操作権限を管理している。

アクセス権限の種類
アクセス権 説明
r 読み込み可能
w 書き込み可能
x 実行可能
- 権限なし

chmodコマンド

chmod [オプション] [モード] [ファイル名]

既存のファイルやディレクトリに設定されているパーミッションをchmodコマンドで変更できる。

モードにはシンボリックモードとオクタルモードの2種類がある。

シンボリックモード

文字や記号を用いてパーミッションを変更する。

chmod ユーザ名① 操作② パーミッション③ ファイル名

u 所有者
g グループ
o その他
a 全てのユーザ
+ 権限の追加
- 権限の削除
= 権限をそれのみの設定
r 読み取り
w 書き込み
x 実行

chmodコマンドの実行例

chmodコマンドのシンボリックモード実行例

オクタルモード

8進数の数値を組み合わせて権限の変更する。

オクタルモードで使用する数値
数値 パーミッション
4 書き込み
2 読み込み
1 実行
0 権限なし

書き込みと読み込みを同時に2つ権限を付与したい場合は4+2で6を指定すると、2つの権限が付与される。

chmodコマンドのオクタルモード実行例

chmodコマンドのオクタルモード実行例

umask値

ファイルやディレクトリを新規作成した時にデフォルトでパーミッションに設定される。

それを決定しているのはシェルに設定されたumask値。

割り当てたくないパーミッションを指定している。

umaskコマンド

umask [値]


現在設定されているumask値を確認したり、変更したりする。

umaskコマンドの実行例

umaskコマンドの実行例

chownコマンド

chown [オプション] [ユーザ名[.グループ名]] [ファイル名|ディレクトリ]

指定されたファイルやディレクトリの所有者を変更できる。

ルートユーザのみがこのコマンドを使用できる。

chownコマンドの実行例

chownコマンドの実行例

chgrpコマンド

chgrp [オプション] [グループ名] [ファイル名|ディレクトリ]

グループのみの変更を行う。

chgrpコマンドの実行例

chgrpコマンドの実行例

sudoコマンド

root [オプション] [ユーザ名] [コマンド]

管理者権限を持たないユーザが管理者権限が必要な特定のコマンドを実行するために一時的に管理者権限を付与する。(※管理者であるが一部は制限される。)

sudoコマンドは/etc/sudoersを参照してユーザがコマンドの実行権限を持っているかどうかを判定する。特定のコマンドを特定にユーザに使用許可・拒否させたい場合も/etc/sudoersを編集する。

 

まとめ

操作させても良いユーザやグループを正しく把握・設定する必要が有ります。