服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux下新增用户、指定用户组、家目录、获取sudo权限方式

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

2023-05-02 13:17久远成传说 Linux

这篇文章主要介绍了Linux下新增用户、指定用户组、家目录、获取sudo权限方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Linux新增用户、指定用户组、家目录、获取sudo权限

?
1
2
3
4
5
6
7
8
9
10
11
//系统环境
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
# uname -r
3.10.0-862.el7.x86_64
//SELinux 设置
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//校准时间的定时任务
# crontab -l
01 */3 * * * /usr/sbin/ntpdate time1.aliyun.com && clock -w
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
//useradd命令的man信息
useradd - 创建一个新用户或更新默认新用户信息
 
 
useradd [选项] 登录
 
useradd -D
 
useradd -D [选项]
 
 
如果使用时不带 -D 选项,useradd 命令使用命令行上指定的值和系统的默认值创建一个新用户。根据命令行选项,useradd
命令也会更新系统文件和创建新用户的主目录并复制初始文件。
 
默认上,也会为用户创建组 (察看 -g, -N, -U,和 USERGROUPS_ENAB)。
 
 
useradd 可以使用的选项有:
 
-b, --base-dirBASE_DIR
    The default base directory for the system if -dHOME_DIR is not specified.  BASE_DIR is concatenated with
    the account name to define the home directory. The BASE_DIR must exist otherwise the home directory cannot
    be created.
 
    如果选项没有指定,useradd 将使用 /etc/default/useradd 中的 HOME 变量,或者默认的 /home
 
-c, --commentCOMMENT
    任何字符串。通常是关于登录的简短描述,当前用于用户全名。
 
-d, --home-dir HOME_DIR
    The new user will be created using HOME_DIR as the value for the user's login directory. The default is to
    append the LOGIN name to BASE_DIR and use that as the login directory name.
 
-D, --defaults
    看下边,“更改默认值”子节。
 
-e, --expiredateEXPIRE_DATE
    用户账户将被禁用的日期。日期以 YYYY-MM-DD 格式指定。
 
    如果没有指定,useradd 将使用 /etc/default/useradd 中 EXPIRE
    变量指定的默认过期日期,或者一个空字符串(不过期)。
 
-f, --inactiveINACTIVE
    密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。
 
    如果未指定,useradd 将使用 /etc/default/useradd 中的 INACTIVE 指定的默认禁用周期,或者默认为 -1。
 
-g, --gidGROUP
    用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
 
    如果没有指定, useradd 的行为将依赖于 /etc/login.defs 文件中的 USERGROUPS_ENAB 参数。如果此参数设置为了
    yes (或者在命令行上指定了 -U/--user-group),将会为用户创建一个组,组名和登录名相同。如果选项设置为了 no
    (或者在命令行上指定了 -N/--no-user-group),useradd 会把新用户的主组设置为 /etc/default/useradd 中 GROUP
    变量指定的值,再或者默认是 100。
 
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]
    用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g
    选项给定的组同样的限制。默认上,用户只属于初始组。
 
-h, --help
    现实帮助信息并退出。
 
-k, --skelSKEL_DIR
    骨架目录,包含使用 useradd 创建用户时,要复制到用户主目录中的文件和目录。
 
    这个选项只有在指定 -m (或 --create-home) 选项时才有效。
 
    如果此项没有设置,骨架目录使用 /etc/default/useradd 中的 SKEL 的变量或默认为 /etc/skel
 
    如果可以,也复制 ACL 和扩展属性。
 
-K, --keyKEY=VALUE
    默认覆盖 /etc/login.defs (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS 及其它)。 例如:-K PASS_MAX_DAYS=-1
    可以用于创建一个密码不会过期的系统账户,即使系统账户没有密码。可以指定多个 -K 选项,如:-K UID_MIN=100-K
    UID_MAX=499
 
