例如,如果我要執行命令adduser test
,.bashrc 是否在為使用者建立主目錄時自動建立test
?如果不是在使用者創建時創建,那麼在什麼條件下創建?
另外,如果我將 .bashrc 檔案新增到使用者的主目錄中,它會被作業系統覆蓋嗎?
提前致謝。
答案1
在大多數情況下,初始使用者檔案(包括.bashrc
)是在建立使用者時建立的。它們是儲存在「骨架」目錄中的檔案的副本,名為/etc/skel
.主要有兩個指令:
useradd
是後端命令,如果直接使用它(不帶任何選項),只會建立一個系統使用者(及其群組):$ sudo useradd new-user $ ls -la /home/new-user/ ls: cannot access '/home/new-user/': No such file or directory
useradd
/etc/skel
如果-m
--create-home
提供了該選項,將建立一個主目錄並用 的副本填滿它。感謝這則評論至@jwodder。此選項
-s
--shell
將變更新使用者的登入 shell 的名稱。無論新使用者的登入 shell 是什麼,「骨架」目錄的全部內容/etc/skel
都會填入新使用者的主目錄中。可以使用該選項定義不同的“骨架”目錄
-k
--create-home
。該命令的設定檔為
/etc/default/useradd
.
adduser
是用戶友好且互動的前端useradd
。預設情況下,此命令會將檔案複製/etc/skel
到使用者目錄:$HOME
$ sudo adduser new-user Adding user `new-user' ... Adding new group `new-user' (1002) ... Adding new user `new-user' (1002) with group `new-user' ... Creating home directory `/home/new-user' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for new-user Enter the new value, or press ENTER for the default Full Name []: New User Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] $ ls -a /home/new-user/ . .. .bash_logout .bashrc .config examples.desktop .profile .Xdefaults
該命令的設定檔為
/etc/adduser.conf
.新使用者登入 shell 的預設值由變數 決定
DSHELL=
。也可以透過選項指定--shell
。無論新使用者的登入 shell 是什麼,「骨架」目錄的全部內容/etc/skel
都會填入新使用者的主目錄中。該檔案中的變數
SKEL=
指定包含「骨架」使用者檔案的預設目錄。此選項
--no-create-home
將強制命令adduser
不建立使用者主目錄,相應地,「骨架」目錄的內容將不會被複製。如果使用一個非選項參數和
--system
選項調用,adduser
將會新增一個系統使用者...主目錄的建立規則與普通使用者相同。新系統使用者將擁有 shell/bin/false
(除非使用該--shell
選項覆蓋),並停用登入。不複製骨架設定檔。 ……來自手冊頁。
此外,當使用任何 GUI 工具建立使用者時User Accounts
,結果與命令的結果相同adduser
。
參考: