それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

/etc/passwd を編集しても反映しなかった。→ usermod を使う

/etc/passwd を手で編集した。

なぜだかわからない。反映しない。手作業で編集は駄目だと思ったけどshellや home dir や gid をマトメて編集できるから、もう直接手で触ればいいやとおもったけど反映しない。

home_dir を変更しても反映しない。。。再起動が必要だった。

シンタックスエラーはなかった

編集後にチェックして特にエラーがないことを確認

sudo pwck

専用コマンドを使うほうが無難だと思われる

ユーザーを操作するのは、専用コマンドを使ったほうが無難だと思う。

  • vipw
  • vipw -s
  • chsh
  • chfn
  • usermod
  • pwck

usermod であれこれ変更

usermod が便利なのでパターンとして覚えておくほうがいい

ホームディレクトリを変更

ホームディレクトリを別の場所に作り直す

usermod -d /var/home/takuya takuya

ホームディレクトリを移動

現在のホームディレクトリを指定の場所に移動させる。次からは指定の場所を使う。

usermod  -m -d /var/home/takuya takuya

シェルの変更

デフォルトシェルの変更。これはchsh でも出来る

usermod -s /bin/false takuya

ユーザーをロックする

ロックしてログインできなくする。

usermod -L takuya 

ユーザーをアンロックする

ロックしたユーザーを解除する

usermod -U takuya 

ユーザ名を変更する

ユーザ名を変更すると //home` も変更しないとログイン後にホームディレクトリが見つからないなどの問題が出てくるので注意

usermod -l takuya_1st takuya

設定の反映

ログイン中は設定が反映しないので、一旦ログアウトする必要がある。

/etc/{passwd,shadow}が間違ってないか

シンタックスエラーや記述ミスをチェックする

sudo pwck

/etc/passwd を編集する

sudo -e /etc/passwd はどうもうまく動かない*1なので vipw を使う

sudo vipw

参考資料

  • man usermod
       usermod  コマンドは、 コマンドライン上での指定によって、 システムアカウントファイルを修正する。 usermod コマン
       ドに指定できるオプションは次の通り。

       -c comment
              パスワードファイルのコメントフィールドに与える新しい値。 通常は chfn(1)  ユーティリティによって変更され
              る。

       -d home_dir
              新しいログインディレクトリ。 -m オプションを用いると、 現在のホームディレクトリの中身が新しいホームディ
              レクトリに移動される (後者が存在しない場合は新たに作成される)。

       -e expire_date
              そのユーザアカウントが使用不能になる日付。 日付は YYYY-MM-DD という書式で指定する。

       -f inactive_days
              パスワードの使用期限が切れてからアカウントが永久に使用不能になるまでの日数。 0 にすると、  パスワードの
              期限が切れると同時にこのアカウントは使用不能になる。   -1  にするとこの機能が無効になる。デフォルト値は
              -1。

       -g initial_group

              新たにそのユーザのログイン時初期グループとするグループ名または ID。  グループ名は既に存在していなければ
              ならない。 グループ番号は既存のグループを参照していなければならない。 デフォルトのグループ番号は 1。

       -G group,[...]
              ユーザが属する補助グループ (supplementary groups) のリスト。 グループはコンマで区切り、間に空白文字を入
              れてはならない。 指定できるグループには -g オプションと同様の制限がある。 現在そのユーザが、 新しいリス
              トにないグループのメンバーになっている場合は、 そのグループから削除される。

       -l login_name
              ユーザのログイン名を login から login_name に変更する。 他は何も変更しないので、 おそらく新しいログイン
              名に合わせて ホームディレクトリの名前を変更する必要があるだろう。

       -p passwd
              crypt(3) の返り値である暗号化パスワード。

       -s shell
              ユーザの新しいログインシェルの名前。 このフィールドを空白にした場合は、  システムがデフォルトのログイン
              シェルを選択する。

       -u uid ユーザの ID 番号。 この値は、-o オプションを用いる場合を除き、他と重複してはならない。 また非負値でなく
              てはならない。 0 から 999 までの値は、通常システムアカウント用に予約されている。 ホームディレクトリ以下
              の、 そのユーザ所有のすべてのファイルのユーザ ID は、 自動的に新しい値に変更される。 ホームディレクトリ
              以下にないファイルは手作業で変更しなければならない。

       -L     ユーザのパスワードをロックする。 これは暗号化されたパスワードの前に '!' を追加し、 実質的にパスワードを
              無効にする。 このオプションを -p や -U と同時に用いることはできない。

       -U     ユーザのパスワードをアンロックする。 これは暗号化されたパスワードの先頭の '!' を取り除く。 このオプショ
              ンを -p や -L と同時に用いることはできない。

*1: systemd になったあたりから、systemd 関係してる?