-l, --no-log-init
    不要将用户添加到最近登录和登录失败数据库。
 
    默认上,最近登录和登录失败中用户的条目会被重置,以避免重新使用先前删除的用户的条目。
 
-m, --create-home
    如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选项指定),将会复制到主目录。
 
    默认上,如果没有指定此选项并且 CREATE_HOME 没有启用,不会创建主目录。
 
    The directory where the user's home directory is created must exist and have proper SELinux context and
    permissions. Otherwise the user's home directory cannot be created or accessed.
 
-M, --no-create-home
    Do not create the user's home directory, even if the system wide setting from /etc/login.defs
    (CREATE_HOME) is set to yes.
 
-N, --no-user-group
    不要创建同名组,而是将用户添加到 -g 选项指定的组,或根据 /etc/default/useradd 中的 GROUP 变量。
 
    如果没有指定 -g, -N 和 -U 选项,默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量指定。
 
-o, --non-unique
    允许使用重复的 UID 创建用户账户。
 
    此选项只有和 -u 选项组合使用才有效。
 
-p, --passwordPASSWORD
    加密了的密码,就像 crypt(3) 的返回值。默认为禁用密码。
 
    
 
    您应该确保密码符合系统的密码政策。
 
-r, --system
    创建一个系统账户。
 
    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 不会为这种用户创建主目录,无论 /etc/login.defs (CREATE_HOME)
    中是的默认设置是怎样。如果想为要创建的系统账户创建主目录,需要指定 -m 选项。
 
-R, --rootCHROOT_DIR
    Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.
 
-s, --shellSHELL
    用户的登录 shell 名。默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录
    shell,默认为空字符串。
 
-u, --uidUID
    用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于
    UID_MIN,且大于任何其他用户 ID 最小值。
 
    请参考 -r 选项和 UID_MAX 的描述。
 
-U, --user-group
    创建一个和用户同名的组,并将用户添加到组中。
 
    如果没有指定 -g, -N 和 -U 选项,默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量指定。
 
-Z, --selinux-userSEUSER
    用户登陆的 SELinux 用户。默认为留空,这会造成系统选择默认的 SELinux 用户。
 
 
只带 -D 选项使用时,useradd 将显示当前的默认值。-D 和其它选项配合使用时,useradd
将为指定的选项更新默认值。有效的“更改默认值”选项有:
 
-b, --base-dirBASE_DIR
    新用户主目录的路径前缀。如果创建新账户时,没有使用 -d 选项,用户的名称将会缀在 BASE_DIR
    的后边形成新用户的主目录名。
 
    这个选择在 /etc/default/useradd 中设置 HOME 选项。
 
-e, --expiredateEXPIRE_DATE
    禁用此用户账户的日期。
 
    此选项在 /etc/default/useradd 中设置 EXPIRE 变量。
 
-f, --inactiveINACTIVE
    密码过期到账户被禁用之前的天数。
 
    这个选项在 /etc/default/useradd 中设置 INACTIVE 变量。
 
-g, --gidGROUP
    新用户初始组的组名或 ID (使用了 -N/--no-user-group 或者 /etc/login.defs 中的变量 USERGROUPS_ENAB 设置为 no
    时)。给出的组必须存在,并且数字组 ID 必须有一个已经存在的项。
 
    这个选项在 /etc/default/useradd 中设置 GROUP 变量。
 
-s, --shellSHELL
    新用户的登录 shell 名。
 
    这个选项在 /etc/default/useradd 设置 SHELL 变量。
 
 
系统管理员负责将默认的用户文件放在 /etc/skel/ 目录中(或者命令行上、/etc/default/useradd中指定的任何其它目录)。
 
CAVEATS
您可能不能想 NIS 组或 LDAP 组添加用户。这只能在相应服务器上进行。
 
相似地,如果用户名已经存在于外部用户数据库中,比如 NIS 或 LDAP,useradd 将拒绝创建用户账户的请求。
 
