linux 使用者/組相關操作

big_cat發表於2023-01-31

檢視所有使用者/組

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 的區別

  1. 使用者如果是 sudoer,那麼執行 sudo su - root 時只需要輸入自己的密碼,就可以切換至 root 使用者。當然,切換至 其他使用者 時也是輸入 自己的密碼。。
  2. 使用者如果不是 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

相關文章