我想在RHEL 5系统上创建一个用户和一个都名为subversion的组。我看了看useradd的手册页,我猜命令应该只是...。但是,不确定如何避免创建主目录。另外,我不希望它成为可以登录系统的用户。

主要目的只是为了提供SVN存储库的所有者。

评论

您是否真的查看过useradd的手册页,却没有找到-M(不创建HOME目录)?

#1 楼

您可以使用-M开关(确保它是大写字母)来确保不会创建主目录:

useradd -M subversion


然后锁定帐户以防止登录:

usermod -L subversion


评论


这不是一个特别有力的答案,用这种方法创建的用户仍然有一个外壳。而且您甚至没有警告OP这是事实。追溯地将是usermod -s / bin / false颠覆,或使用--shell / bin / false来实现useradd

–李·汉普里(Lee Hambley)
2011-09-14 16:55



@beak帐户已被锁定,拥有外壳是有争议的。

– John T
2011-09-14 22:55

@beak实际上只有root用户才可以使用锁定的帐户,但是如果该人已经获得root访问权限,为什么还要麻烦呢?当用户可以运行su -s / bin / bash用户名并绕过该用户名时,设置shell并没有多大作用。

– John T
2011-09-15 22:44

感谢您抽出宝贵的时间进行讨论,您当然是正确的;但是让我看到定义了shell的非登录用户感到很痛苦,这让我感到很懒,而且如果有人不熟悉该系统,很高兴他们不会意外地做一些事;黑客是不同的人,如果他们已经在计算机上安装了外壳,我认为这基本上是一场游戏

–李·汉普里(Lee Hambley)
2011年9月16日下午6:43

这些评论完全涵盖了我希望学习的东西,谢谢@Beaks && John T

– Rixius
2013年2月14日20:27



#2 楼

您可以使用以下命令:

useradd -r subversion


有关更多信息,请使用以下命令检查手册页:

man useradd


您将在本文档中找到以下可用于您的目的的标志。

-r, --system                  create a system account


-r标志将创​​建一个系统用户-一个没有该用户的用户密码,主目录且无法登录。

评论


该命令甚至会为用户创建一个名为“ same”的组。因此,“ subversion”用户将属于“ subversion”组。非常适合您以后想要执行“ sudo chown -R subversion:subversion / path / to / folder”

– s3v1
13年8月15日在12:07



仅使用-r,我们仍然可以登录。我们需要-s / bin / false来禁用用户外壳程序。

–c4il
13-10-25在13:27

@ c4il但是唯一可以登录他们的人是root,对吗?我的意思是,他们没有密码,所以我希望只有root用户才能登录。

–卡米洛·马丁(Camilo Martin)
2014年7月12日20:48在

但是无论如何我们都可以给他们分配密码,我尝试了passwd subversion。

–沙燕
19/09/21在17:26

#3 楼

使用adduser创建系统用户的另一种解决方案:该用户。

正如py4on在评论中提到的那样,在某些系统上,可能需要使用--group选项才能禁用该用户的登录名。不过,这似乎是Debian下的默认行为。请注意,用户的数字ID属于系统帐户。不过,您可以使用--no-create-home选项修复uid。最后,请注意,在某些系统(例如Fedora)上,--disabled-login--uid的符号链接,在这种情况下,此答案无效。

评论


要解决“我不想让它成为可以登录的用户”,还要添加标志--disabled-login(在yourusername之前)

–毒素
15年7月30日在10:37

@ py4on:尽管此选项在手册页中有介绍,但至少在Debian中它似乎是默认选项。

–Skippy le Grand Gourou
15年8月1日在19:59

#4 楼

原始问题的最干净答案是运行命令:

adduser subversion --shell=/bin/false


如果您也不希望主目录:
adduser subversion --shell=/bin/false --no-create-home


,或者,如果您想要更受锁定的系统用户(通常这将不会创建主目录-据报道,根据注释,它仍将在linux mint中创建主目录下面)

adduser subversion --system --group


所有这些命令将创建一个与用户同名的组

评论


在Mint上,最后一个命令肯定会创建一个主目录:创建主目录'/ home / nodejs'...

– jcollum
19年2月2日在22:38



我也应该加L

–警报
20年7月7日在18:53

#5 楼

最安全的方式是使用adduser,如下所示: 。

设置确认

$ adduser -r -s /bin/nologin subversion


但是没有目录:

$ 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
$


评论


adduser无法识别-r选项。我认为您的意思是useradd。

–追随
17年7月29日在16:30



@felwithe不,我写下的每个答案我都会在发布前进行测试。我检查了一下,并在CentOS 6.x系统上显示了该开关。

–slm
17年7月29日在20:10

这是结果的粘贴框。我正在使用Ubuntu 16 LTS。我不知道安装了哪个版本的adduser,但我从未想象过它会随着时间或系统的变化而变化。然后,我改为使用--system标志来尝试它,该标志为用户创建了一个homedir(我不想要一个)。最后,我只是使用useradd而不是adduser来完成它,并且按计划工作。因此,我只是假设您应该将其键入为adduser时将其键入为adduser。

–追随
17年7月30日在0:18



@felwithe是的,我没有怀疑您,只是让您知道我尝试了它8-)。我是Unix和Linux站点上的mod,这些cmd众所周知是不同的黑白发行版。 OP在问题中提到RHEL,因此我为什么要这样回答,但他们没有将其标记为特定于Red Hat,这是对此Q&A IMO感到困惑的一部分。

–slm
17年7月30日在0:31



#6 楼

在Debian中,您可以创建系统用户(没有主目录)并登录Shell:

useradd --system --shell=/usr/sbin/nologin <username>


如果nologin程序位于/sbin/nologin中,请进行相应的更改。 >

#7 楼

在CentOS 7计算机上,您可以使用以下命令:



如果用户不存在:

useradd testuser --shell=/sbin/nologin



如果要修改现有用户:

usermod testuser --shell=/sbin/nologin




#8 楼

首先,通过执行以下操作为用户生成最长为8个字符的加密密码:

openssl passwd -crypt new_password_less_than_eight_chars_long


然后执行以下操作: br />