題 如何創建非登錄用戶?


我想創建一個名為的用戶和組 subversion 在RHEL 5系統上。我查看了手冊頁 useradd 我猜這個命令只是......

useradd subversion

但是,不確定如何避免創建家庭目錄。另外,我不希望它成為可以登錄系統的用戶。

主要目的是為SVN存儲庫提供所有者。


107
2017-12-02 00:47


起源


你真的看過useradd的man頁面並且沒找到-M(不創建HOME目錄)? - inemanja


答案:


你可以使用 -M 切換(確保它是一個大寫)以確保不會創建主目錄:

useradd -M subversion

然後鎖定帳戶以防止登錄:

usermod -L subversion

59
2017-12-02 00:58



這不是一個特別強烈的答案,通過這種方式創建的用戶仍然有一個shell。你甚至沒有警告OP,情況確實如此。回顧那將是 usermod -s /bin/false subversion或者 --shell /bin/false 至 useradd - Lee Hambley
@beak帳戶被鎖定,有一個shell是一個有爭議的點。 - John T
@beak實際上只有root用戶能夠su到鎖定的帳戶,但是如果這個人已經獲得root訪問權限,為什麼還要煩惱呢?當用戶可以運行時,設置shell並不會有太大作用 su -s /bin/bash username 繞過那個。 - John T
感謝您抽出寶貴時間進行討論,您當然是正確的;但是我很難看到定義了shell的非登錄用戶,它讓我感到懶惰,並且因為有人不熟悉這個系統,所以他們不會意外地做一些無意識的事情。黑客是一個不同的品種,如果他們已經在機器上有一個外殼,我認為它基本上是遊戲結束 - Lee Hambley
這些評論完全涵蓋了我希望學習的內容,感謝@Beaks && John T. - Rixius


useradd -r subversion

man useradd

-r, --system create a system account

-r標誌將創建一個系統用戶 - 一個沒有密碼的用戶,一個家庭用戶並且無法登錄。


180
2017-12-06 20:10



這個命令甚至會為用戶創建一個名為相同的組。所以“顛覆”用戶將在“顛覆”組中。非常適合以後你想做“sudo chown -R subversion:subversion / path / to / folder” - s3v1
只有-r我們仍然可以登錄。我們需要-s / bin / false來禁用用戶shell。 - c4il
@ c4il但唯一可以登錄的是root,對嗎?我的意思是,他們沒有密碼,所以我希望只有root才能登錄。 - Camilo Martin


另一種創建系統用戶的解決方案,使用 adduser

adduser --system --no-create-home --group yourusername

你可以刪除 --group 如果你不需要group yourusername,和 --no-create-home 如果你確實需要這個用戶的家。

正如py4on在評論中提到的,在一些系統上可能需要使用 --disabled-login 選項,以便,禁用此用戶的登錄。但它似乎是Debian下的默認行為。

請注意,用戶的數字ID將是系統帳戶。你可以使用。修復uid --uid 但是,選項。

最後,請注意某些系統(例如Fedora) adduser 是一個符號鏈接 useradd,在這種情況下,這個答案是無效的。


16
2018-03-01 20:04



要解決“我不希望它成為可以登錄的用戶”添加標誌 --disabled-login 以及(之前 yourusername) - py4on
@ py4on:雖然在聯機幫助頁中記錄了此選項,但它似乎是Debian下的默認選項。 - Skippy le Grand Gourou


對原始問題最乾淨的答案是運行命令:

adduser subversion --shell=/bin/false

如果您不想要主目錄:

adduser subversion --shell=/bin/false --no-create-home

或者,如果你想要一個更加鎖定的系統用戶(也不會創建一個主目錄)

adduser subversion --system --group

所有這些命令都將創建一個與用戶同名的組


10
2018-05-17 06:15





最安全的做法是使用 adduser 像這樣:

$ adduser -r -s /bin/nologin subversion

注意: 一定要包括 -s /sbin/nologin 禁用任何登錄shell可用於該帳戶。

確認設置

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

但是沒有目錄:

$ ll /home | grep subversion
$

確認該帳戶可以使用:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

切除

如果您需要刪除此帳戶:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

並確認:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$

8
2018-03-07 14:04



adduser無法識別-r選項。我認為你的意思是useradd。 - felwithe
@felwithe不,我寫的每個答案我總是在發帖前測試。我檢查了那個開關在CentOS 6.x系統上的顯示。 - slm
這裡有一個 pastebin的結果。我在使用Ubuntu 16 LTS。我不知道安裝了什麼版本的adduser,但我從未想過它會隨著時間的推移或系統到系統的變化。然後我用--system標誌嘗試了它,它為用戶創建了一個homedir(我不想要一個)。最後我用useradd而不是adduser來做它,它按計劃工作。所以我只是假設你錯誤地把它當作adduser,因為它應該是useradd。 - felwithe
@felwithe是的我沒有懷疑你,只是讓你知道我試過它8-)。我是Unix和Linux網站上的一個mod,這些cmds是非常不同的黑白髮行版。 OP在問題中提到了RHEL,因此為什麼我這樣回答,但他們沒有將其標記為特定的紅帽,這是此問答IMO混淆的一部分。 - slm


在CentOS 7機器上

  • 如果用戶不存在:
    useradd testuser --shell=/sbin/nologin

  • 如果要修改現有用戶:
    usermod testuser --shell=/sbin/nologin


1
2017-09-06 15:06