--- tags: Unix-like --- # User [TOC] ## 使用者身份切換 ### [`su`](https://linux.die.net/man/1/su) 切換使用者,會開啟一個新的 shell 環境。 ```shell $ su - <user> # Switches to user. $ sudo su - # Switches to root. ``` `-` 代表使用 [login-shell](http://linux.vbird.org/linux_basic/0320bash.php#settings_bashrc_shell) 的變數檔案讀取方式來登入系統。 `$` 代表一般使用者,`#` 代表 root。 #### 參考資料 * [使用者身份切換 - su / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_basic/0410accountmanager.php#su) ### [`sudo`](https://linux.die.net/man/8/sudo) 可以用來取得 root 或是其他帳號的權限,不過它在取得 root 或其他帳號權限的時候,是輸入自己的密碼,而不是 root 或其他帳號的密碼。 ```shell $ sudo <command> -u <user> -g <group> ``` #### [`/etc/sudoers`](https://linux.die.net/man/5/sudoers) 有被特別設定在 `/etc/sudoers` 的使用者或群組才能使用 `sudo` 指令,在不需要 root 密碼的情況下取得 root 權限。 > 使用 `visudo` 這個指令來編輯,系統會在編輯完成後自動檢查設定檔的語法是否正確,避免錯誤的語法導致 `sudo` 無法使用。 ``` 帳號名稱 來源主機=(可切換帳號) 可執行的指令 root ALL = (ALL) ALL %群組名稱 來源主機=(可切換帳號) 可執行的指令 %admin ALL = (ALL) ALL 不需要輸入密碼 %admin ALL=(ALL) NOPASSWD:ALL ``` #### 參考資料 * [使用者身份切換 - sudo / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_basic/0410accountmanager.php#sudo) ## 查詢使用者 ```shell $ w 23:13 up 158 days, 4:50, 2 users, load averages: 1.85 2.00 1.95 USER TTY FROM LOGIN@ IDLE WHAT catmao console - 10 419 158days - catmao s000 - 22:30 - w $ who [-T/--mesg] catmao console Apr 10 18:20 catmao ttys000 Sep 15 22:30 $ who am i catmao ttys000 Sep 15 22:30 $ last catmao ttys000 Sun Sep 15 22:30 still logged in catmao ttys000 Thu Sep 5 22:47 - 22:47 (00:00) ... $ id uid=501(catmao) gid=20(staff) groups=20(staff), ... ``` ### 參考資料 * [who / Linux man page](https://linux.die.net/man/1/who) ## UID | UID | Description | |---------|-------------| | 0 | 系統管理員 root | | 1-200 | 由 distributions 自行建立的系統帳號,如 bin、daemon、adm、nobody... | | 201-999 | 使用者有系統帳號需求時可以使用的帳號 | | 1000- | 一般可登入帳號 |  ### [`/etc/group`](https://linux.die.net/man/5/group) ``` group name : password : GID : user list staff : * : 20 : root ``` 每個使用者都可以擁有多個支援的群組,在 `/etc/passwd` 裡面的 GID 代表**初始群組 initial group**,`$ groups` 第一個出現的代表**有效群組 effective group**。 [`newgrp`](https://linux.die.net/man/1/newgrp) 以另一個 shell 登入,變更目前使用者的有效群組: ```shell $ newgrp [group] ``` ### [`/etc/passwd`](https://linux.die.net/man/5/passwd) ``` name : password : UID : GID : GECOS : directory : shell root : * : 0 : 0 : System Administrator : /var/root : /bin/sh ``` ### [`/etc/shadow`](https://linux.die.net/man/5/shadow) 固定的編碼系統產生的密碼長度必須一致,因此當欄位的長度改變後,該密碼就會失效。很多軟體透過這個特性,在此欄位前加上 ! 或 * 改變密碼欄位長度,讓密碼暫時失效。 ``` login name: 帳號名稱 encrypted password: 經過編碼加密的密碼 date of last password change: 最近更動密碼的日期,1970/1/1 相差的天數 minimum password age: 密碼不可被更動的天數 maximum password age: 密碼需要重新變更的天數 password warning period: 密碼需要變更期限前的警告天數 password inactivity period: 密碼失效日 account expiration date: 帳號失效日 reserved field: 保留 ``` ### 參考資料 * [Linux 的帳號與群組 / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_basic/0410accountmanager.php#account) ## 新增使用者 `useradd` 用來新增使用者。 > Mac 使用 [`dscl`](https://ss64.com/osx/dscl.html)。 `-u` :指定一個特定的 UID `-r` :建立一個系統的帳號,預設不會主動建立家目錄 `-g` :initial group 使用 useradd 建立了帳號之後,在預設的情況下,該帳號是暫時無法登入的,需要設置密碼。 `passwd` 設置密碼。 ## 使用者訊息傳遞 ### [`write`](https://linux.die.net/man/1/write) 可以用 `$ who -T` 來查詢 user、tty、可否**傳送訊息**等狀態。 ```shell $ write <user> <ttyname> Write something... ``` ### [`mesg`](https://linux.die.net/man/1/mesg) 可以透過 `mesg` 來**開關訊息**。 ```shell $ mesg <y|n> ``` ### [`wall`](https://linux.die.net/man/1/wall) **廣播**的方式對所有系統上面的使用者傳送,包括自己。 ```shell $ wall Write something...[Ctrl-D] ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up