关于UID和GID的创建、修改、删除;简要举例

时间:2023-11-22 20:16:02

用户、组和权限

安全3A资源分派

(authentication)认证

(authorization)授权

(accounting)审计

user( 用户)

Linux用户:Username/UID   (用户的名称和用户的UID)

管理员:root,0   管理员的UID是0  (一般系统默认root为管理员,用户UID为0的都可以作为管理员)

普通用户:1-65535

普通用户分为两种:

系统用户:1-499(CentOS6),1-999(CentOS)

对守护进程获取资源进行权限分配

登录用户:500+(CentOS6),1000+(centos7)

通过交互式交互式登录

【用户是UID、组是GID】

group(组)一些用户或组的集合 称之为组

Linux组:Groupnname/GID   (组的名称和组的GID)

管理员组:root,0  管理员组的GID是0

系统组:1-499(centos6) 1-999(centos7)

普通组:500+(centos 6) 1000+(centos 7)

对于一个普通用户而言可以有多个不同的组,分别称之为用户的基本组(主组)和附加组;基本组

组名与用户名相同,切仅仅包含一个用户,也叫私有组。基本组以外的组属于用户的附加组

例如:[root@MKB ~]# cat /etc/passwd

执行结果:root:x:0:0:root,chfn,xiaomage,sdad:/root:/bin/bash

格式:(用户名:密码:UID:GID:主组,附加组:家目录:用户默认的shell)

Linux组的类别

用户的主要组称为(主组):

用户必须属于一个并且只有一个主组

组名同用户名,且仅包含一个用户称为(私有组)

用户的付加组称为(辅助组):

一个用户可以属于零个或者多个辅助组

例如: ~]# groups   (查看当前所在组)

执行结果:  root

例如: ~]# groups bin(查看用户主组,有没有附加组)

执行结果:   bin : bin daemon sys   (用户):(主组)(附加组)

例如: ~]# id bin  (显示指定用户或当前用户的用户与组信息)

执行结果 : uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)                                        (用户)(主组)    组的列表= 主组,辅助组,附加组

例如: ~]# id -u makangbo  (仅显示有效用户ID)

执行结果:500    (命令加选项,用户id)

例如:  ~]# getent passwd makangbo (查看家目录的路径信息)

makangbo:x:500:500::/home/makangbo:/bin/bash

(用户名:密码:UID:GID:用户注释信息:用户的家目录:用户默认的shell)

security context (安全上下文)

运行中的程序:进程(process)

以进程发起者的身份运行:例如# root:/bin/cat

例如# xiaomag:/bin/cat

进程所能访问资源的权限取决于进程的运行者的身份

而不是取决于资源的所有者 (人不一样权限不一样,跟程序无关)

Linux用户和组的主要配置文件:

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

/etc/group:组及其属性信息

/etc/shadow:用户密码及其相关属性

/etc/gshadow:组密码及其相关属性

~]# pwunconv  (密码从shadow转换到passwd)

~]# pwconv   (密码不转换)

passwd 文件格式  (用户及其属性信息)

login name:登录用户名(xiaomage)

passwd: 密码 (x)

UID:用户身份编号(1000)

GID:登录默认所在组编号(1000)

GECOS:用户全名或注释

home directory:用户主目录(/home/xiaomag)

shell:用户默认使用shell(/bin/bash)

例如:~]# cat /etc/passwd

执行结果:xiaomage:x:3010:3010::/home/xiaomage:/bin/bash

格式:(用户:密码:UDI:GID:用户全名或注释:家目录:当前所用的shell)

shadow 文件格式  (用户密码及其相关属性)

登录用户

用户密码:一般用sha512加密

从1970年1月1日起到密码最近一次被更改的时间

密码再过几天可以被变更(0表示随时可被变更)

密码再过几天必须被变更(9999表示永不过期)

密码过期前几天系统提示用户(默认为一周)

密码过期几天后帐号会被锁定

从1970年1月1日算起,多少天后帐号失效。

例如:~]# cat /etc/shadow

执行果结果:xiaomage:$6$3C3XJDxs$2sUoIOWp3IoHu6jzz3lXVVCmUcq.ABX8LQv/YywLSFWhowlmN1eWKWUWmkl.HQ.gYufi030F3m0XnfE9jLslo/:17015:0:99999:7:::

