UbuntuのUser Managementを色々試してみる
こんにちは、技術部のfです。
以前、RHEL6、7におけるパスワードの設定を色々試してみましたが、
今回はUbuntuのUser Managementの記事の内容を色々試してみようと思います。
Ubuntu公式のドキュメントはこちらになります。
利用環境は以下の通りです。
# cat /etc/issue Ubuntu 20.04.1 LTS \n \l
まず、中項目の Adding and Deleting Users について。
Ubuntuや他のDebianベースのディストリビューションでは
アカウント管理にadduserパッケージの使用を推奨している、とあります。
ただ、CentOS環境の場合だと、そもそもuseraddとadduserの違いを
意識することはあまりないかと思います。
下記はCentOS8環境での実行結果ですが、adduserはシンボリックリンクが貼られており、
実体はuseraddとなっていました。
# which adduser useradd | xargs ls -l lrwxrwxrwx 1 root root 7 11月 9 2019 /usr/sbin/adduser -> useradd -rwxr-xr-x 1 root root 241752 11月 9 2019 /usr/sbin/useradd
ちなみにCentOS7や、先日EOLを迎えたCentOS6でも上記と同様の結果が返ってきます。
その為、CentOS環境ではuseradd、adduserどちらでも実行結果は変わらないことになります。
次に、Ubuntu環境でも同様にそれぞれのコマンドのファイルをlsで見てみます。
# which adduser useradd | xargs ls -l -rwxr-xr-x 1 root root 37785 Apr 16 2020 /usr/sbin/adduser -rwxr-xr-x 1 root root 147160 May 28 2020 /usr/sbin/useradd
CentOSとは違い、シンボリックリンクは貼られておらず、
ファイルサイズも異なっています。
では、実際にUbuntu環境でuseraddを実行し、作成したユーザに切り替えてみます。
# useradd test01 # su - test01 su: warning: cannot change directory to /home/test01: No such file or directory $
作成したユーザに切り替えようとしたところ、ホームディレクトリが存在しないとの
警告が出てしまいました。
manコマンドでuseraddのDESCRIPTIONの項目を見てみると、オプションによっては
新しいユーザのホームディレクトリを作成する、とあります。
-m、もしくは–create-homeオプションを指定することでホームディレクトリも
作成してくれるようなので、今度は-mを指定してuseraddを実行してみます。
# useradd -m test02 # ls -A /home/test02 .bash_logout .bashrc .profile
ホームディレクトリが作成されており、/etc/skel ディレクトリ内のファイルもコピーされています。
useraddには-Mというオプションもあり、これは/etc/login.defsで
CREATE_HOMEがyesに設定されていた場合でも
ホームディレクトリを作成しないようにする為のオプションとあります。
つまり、逆にuseraddでホームディレクトリをデフォルトで作成するようにしたい場合は、
/etc/login.defsで設定をしておけば良いということになりますね。
ということで実際に/etc/login.defsに追記してみます。
# vi /etc/login.defs CREATE_HOME yes
この状態で、useraddでユーザを作成すると
-mオプションを指定せずともホームディレクトリが作成されるようになりました。
# useradd test03 # ls -A /home/test03 .bash_logout .bashrc .profile
次にadduserでユーザを作成してみます。
# adduser test04 Adding usertest04' ... Adding new group
test04' (1005) … Adding new usertest04' (1005) with group
test04' … Creating home directory/home/test04' ... Copying files from
/etc/skel' … New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: password updated successfully Changing the user information for test04 Enter the new value, or press ENTER for the default Full Name []: Full_Name Room Number []: Room_Number Work Phone []: Work_Phone Home Phone []: Home_Phone Other []: Other Is the information correct? [Y/n] Y
上記のように、パスワードとユーザ情報(Full NameからOtherの箇所)を
対話形式で設定することができます。
ちなみに今回は簡単なパスワードを入力している為、「BAD PASSWORD」として
警告メッセージが出力されていますが、設定自体は問題なくできました。
/etc/passwd を見ると、ユーザ情報はコメントとして記録されているようです。
もちろん空欄の状態でも登録できます。
# grep test04 /etc/passwd test04:x:1005:1005:Full_Name,Room_Number,Work_Phone,Home_Phone,Other:/home/test04:/bin/bash
ただ、パスワードを一緒に設定してくれるのはいいけど、
ユーザ情報の設定はいらない…という時、5回もENTERキーを押すのは正直面倒くさいです。
manのマニュアルを見ると、このユーザ情報は–gecosオプションで指定することができるようです。
adduser will copy files from SKEL into the home directory and prompt for finger (gecos) information and a password. The gecos may also be set with the --gecos option.
下記のように–gecosオプションで空欄(ダブルクォーテーションで括るだけ)を
指定して実行してみます。
# adduser --gecos "" test05 Adding usertest05' ... Adding new group
test05' (1006) … Adding new usertest05' (1006) with group
test05' … Creating home directory/home/test05' ... Copying files from
/etc/skel' … New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: password updated successfully # grep test05 /etc/passwd test05:x:1006:1006:,,,:/home/test05:/bin/bash
これだと、設定するパスワードの入力のみ求められ、ユーザ情報の入力は必要ありませんでした。
特にこれらの情報を入力する必要がない時は、このオプションを指定すると
少し楽になりますね。
ちなみに、useraddで作成したユーザのログインシェルはデフォルトで/bin/shですが、
adduserの場合は/bin/bashとなっています。CentOS系のデフォルトは/bin/bashです。
# grep "test0[15]" /etc/passwd test01:x:1002:1002::/home/test01:/bin/sh test05:x:1006:1006:,,,:/home/test05:/bin/bash
useraddは-Dオプションを指定するとデフォルト値を表示することができ、
更に-sを指定するとログインシェルのデフォルト値を変更することができます。
# useradd -D -s /bin/bash # useradd -D | grep -i shell SHELL=/bin/bash
ユーザ作成だけで思った以上の量になってしまいました。
Password Policyあたりの内容はまた今度の機会にでも。
それではまた。