用户名不能超过 32 个字符长。
 
 
/etc/login.defs 中有如下配置变量,可以用来更改此工具的行为:
 
CREATE_HOME (boolean)
    指示是否应该为新用户默认创建主目录。
 
    此设置并不应用到系统用户,并且可以使用命令行覆盖。
 
GID_MAX (number), GID_MIN (number)
    useradd,groupadd 或 newusers 创建的常规组的组 ID 的范围。
 
    GID_MIN 和 GID_MAX 的默认值分别是 1000 和 60000。
 
MAIL_DIR (string)
    邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。
 
MAIL_FILE (string)
    定义用户邮箱文件的位置(相对于主目录)。
 
MAIL_DIR and MAIL_FILE 变量由 useraddusermod 和 userdel 用于创建、移动或删除用户邮箱。
 
如果 MAIL_CHECK_ENAB 设置为 yes,它们也被用于定义 MAIL 环境变量。
 
MAX_MEMBERS_PER_GROUP (number)
    每个组条目的最大成员数。达到最大值时,在 /etc/group 开始一个新条目(行)(使用同样的名称,同样的密码,同样的
    GID)。
 
    默认值是 0,意味着组中的成员数没有限制。
 
    此功能(分割组)允许限制组文件中的行长度。这对于确保 NIS 组的行比长于 1024 字符。
 
    如果要强制这个限制,可以使用 25。
 
    注意:分割组可能不受所有工具的支持(甚至在 Shadow 工具集中)。您不应该使用这个变量,除非真的需要。
 
PASS_MAX_DAYS (number)
    一个密码可以使用的最大天数。如果密码比这旧,将会强迫更改密码。如果不指定,就假定为 -1,这会禁用这个限制。
 
PASS_MIN_DAYS (number)
    两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 -1,将会禁用这个限制。
 
PASS_WARN_AGE (number)
    密码过期之前给出警告的天数。0 表示只有只在过期的当天警告,负值表示不警告。如果没有指定,不会给警告。
 
SYS_GID_MAX (number), SYS_GID_MIN (number)
    useradd、groupadd 或 newusers 创建的系统组的组 ID 的范围。
 
    SYS_GID_MIN 和 SYS_GID_MAX 的默认值分别是 101 和 GID_MIN-1。
 
SYS_UID_MAX (number), SYS_UID_MIN (number)
    useradd 或 newusers 创建的系统用户的用户 ID 的范围。
 
    SYS_UID_MIN 和 SYS_UID_MAX 的默认值分别是 101 和 UID_MIN-1。
 
UID_MAX (number), UID_MIN (number)
    useradd 或 newusers 创建的普通用户的用户 ID 的范围。
 
    UID_MIN 和 UID_MAX 的默认值分别是 1000 和 60000。
 
UMASK (number)
    文件模式创建掩码初始化为此值。如果没有指定,掩码初始化为 022。
 
    useradd 和 newusers 使用此掩码设置它们创建的用户主目录的模式。
 
    也被 login 用于指定用户的初始 umask。注意,此掩码可以被用户的 GECOS 行覆盖(当设置了 QUOTAS_ENAB
    时),也可以被带 K 指示符的 limits(5) 定义的限制值覆盖。
 
USERGROUPS_ENAB (boolean)
    如果 uid 和 gid 相同,用户名和主用户名也相同,使非 root 组的组掩码位和属主位相同 (如:022 -> 002, 077 ->
    007)。
 
    如果设置为 yes,如果组中没有成员了,userdel 将移除此用户组,useradd 创建用户时,也会创建一个同名的默认组。
 
 
/etc/passwd
    用户账户信息。
 
/etc/shadow
    安全用户账户信息。
 
/etc/group
    组账户信息。
 
/etc/gshadow
    安全组账户信息。
 
/etc/default/useradd
    账户创建的默认值。
 
/etc/skel/
    包含默认文件的目录。
 
/etc/login.defs
    Shadow 密码套件配置。
 
 
useradd 可以返回如下值:
 