格式   (用户名:加了密的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:提示密码警告时间段:密码禁用期:账户过期日期:保留字段)

密码的加密解密机制

加密:明文- 密文

解密: 密文- 明文

单项加密:哈希算法,原文不同,密文必不同

相同算法定长输入,获取密文不可逆推原始数据

雪崩效应:初始条件的卫校改变,引起结果的巨大改变

sha256:256bits

sha512:512bits

更改加密算法 authconfig --passalgo=sha256 --update

group文件格式   (组及其属性信息)

群组名称

群组密码:通常不设定,密码是被记录在/etc/gshadow

GID:就是群组的ID

以当前组为附加组的用户列表(分隔符为逗号)

例如:~]# cat /etc/group

执行结果   bin:x:1:bin,daemon

格式    (组名称:组密码:组GID:当前组为组的附加组用户列表,以逗号分隔开)

gshdow文件格式    (组密码及其相关属性)

群组名称

群组密码

组管理员列表:组管理员列表,更改组密码和成员

以当前组为附加组的用户列表:(分隔符为逗号)

文件操作

vipw和vigr  (编辑密码、组、影子密码或影子组文件)

pwck (检查密码的完整性)

grpck(检查组组文件的完整性)

vipw, vigr - 编辑密码、组、影子密码或影子组文件。

vipw [选项]

vigr [选项]

描述 vipw 和 vigr 命令分别编辑 /etc/passwd 和 /etc/group 文件。使用 -s 标识时

,将编辑这些文件的影子版,即分别为 /etc/shadow 和 /etc/gshadow。这些程序

将设置相应的锁,以防止文件损坏。寻找编辑器时,首先尝试环境变量 $VISUAL,

然后是环境变量 $EDITOR,最后是默认编辑器 vi(1)。

选项:

-g, --group

编辑 group 数据库。

-h, --help

现实帮助信息并退出。

-p, --passwd

编辑 passwd 数据库。

-q, --quiet

安静模式。

-R, --rootCHROOT_DIR

适用于chroot_dir目录的变化和使用从chroot_dir目录的配置文件。

-s, --shadow

编辑 shadow 或 gshadow 数据库。

pwck (检查密码的完整性)

用户管理命令

useradd (增加用户)

usermod (修改用户)

userdel  (删除用户)

组帐号维护命令

groupadd (建立组)

groupmod (修改组)

groupdel (删除组)

useradd - 创建一个新用户或更新默认新用户信息

useradd [选项] 登录

useradd -D

useradd -D [选项]

描述

如果使用时不带 -D 选项,useradd 命令使用命令行上指定的值和系统的默认值创

建一个新用户。根据命令行选项,useradd 命令也会更新系统文件和创建新用户的

主目录并复制初始文件。

默认上,也会为用户创建组

-u, --uidUID

用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负

,默认使用大于等于 UID_MIN,且大于任何其他用户 ID 最小值。

-o, --non-unique

允许使用重复的 UID 创建用户账户。

此选项只有和 -u 选项组合使用才有效。

-g, --gidGROUP

用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在

的组。    指明用户所属基本组,可为组名也可为GID

-c, --commentCOMMENT

任何字符串。通常是关于登录的简短描述,当前用于用户全名。 用户注释信息

-d, --home-dir HOME_DIR

以指定的路径(不存在)为家目录

-s, --shellSHEL

指明用户的默认shell程序;可用在列表/etc/shell 文件中

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]

为用户指明附加组,组必须事先存在

受到了 -g 选项给定的组同样的限制。

-N, --no-user-group

不创建私用组做主组,使用users做主组

-r, --system

创建系统用户

-m, --create-home

如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选

项指定),将会复制到主目录。

练习:1

创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser

#useradd testuser -u 1234 -g bin -G root,ftp -m -d home/testdir/testuser -s /bin/csh

(命令选项加家目录名称)(加选项-u创建UID)(-g创建主组) (-G创建附加组)(-d创建家目录路径-  m配合-d使用具体的看上面选项)

usermod (修改用户)

usermod [选项] 登录

描述   usermod 修改系统账户文件和在命令行上指定的相关更改。

