我想为 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隐藏,但是
乔恩- 更改文件所有者和组
-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.
#
用户L5CUID 和 GID 低于 500
# 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.
#
用户G5CUID 和 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
#
区别用户G5C创建主目录
问题
最好使用: useradd UserG5C -M -s /bin/false因为这个用户/帐户没有系统权限?
答案1
有多少人就有多少意见。我认为创建 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 useradd
和man usermod
。
编辑
其实你应该回答一些问题:
- 您需要系统用户(UID < 500)吗?
- 您是否需要 shell 或者您想禁用 shell 访问 (
/sbin/nologin, /bin/false
)? - 您是否需要该用户的主目录(顺便说一句,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
你问了,我们就回答了。
- 如果您的用户的 UID < 500 仅意味着它是某些服务的用户,而不是普通用户(可能是具有 shell 访问权限的人类)。它不会给您带来漏洞,因为这些用户没有受到操作系统的特殊对待。而且它不会为您提供扩展功能。只有一件事为什么使用 UID < 500 不好:您将来可以安装一些 RPM 软件包,它将为用户提供相同的 UID。在这种情况下,你会遇到一些问题。就是这样!顺便说一句,从 RPM 安装的 tomcat 为用户 tomcat 提供了 UID=91 和 GID=91 的组(至少在我的 Fedora 中是这样):
$ id tomcat
uid=91(tomcat) gid=91(tomcat) groups=91(tomcat)
好的,使用
/bin/false
或/sbin/nologin
。您可以
/
像某些软件包一样指定服务的主目录。例如,如果您从 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 后面有“:”暗示,则更改为登录组。
现在不推荐使用.
作为所有者/组分隔符。使用:
。
答案2
useradd -m -d /home/thenewuser -s /bin/bash -c "the new user" -U thenewuser
-c“消息”:有关用户的额外信息。
-U 新用户:创建与用户同名的组,并将用户添加到该组中。
-N: -N 参数告诉系统不要创建具有用户名的组
-m, --创建主页相同:如果用户的主目录不存在,则创建该目录。
-d, --home HOME_DIR:将使用 HOME_DIR 作为用户登录目录的值来创建新用户。
如果-d不使用默认主目录将是 /home/thenewuser
-m -d /数据/新用户: 这-m参数创建 /data/thenewuser 主目录,由 -d 参数指定。
-M: -M 参数告诉系统不要创建主目录
-s /bin/bash: 这-s用于指定用户的默认 shell,在本例中为 /bin/bash。
-s 或 --shell是一样的。
-s /sbin/nologin: 这/sbin/nologin对于 Fedora 和/usr/sbin/nologin对于 Debian,有两个 shell 会返回一条礼貌的消息,例如“此帐户不可用”,并且不允许您登录系统。该消息可以定制。
-s /bin/假:是一个旧的 shell,用于拒绝用户的登录。当 false 存在时 /bin/false 立即退出。以 /bin/false 或 /bin/true 作为默认 shell 的用户帐户被锁定。
-s /sbin/nologin属于 unix-linux,而 /bin/false 属于 GNU Coreutils 的一部分。这些 shell 必须列在 /etc/shells 文件中才能工作。
具有 /sbin/nologin(或 /usr/sbin/nologin)的用户可以通过 ssh 或 ftp 连接,但具有 /bin/false 的用户被完全锁定在系统之外。
和用户添加-D:您还可以使用以下命令查看为要创建的新用户设置的默认参数
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
#
检查其他替代方案:http://www.golinuxhub.com/2014/04/10-practical-examples-to-use-useradd.html
-r: -r 参数用于创建系统用户
检查用户
手指
例子
# finger mysql
Login: mysql Name:
Directory: /home/mysql Shell: /bin/bash
Never logged in.
No mail.
No Plan.
#
CentOS 6 没有这个命令,但你可以轻松安装它
百胜安装手指
。
答案3
useradd -m -c "Tomcat User" -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
tar -xvf apache-tomcat-9.0.53.tar.gz -C /opt/tomcat --strip-components=1
chown -R tomcat: /opt/tomcat
sh -c 'chmod +x /opt/tomcat/bin/*.sh'