0
    成功
 
1
    无法更新密码文件
 
2
    无效的命令语法
 
3
    给了选项一个无效的参数
 
4
    UID 已经使用 (且没有 -o)
 
6
    指定的组不存在
 
9
    用户名已被使用
 
10
    无法更新组文件
 
12
    无法创建主目录
 
14
    can't update SELinux user mapping
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//新增用户testuser赋予root权限
//方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
//然后修改用户,使其从属于root组(wheel),命令如下:
#usermod -g root testuser
//修改完毕,现在可以用testuser帐号登录,然后用命令 su - ,即可获得root权限进行操作。
 
//方法二(推荐使用): 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
testuser   ALL=(ALL)     ALL
//修改完毕,现在可以用testuser帐号登录,然后用命令 su - ,即可获得root权限进行操作。
 
//方法三: 修改 /etc/passwd 文件,找到如下行,把UID修改为 0 ,如下所示:
testuser:x:500:500:testuser:/home/user/testuser:/bin/bash
//修改后如下
testuser:x:0:500:testuser:/home/user/testuser:/bin/bash
//保存,用testuser账户登录后,直接获取的就是root帐号的权限。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//创建admin用户并获取sudo权限
//创建用户属组
# groupadd operation
//查看验证
# tail -n 5 /etc/group
//创建用户admin 指定组 operation 指定附加组 root 指定家目录
# useradd -g operation -G root -d /home/user/admin admin
//修改admin目录权限
# chmod -R 766 /home/user/admin
//修改admin用户密码
# passwd admin
//修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,强制保存退出,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
admin   ALL=(ALL)   ALL
 
//admin用户如需修改没有权限的文件需要在命令前添加sudo,如
$ sudo touch text.txt

Linux用户的家目录——经典干货

使用过Linux的伙伴儿们都知道Linux为每个用户都提供对应的家目录,路径为 /home/用户名(管理员不同,他的家目录是/root),并且家目录下附送文件(文件夹)若干。

张伙伴儿问:如何查看家目录?

登录后进入终端,直接输入pwd命令“显示当前路径”,显示的路径就是用户的家目录。

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

王伙伴儿问:如何查看家目录下有哪些文件(文件夹)?

当然是Linux下最常用的命令ls啦。

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

Desktop Document … …都是蓝色的,都是文件夹。

李伙伴儿问:家目录下只有这些默认建立的文件夹吗?

当然不是,输入ls -al,a是全部的意思,l是列表的意思,将全部文件(文件夹)按列表的方式显示。

白色的是文件标记字符为- 蓝色的是文件夹标记字符为d (此外l 链接文件,b存储接口设备,c穿行端口设备)

赵伙伴儿问:文件名中有点啥意思?

以点“.”开头的文件(文件夹)为隐藏文件(文件夹),这为什么就是只输入ls时他们没有显示出来。

刘伙伴儿问:一个点 两个点 是啥意思?

一个点“.”表示当前目录,两个点“…”表示上一级目录(此外“~”表示家目录)

伙伴儿们,重要的4个文件.bash_history .bash_logout .bashrc .profile

.bash_history:保存本次开机前执行过的全部命令,(本次开机执行的命令当前不会被记录)

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

.profile:bash启动时执行此文件,其实启动文档有3个.bash_profile,.bash_login,.profile,优先执行 ~/.bash_profile,找不到时,再执行 ~/.bash_login ,还找不到,才执行 ~/.profile,此文件定义命令的路径 (PATH) 与环境变量,可以添加自定义命令,做启动时的工作。

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

.bashrc:每次执行命令时,都执行此文件,因此可将命令别名、路径添加自定义命令到此文档。

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

.bash_logout:注销bash时,执行此文件,可以添加自定义命令做退出时的工作。

Linux下新增用户、指定用户组、家目录、获取sudo权限方式

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_35590198/article/details/80730885

延伸 · 阅读

精彩推荐