檢視所有使用者/組
cat /etc/passwd
cat /etc/group
新增使用者
useradd 選項 使用者名稱
-d:自定義使用者的家目錄,即指定使用者登入預設的家目錄
-e:指定帳號的有效期限
-g:指定使用者所屬的主組
-G:指定使用者所屬的附加群組
-m:自動建立使用者的登入目錄,系統預設會建立一個和使用者名稱一樣的家目錄(預設選項)
-M:不建立使用者家目錄
-s:指定使用者登入後所使用的shell是哪種shell
-u:指定使用者ID號,預設系統會自動分配一個ID給使用者
-r:指定該使用者為系統賬戶
# 簡單的新增使用者,會自動建立home目錄
useradd sqrtcat
# 自定義 home 目錄
useradd -d /home/sqrtcat_home sqrtcat
# 指定使用者組 wheel 為 sudoer 使用者組
useradd -m -g wheel sqrtcat
# 禁止一切登入的賬戶
useradd -M -s /bin/false nginx
# 禁止ssh登入但可以ftp/sftp的賬戶
useradd -M -s /sbin/nologin ftp_user
刪除使用者
# 刪除使用者 但保留了home目錄等相關資訊
userdel sqrtcat
# 此命令執行後對應這些檔案裡與被刪除使用者相關資訊也一併刪除
# /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/home、/var/spool/mail
userdel -r sqrtcat
設定/更新使用者密碼
# 更改當前使用者密碼
passwd
# 更改指定使用者密碼
passwd sqrtcat
更改使用者屬性
usermod 選項 使用者名稱
# 更改使用者所屬主組
usermod -g wheel sqrtcat
# 更改使用者的附加組(注意會覆蓋現有的附加組)
usermod -G wheel sqrtcat
# 為使用者追加附加組(會在現有的附加組上繼續追加)
usermod -aG wheel sqrtcat
為使用者增加sudo許可權
root
檢視 /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
# 這裡表明 wheel group 中的使用者 可以使用密碼獲取 root 許可權
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# 這裡表明 wheel group 中的使用者 不使用密碼就可以獲取 root 許可權
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
所以想要使用者活動 sudo 許可權,我們只需將其加入對用的使用者組即可
# 將 sqrtcat 加入 wheel sudoer使用者組 使其可以使用自己的密碼執行 sudo 命令
usermod -aG wheel sqrtcat
sqrtcat
使用者
# 切換至 root 不載入root使用者的環境變數
sudo su root
# 切換至 root 載入root使用者的環境變數
sudo su - root
檢視線上使用者
# 當前登入了伺服器的線上使用者
users
使用者組相關
usermod -g 主組名 使用者名稱 #更改主組
usermod -G 附加組名 使用者名稱 #更改附加組
usermod -aG 附加組名 使用者名稱 #追加附加組
gpasswd -a 使用者名稱 附加組名 #增加附加組
gpasswd -d 使用者名稱 附加組名 #退出附加組
# 檢視當前使用者的所屬組
groups
# 檢視指定使用者的所屬組
groups sqrtcat
# 增加使用者組
groupadd foo
# 刪除使用者組(有使用者以此組作為主組時不可刪除,附加組時可以刪除)
groupdel foo
# sqrtcat 退出附加組 wheel
gpasswd -d sqrtcat wheel
# 正在將使用者“sqrtcat”從“wheel”組中刪除
# sqrtcat 加入附加組 wheel
gpasswd -a sqrtcat wheel
# 正在將使用者“sqrtcat”加入到“wheel”組中
# 如果想要更改使用者的主組,必須使用 usermod -g
刪除使用者組時,要保證無使用者以此組為主組(-g),但可以有做為附加組(-G)的使用者
# 會自動建立 foo組 並作為 foo使用者 的主組
useradd foo
groups foo
foo: foo
# 無法刪除 有使用者以 foo 為主組
groupdel foo
# 更改 foo使用者 的主組為 bar
groupadd bar
usermod -g bar foo
groups foo
foo: bar
# foo組 作為附加組
usermod -G foo foo
groups foo
foo: bar foo
# 可以成功刪除 foo組
groupdel foo
檢視使用者組下的使用者
檢視使用者組 foo 下有哪些使用者
getent group foo
sudo su / su 的區別
- 使用者如果是
sudoer
,那麼執行sudo su - root
時只需要輸入自己的密碼,就可以切換至root
使用者。當然,切換至其他使用者
時也是輸入自己的密碼
。。 - 使用者如果不是
sudoer
,則無許可權執行sudo
命令,只能透過su - root
來嘗試切換至root
使用者,且要求輸入root
使用者密碼。當然,切換至其他使用者
時也要輸入其他使用者的密碼
。
切換至某使用者並使用指定shell執行命令
切換至 foo 使用者,並使用 php 作為執行 shell,-- 後面追加執行的命令,然後退出。
su -s "$(which php)" foo -- -r "echo 'hello foo';"
相當於
su foo
$(which php) -r "echo 'hello foo'"
exit