Centos

為 Tomcat RHEL/CentOS 創建組和使用者

  • October 5, 2021

我想為我的 Tomcat 安裝創建一個使用者,但我正在查看多個選項:

# groupadd tomcat
#
# useradd -g tomcat -d /usr/local/tomcat tomcat
# useradd -g tomcat -c "Tomcat User" -d /usr/local/tomcat tomcat

其他選擇:

https://panovski.me/install-tomcat-8-on-centos-7/

# useradd -r -s /sbin/nologin tomcat
# chown -R tomcat: /usr/local/tomcat

在其他頁面(隱藏和遞歸)

# useradd -r tomcat --shell /bin/false
# chown -hR tomcat: /usr/local/tomcat

其他選擇:?

# useradd -g tomcat -s /bin/bash -d /usr/local/tomcat tomcat
# chown -Rf tomcat.tomcat /usr/local/tomcat

我不知道錯誤或後果是什麼,我想知道什麼是最好的選擇

我認為最好使用 -h hidden,但是

chown - 更改文件所有者和組

-r, --system
 Create a system account.

 System users will be created with no aging information in /etc/shadow, and their 
 numeric identifiers are chosen in the SYS_UID_MIN-SYS_UID_MAX range, defined in
 /etc/login.defs, instead of UID_MIN-UID_MAX (and their GID counterparts for the
 creation of groups).

 Note that useradd will not create a home directory for such an user, regardless
 of the default setting in /etc/login.defs (CREATE_HOME). You have to specify the
 -m options if you want a home directory for a system account to be created.

-s, --shell SHELL
 The name of the user's login shell. The default is to leave this field blank,
 which causes the system to select the default login shell specified by the SHELL
 variable in /etc/default/useradd, or an empty string by default.

在 CentOS 中是否需要使用 -s 或 -r 選項?

編輯 2

# useradd -r UserL5C --shell /bin/false
# more /etc/passwd | grep UserL5C
UserL5C:x:494:491::/home/UserL5C:/bin/false
# more /etc/group | grep UserL5C
UserL5C:x:491:
# finger UserL5C
Login: UserL5C                  Name: 
Directory: /home/UserL5C                Shell: /bin/false
Never logged in.
No mail.
No Plan.
# 

UID 和 GID 低於 500 的UserL5C

# useradd UserG5C --shell /bin/false
# more /etc/passwd | grep UserG5C
UserG5C:x:503:504::/home/UserG5C:/bin/false
# more /etc/group | grep UserG5C
UserG5C:x:504:
# finger UserG5C
Login: UserG5C                  Name: 
Directory: /home/UserG5C                Shell: /bin/false
Never logged in.
No mail.
No Plan.
#

UserG5C UID 和 GID 大於 500

# ls -al /home/
total 32
drwxr-xr-x.  5 root       root        4096 Jun 25 06:05 .
dr-xr-xr-x. 25 root       root        4096 Jun 25 05:19 ..
drwx------. 33 IntUser    IntUser     4096 Jun 25 05:46 IntUser
drwx------.  2 root       root       16384 Jun 13 09:56 lost+found
drwx------.  4 UserG5C    UserG5C     4096 Jun 25 06:01 UserG5C
# 

UserG5C創建homeDirectory的區別

問題

最好使用: useradd UserG5C -M -s /bin/false因為這個使用者/帳戶沒有系統權限?

有多少人就有多少意見。我認為創建tomcat使用者的最佳方法如下:

# useradd -r -s /sbin/nologin tomcat
# chown -R tomcat: /usr/local/tomcat

這意味著,您將創建系統帳戶。資訊來自man useradd

System users will be created with no aging information in /etc/shadow,
and their numeric identifiers are chosen in the SYS_UID_MIN-SYS_UID_MAX
range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their
GID counterparts for the creation of groups).

useradd -r ...創建與使用者同名的組,您不需要自己創建。

順便說一句,如果您決定更改使用者配置中的某些內容(例如:指定主目錄或更改 shell),您將始終可以使用usermod命令來完成。

閱讀man useraddman usermod

編輯

你真的應該回答一些問題:

  1. 您需要係統使用者(UID < 500)嗎?
  2. 您需要 shell 還是要禁用 shell 訪問 ( /sbin/nologin, /bin/false)?
  3. 您是否需要該使用者的主目錄(順便說一句,tomcat 可能想要擁有它)?

好的,你不想 UID < 500 並且想要主目錄(它現在不存在),讓我們執行以下命令:

# useradd -U -d /usr/local/tomcat -m -s /bin/false tomcat

選項-U將創建具有相同名稱的組。如果要添加使用者描述,請使用-c "Tomcat user".

如果你已經有了 tomcat 目錄:

# useradd -U -d /usr/local/tomcat -M -s /bin/false tomcat

之後,您應該更改 tomcat 目錄的所有者(以允許 tomcat 使用者使用它):

# chown -R tomcat: /usr/local/tomcat

編輯 2

你問,我們在回答。

  1. 如果您的使用者的 UID < 500,則僅表示它是某些服務的使用者,而不是普通使用者(可能是具有 shell 訪問權限的人)。它不會給你帶來漏洞,因為這些使用者沒有被作業系統特別對待。此外,它不會為您提供擴展功能。只有一件事為什麼使用 UID < 500 不好:您可以在將來安裝一些 RPM 包,它會為使用者提供相同的 UID。在這種情況下,您會遇到一些問題。就是這樣!順便說一句,從 RPM 安裝的 tomcat 為使用者提供 UID=91 的 tomcat 和 GID=91 的組(至少在我的 Fedora 中):
$ id tomcat
uid=91(tomcat) gid=91(tomcat) groups=91(tomcat)
  1. 好的,使用/bin/falseor /sbin/nologin
  2. 您可以/像某些軟體包一樣為您的服務指定主目錄。例如,如果您從 RPM 安裝了 tcpdump,則在 中具有以下字元串/etc/passwd
tcpdump:x:72:72::/:/sbin/nologin

在這種情況下,使用useradd帶有鍵-d /和的命令-M

另一方面,從 RPM 安裝的 tomcat 具有正確的主目錄:

tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat:/bin/nologin

現在關於chown.

這些命令做同樣的工作:

chown tomcat:tomcat /usr/local/tomcat
chown tomcat: /usr/local/tomcat

報價來自man chown

如果缺少組,則組不會更改,但如果在符號 OWNER 之後由“:”暗示,則更改為登錄組。

現在不推薦使用.作為 OWNER/GROUP 分隔符。使用:.

引用自:https://unix.stackexchange.com/questions/211821