Linuxにユーザーを追加する


## linuxにユーザーを追加

ユーザの定義は`/etc/passwd`に定義があるが、セキュリティ的に直接編集はしない！

|コマンド||
|---|---|
|useradd|追加|
|usermod|変更|
|userdel|削除|
|passwd|ログイン用パスワード|

|コマンド|オプション|
|---|---|
|-c|コメント(文字列) を変更します。|
|-g|プライマリグループ名を変更します。グループ名は/etc/groupファイルで定義したグループ名です。|
|-G|セカンダリーグループを変更します。(複数選択可)|
|-d|既存のユーザ名を変更します。|
|-u|ユーザID 番号を変更します。|

```
[root@suzuki ~]# useradd owl
[root@suzuki ~]# ls /home
owl
[root@suzuki ~]# ls /home/owl/
 -> owlユーザーのhomeディレクトリ
[root@suzuki ~]# tail /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
owl:x:500:500::/home/owl:/bin/bash
```
->500(ユーザーID):500(アカウントID):(コメント):homeディレクトリ:使用するshell

`/etc/passwd`の中にはユーザーのパスワードは格納されてなく、セキュリティ上、ハッシュ化した後、`/etc/shadow`に格納されている

### ユーザーIDを指定してuseraddする
`[root@suzuki ~]# useradd -g users -u 1001 penguin`
-g グループを指定
-u ユーザーIDを指定(指定しない場合は自動振り分け)

```
[root@suzuki ~]# grep penguin /etc/passwd
penguin:x:1001:100::/home/penguin:/bin/bash
```

### usermodでコメントを追加する

```
[root@suzuki ~]# usermod -c "Linux Professional Institute Certification" penguin
[root@suzuki ~]# grep penguin /etc/passwd
penguin:x:1001:100:Linux Professional Institute Certification:/home/penguin:/bin/bash
```

### userdelでユーザーを削除する
-rオプションでhomeディレクトリごと削除
`[root@suzuki ~]# userdel -r owl`

### パスワードの設定

```
[root@suzuki ~]# passwd penguin
ユーザー penguin のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
```
-> sshでpenguinユーザーのログインが可能になります

### suコマンド
サブユーザーは使える部分が限られているので、yum install等ができないため、一時的にrootユーザーになることができる

結局rootのパスワードを入力しなくてはいけない・・


```
[penguin@suzuki ~]$ su -
パスワード:
[root@suzuki ~]#
```

### sudoコマンド
あるコマンドをroot権限で動かすようにするコマンド(suよりよく使う！)

#### 追加ユーザーがsudoを使えるようにする設定

ルートでwheelグループに追加する

```
[root@suzuki ~]# usermod -G wheel penguin
[root@suzuki ~]# grep wheel /etc/group
wheel:x:10:penguin
```

`/etc/sudoers`を編集(直接編集はよくないので`visudo`を使用)
105行目のコメントアウトを削除

```
104 ## Allows people in group wheel to run all commands
105 # %wheel        ALL=(ALL)       ALL
```
ペンギンユーザーでログインし、sudo時もペンギンユーザーのpassで実行できる

```
[penguin@suzuki ~]$ sudo tail -n 1 /etc/shadow
[sudo] password for penguin:
penguin:$6$hRMVvsj3$UG0D50o5Cl95oP68DiTd.FRX7xyv8zZfGLsWxFnAAIelAnekwNL5/
GkiSQ8wIsbokxgKDC6ZYZbYNtSTumY.D1:16231:0:99999:7:::
```

### 所有者の変更

```
[penguin@suzuki ~]$ touch user
[penguin@suzuki ~]$ ls -l user
-rw-r--r--. 1 penguin users 0  6月 10 16:38 2014 user
// 権限. 所有者 所有グループ
[penguin@suzuki ~]$ sudo chown nobody user // 所有者の変更
[sudo] password for penguin:
[penguin@suzuki ~]$ ls -la user
-rw-r--r--. 1 nobody users 0  6月 10 16:38 2014 user
```

-Rオプションをつけると、すべての所有者を変更

### 所有グループの変更

```
[penguin@suzuki ~]$ chgrp nobody groups
chgrp: changing group of `groups': 許可されていない操作です
[penguin@suzuki ~]$ sudo chgrp nobody groups
[penguin@suzuki ~]$ ls -l groups
-rw-r--r--. 1 penguin nobody 0  6月 10 16:43 2014 groups
```

### 所有者と所有グループの同時変更

```
[penguin@suzuki ~]$ touch both
[penguin@suzuki ~]$ ls -l both
-rw-r--r--. 1 penguin users 0  6月 10 16:47 2014 both
[penguin@suzuki ~]$ sudo chown nobody:nobody both
[penguin@suzuki ~]$ ls -l both
-rw-r--r--. 1 nobody nobody 0  6月 10 16:47 2014 both
[penguin@suzuki ~]$
```

### ファイルとアクセス権
d rwx rwx rwx
ファイル種別, 所有ユーザー, 所有グループ, その他

|項目|内容|
|---|---|
|r|読み込み|
|w|書き込み|
|x|実行またはディレクトリの移動|

パーミッション

||ユーザー|グループ|その他|
|:---:|:---:|:---:|:---:|
|パーミッション|r w x|r w x|r w x|
|8進数|4 2 1|4 2 1|4 2 1|
|設定値|合計値|合計値|合計値|

#### chmodコマンド
現状の状態を変更したい場合はu+rw-xとか書いた方がいいが、元の状態に関わらず変更したいときは数字で指定する

```
[penguin@suzuki ~]$ touch chownfile
[penguin@suzuki ~]$ chmod u+rw-x,go+r-wx chownfile
[penguin@suzuki ~]$ ls -l chownfile
-rw-r--r--. 1 penguin users 0  6月 10 17:00 2014 chownfile
[penguin@suzuki ~]$ chmod 664 chownfile
[penguin@suzuki ~]$ ls -l chownfile
-rw-rw-r--. 1 penguin users 0  6月 10 17:00 2014 chownfile
[penguin@suzuki ~]$ chmod 266 chownfile
[penguin@suzuki ~]$ ls -l chownfile
--w-rw-rw-. 1 penguin users 0  6月 10 17:00 2014 chownfile
```