useradd命令基礎
- useradd 用來創建用戶帳號
- 通過 passwd 設定帳號的密碼
- userdel 刪除用戶帳號所有信息
- useradd 創建的用戶信息,保存在 /etc/passwd 文件
用法:useradd [選項] 登錄
useradd -D
useradd -D [選項]
選項:
-b, --base-dir BASE_DIR 新賬戶的主目錄的基目錄
-c, --comment COMMENT 新賬戶的 GECOS 字段
-d, --home-dir HOME_DIR 新賬戶的家目錄
-D, --defaults 顯示或更改默認的 useradd 配置
-e, --expiredate EXPIRE_DATE 新賬戶的過期日期
-f, --inactive INACTIVE 新賬戶的密碼不活動期
-g, --gid GROUP 新賬戶主組的名稱或 ID
-G, --groups GROUPS 新賬戶的附加組列表
-h, --help 顯示此幫助信息並推出
-k, --skel SKEL_DIR 使用此目錄作爲骨架目錄
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值
-l, --no-log-init 不要將此用戶添加到最近登錄和登錄失敗數據庫
-m, --create-home 創建用戶的主目錄
-M, --no-create-home 不創建用戶的主目錄
-N, --no-user-group 不創建同名的組
-o, --non-unique 允許使用重複的 UID 創建用戶
-p, --password PASSWORD 加密後的新賬戶密碼
-r, --system 創建一個系統賬戶
-R, --root CHROOT_DIR chroot 到的目錄
-s, --shell SHELL 新賬戶的登錄 shell
-u, --uid UID 新賬戶的用戶 ID
-U, --user-group 創建與用戶同名的組
-Z, --selinux-user SEUSER 爲 SELinux 用戶映射使用指定 SEUSER
命令行管理用戶
- 添加用戶
useradd [參數] 用戶名
1、默認設置
# useradd redhat
# tail -n1 /etc/passwd
redhat:x:1001:1001::/home/redhat:/bin/bash
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
2、指定用戶家目錄
# mkdir /data/
# useradd -d /data/centos/ centos
# tail -n1 /etc/passwd
centos:x:1002:1002::/data/centos:/bin/bash
# id centos
uid=1002(centos) gid=1002(centos) groups=1002(centos)
3、指定用戶家目錄、用戶組(一定是已經存在的用戶組!)
# cat /etc/group | grep users ## 查看已存在的 users 用戶組
users:x:100:
# useradd -d /data/ubuntu/ -g users ubuntu
# tail -n1 /etc/passwd
ubuntu:x:1003:100::/data/ubuntu/:/bin/bash
# id ubuntu
uid=1003(ubuntu) gid=100(users) groups=100(users)
## 常用的參數
-u 指定用戶uid
-g 指定用戶初始組信息,這個組必須已經存在
-G 指定附加組,這個組必須存在
-c 用戶說明
-d 用戶家目錄
-s 用戶所使用的shell,/etc/shells記錄了用戶能使用shell的名
- 刪除用戶
userdel -r 用戶名 ## -r 表示刪除用戶信息及用戶的系統配置
# userdel -r centos
- 用戶信息更改
(5) 用戶信息更改
usermod 參數 用戶
-l # 更改用戶名稱
-u # 更改uid
-g # 更改gid
-G # 更改附加組
-aG # 添加附加組
-c # 更改說明
-d # 更改家目錄指定
-md # 更改家目錄指定及家目錄名稱
-s # 更改shell
-L # 凍結帳號
-U # 解鎖
## 更改用戶redhat的家目錄
# usermod -d /data/redhat redhat
## 更改用戶redhat的用戶組
# usermod -g users redhat
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
# usermod -l redhat02 redhat # 更改用戶名redhat爲redhat02
# id redhat
id: redhat: no such user
# id redhat02
uid=1001(redhat02) gid=1001(redhat) groups=1001(redhat)
- 用戶權限下放
在系統中超級用戶可以下放普通用戶不能執行的操作命令給普通用戶
超級用戶執行 visudo 進入編輯 /etc/sudoers模式
格式: 用戶 用戶所在的主機名 =(下放權限的用戶身份) 命令
## 查看主機名
[root@server2 ~]# hostname
server2
## 新增用戶hadoop
# useradd hadoop -d /data/hadoop -g users
## 設置密碼
# passwd hadoop
## 超級用戶root 執行 visudo
[root@server2 ~]# visudo
## 找到第 90 行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## 在其後添加(可以執行yum,kill,killall,並且不需要輸入用戶密碼)
## Allow hadoop to run any commands anywhere
hadoop server2=(root) NOPASSWD:/usr/bin/yum, /bin/kill,/usr/bin/kill, /usr/bin/killall
hadoop用戶能在server2主機內以超級用戶身份執行 NOPASSWD執行 yum,kill,killall命令,並且不用輸入該用戶密碼
下放權限前後對比
腳本自動化創建用戶
[root@server2 ~]# vim useraddSRE.sh
#!/bin/sh
## default setting
user='kafka'
group='users'
dir='/data/'
homedir=$dir$user
password=$user'@redhat'
## add the account
useradd -d $homedir -g $group $user >/dev/null
## modify the validity period of the account and password
chage -M 99999 $user
echo $user:$password | chpasswd >/dev/null
## create a directory and change its permissions
[ ! -d $homedir ] && mkdir $homedir
chown -R $user:$group $homedir >/dev/null
chmod -R 755 $homedir >/dev/null
cd $homedir
chage用法
chage命令 是用來修改帳號和密碼的有效期限
chage [選項] 用戶
用法:chage [選項] 用戶
選項:
-d, --lastday 最近日期 將最近一次密碼設置時間設爲“最近日期”
-E, --expiredate 過期日期 將帳戶過期時間設爲“過期日期”
-h, --help 顯示此幫助信息並推出
-I, --inactive INACITVE 過期 INACTIVE 天數後,設定密碼爲失效狀態
-l, --list 顯示帳戶設置信息
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設爲“最小天數”
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設爲“最大天數”
-R, --root CHROOT_DIR chroot 到的目錄
-W, --warndays 警告天數 將過期警告天數設爲“警告天數”
/etc/login.defs 默認設定了幾個參數,以後設置口令可以按照此文件的參數設定爲準
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
也可以在/etc/default/useradd可以找到如下2個參數進行設置
## useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
通過修改配置文件,能對之後新建用戶起作用,而目前系統已經存在的用戶,則直接用chage來配置。
[root@server2 ~]# chage -l kafka
舉例! 設置密碼過期7天后,密碼自動失效,該用戶將無法登陸系統。
[root@server2 ~]# chage -M 60 kafka ## 設置密碼最大過期時間爲60天
[root@server2 ~]# chage -I 7 kafka ## 設置密碼失效時間爲7天
[root@server2 ~]# chage -l kafka ## 查看設置信息
文件的擁有屬性
- chgrp 改變文件或目錄的用戶組
# chgrp -R root /data/kafka/
- chown 改變文件或目錄的擁有者
# chown -R root /data/kafka/
- 同時改變文件或目錄的擁有者和用戶組
# chown kafka.users /data/kafka/
# chown root:root /data/kafka/