-c, --commentCOMMENT   ('xiaomage')

用户密码文件中注释字段的新值。通常使用 chfn(1) 工具对其进行修改。新的注释信息              -u, --uidUID

用户 ID 的新数值。

这个值必须是唯一的,除非使用了 -o 选项,必须是非负值。

-g, --gidGROUP

新基本组GID   用户的新初始登录组的组名或数字代号。此组必须存在。

用户主目录中,属于原来的主组的文件将转交新组所有。

G, --groups GROUP1[,GROUP2,...[,GROUPN]]]

新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append(附加,贴上)

-s, --shellSHELL

用户的新登录 shell 的名称。将此字段设置为空会让系统选择默认的登录 shell

-d, --homeHOME_DIR

新家目录不会自动创建,原家目录的文件不会移动至新家目录;

若要创建新家目录并移动原家目录数据,同时使用-m选项。

-m, --move-home

将家目录内容移至新位置 (仅于 -d 一起使用)

-l, --loginNEW_LOGIN

修改为新的名字

-L, --lock

指定用户名字,在/etc/shadow,密码栏中增加!字符进行锁定

-U, --unlock

指定用户,在/etc/shadow,密码栏中删除!字符  进行解锁                                     -e, --expiredateEXPIRE_DATE

指明 用户账户将过期的日期。日期以 YYYY-MM-DD 格式指定。

-f, --inactiveINACTIVE

密码过期之后,账户被彻底禁用之前的天数。

0 表示密码过期时,立即禁用账户;-1 表示不使用这个功能。

此选项需要一个 /etc/passwd 文件。

userdel  (删除用户)

userdel [选项] 登录

描述   userdel 修改系统账户文件,删除与用户名 LOGIN 相关的所以项目。给出的用户

名必须存在。

-r, --remove   删除用户家目录

用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中

的文件必须手动搜索并删除。

练习:2

修改testuser uid:4321,主组:root,辅助组:nobody, loginname:test,home:/home/test 家数据迁移

~ ]# usermod -u 4321 -g root -G nobody -l test -m -d /home/test testuser

(命令加-u选项修改UID)(-g修改主组 -G改新家目录)(-l改附加组) (-d创建新家目录-m般原始数据迁移到新家目录)(原家目录)

练习:3

批量创建帐号:user1...user10  uid:3000-3009,shell:/bin/csh,home:/testdir/username

passwd:usernamepass

注意家目录相关配置,使用户正常登录

先来创建用户

]# vim u.txt 用编辑器 编辑一个自定义名称的txt文档  文档格式看下面

]# cat u.txt    查看文档的内容

user:x:3000:3000::/home/testdir/user:/bin/csh

user1:x:3001:3001::/home/testdir/user1:/bin/csh

user2:x:3002:3002::/home/testdir/user2:/bin/csh

user3:x:3003:3003::/home/testdir/user3:/bin/csh

user4:x:3004:3004::/home/testdir/user4:/bin/csh

user5:x:3005:3005::/home/testdir/user5:/bin/csh

user6:x:3006:3006::/home/testdir/user6:/bin/csh

user7:x:3007:3007::/home/testdir/user7:/bin/csh

user8:x:3008:3008::/home/testdir/user8:/bin/csh

user9:x:3009:3009::/home/testdir/user9:/bin/csh

]# newusers u.txt  (新增用用户的命令,新增文档内的用户)

~]# ll /home/testdir/ (查看路径是否成功)

总用量 40

drwx------. 2 user  user  4096 8月   2 19:58 user

drwx------. 2 user1 user1 4096 8月   2 19:58 user1

drwx------. 2 user2 user2 4096 8月   2 19:58 user2

drwx------. 2 user3 user3 4096 8月   2 19:58 user3

drwx------. 2 user4 user4 4096 8月   2 19:58 user4

drwx------. 2 user5 user5 4096 8月   2 19:58 user5

drwx------. 2 user6 user6 4096 8月   2 19:58 user6

drwx------. 2 user7 user7 4096 8月   2 19:58 user7

drwx------. 2 user8 user8 4096 8月   2 19:58 user8

drwx------. 2 user9 user9 4096 8月   2 19:58 user9

