用户、组和权限
安全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::: 看格式对比就行了