~]# cat /etc/passwd   (查看用户信息)

user:x:3000:3000::/home/testdir/user:/bin/csh

user1:x:3001:3001::/home/testdir/user1:/bin/csh

user2:x:3002:3002::/home/testdir/user2:/bin/csh

user3:x:3003:3003::/home/testdir/user3:/bin/csh

user4:x:3004:3004::/home/testdir/user4:/bin/csh

user5:x:3005:3005::/home/testdir/user5:/bin/csh

user6:x:3006:3006::/home/testdir/user6:/bin/csh

user7:x:3007:3007::/home/testdir/user7:/bin/csh

user8:x:3008:3008::/home/testdir/user8:/bin/csh

user9:x:3009:3009::/home/testdir/user9:/bin/csh

以上就是创建用户成功了

账户都有了但是没有密码,这就不正常了,下面要批量创建密码

~]# vim m.txt 用编辑器 编辑一个自定义名称的txt文档 上面已经有个用户的文档了,

尽量不要搞重名的文档,不然会报错  文档格式看下面

~]# cat m.txt    查看文档内容

user:userpass

user1:user1pass newusers

user2:user2pass

user3:user3pass

user4:user4pass

user5:user5pass

user6:user6pass

user7:user7pass

user8:user8pass

user9:user9pass

文档创建成功 ,接下来读取

~]# cat m.txt |chpasswd   (把文档用管道符 传给设置密码的命令)

~]# cat /etc/shadow     (查看用户密码及其相关属性)

user1:$6$9RYuW/M8iMIv$e5rTqpt4bPWycu9dflgmlmTxqsC5V9KVF.IvANn16YxI.QC3gRII7zXdBnEDOiiKY70SxtDeqeA/i76RgMSFh.:17015:0:99999:7:::

user2:$6$gmd.k/BQ$1Ql1A6PNP7EVG.BVfinrZYsO0vDpyuk8mp7pGkE.tkHdIQQcjQqfeI4JjtnTq5VSi.OmCy9/TvxscuYazQxy71:17015:0:99999:7:::

user3:$6$iUyAeZuXLR/Sn$Oyg98sTOyQL49LOv1.xPg4sjj6nrOHtPzIza8rXn9LFzsTg2Nfo/lODx5SKrbp9ymlZq3eBRcERoWvn8x7ptx/:17015:0:99999:7:::

user4:$6$WgQDi/WewTe$ajT38DDqkSdhTMkvdAW8koAqiWe85jo8CtrunpVu3mcF7HleO6Qr3W1u2hLkrPzPr2rAOL5F63PV7JmdzNXn70:17015:0:99999:7:::

user5:$6$RpHcooAEzPWfXE$K2enpej7BLJptsBVfgrEnhKIYVNtWHEqF5kEb450QfQ7RvGcSvyIxFhUrfz3APU68McEIlFpVR4Hj2jN/WK7J.:17015:0:99999:7:::

user6:$6$VNZIrZd/$ANJbrUlG62NKiuxM5SmiMx8.NGwdcQYcFOHbXzbIMAw1LO8DZmSoXoHvvObMaVmVd4U4MjT.JrDQRBZF5ZAqE/:17015:0:99999:7:::

user7:$6$oR0Alfvtp$2ZC6f8O3A09sc.eXZXpo3DPRnLLBWmY5AOG7mRXPwc50xg/jmmlEifLYh/mres8K9Q3VMjr.Cr9MSszcENEZT0:17015:0:99999:7:::

user8:$6$QVxA9n13$ShUI1NGBOOI5DsLcZXpUsUHPTMqIcWDn9C5aZlklrkstopXD8/ToJwvDzgj5wxF8YOXgq5XLOcVRHaY7HPoUA.:17015:0:99999:7:::

user9:$6$eWpxt/KyUX1FmNgB$ByklE1y2ESnglrfvPpOYxoaJZnIhgs/jmj4empwc.T1qILZP11zwCwNyaCBMT/3A9DBNQdIU8QP4Fvro4QLTr1:17015:0:99999:7:::

这就是成功了,当然密码经过加密了。

下面找一个没设置密码的做对比:test:!!:17015:0:99999:7:::    看格式对比就行了