71
72 用户,组合权限管理
73
74 multi-tasks,multi-users
75
76 每个使用者:
77 用户标识,密码;
78
79 组:用户组,用户容器;
80
81 用户类别:
82 管理root
83 普通用户:
84 系统用户
85 登入用户
86
87 用户标识:userID,UID
88 16bits二进制数字:0-65535
89 管理员:0
90 普通用户:1-65635
91 系统用户:1-499(centos6),1-999(centos7)
92 登入用户:500-60000(centos6),1000-60000(centos7)
93
94 名称解析:名称转换
95 username <-> UID
96 根据名称解析库进行: /etc/passwd
97 组:
98 组类别1:
99 管理员组
100 普通用户组
101 系统组
102 登入组
103 组标识:GroupID,GID
104 管理员组:0
105 普通用户:1-65635
106 系统用户:1-499(centos6),1-999(centos7)
107 登入用户:500-60000(centos6),1000-60000(centos7)
108 名称解析:groupname <-> gid
109 解析库: /etc/group
110 组类别2:
111 用户的主/基本组
112 用户的附加组
113 组类别3:
114 私有组:组名同用户名,且包含一个用户;
115 公共组:组内包含了多个用户;
116 认证信息:
117 通过比对事先存储的与登录是提供的信是否一致;
118 password:
119 /etc/shadow
120 /etc/gshadow
121 密码使用策略:
122 1.使用随机密码
123 2.最短长度不要低于8位
124 3.应该使用大小字母,数字和标点符号混合密码
125 4.定期更换
126 加密算法: md5,sha
127 对此加密:加密和解密使用一个密码
128 非对称加密:加密和解密所有的一对儿密钥
129 密钥对儿:公钥,私钥;
130 单向加密:只能加密,不能解密;提取数据特征码;
131 定长输出;雪崩效应;
132
133 /etc/passwd: 用户的信息库
134 name:passwd:UID:GID:GECOS:directory:shell
135
136 name: 用户名
137 password:可以是加密的密码,也可是占位符x
138 UID: 用户ID,用来标识每个用户的唯一标示符
139 GID: 组ID,用来标识用户组的唯一标识符
140 GECOS:
141 directory:
142 shell:
143
144 /etc/shadow : 用户密码信息
145 用户名:加密的密码:最近一次修改密码时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
146
147 /etc/group : 组的信息库
148 group_name:password:GID:user_list
149 user_list:该组的用户成员;以此组为附加组的用户的用户列表;
150
151 相关命令:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,chsh,id,su
152
153 groupadd: 创建组
154 groupadd [options] group
155 -g GID:指定GID;默认是上一个组的GID+1;
156 -r : 创建系统组;
157 groupdel: 删除组
158 groupmod:修改组属性
159 -g GID: 修改GID
160 -n new_name: 修改组名;
161
162 useradd:创建用户
163 useradd [options] LOGIN
164 -u,--uid UID :指定UID;
165 -g,--gid GROUP: 指定基本组ID,此组得事先存在;
166 -G,--group GROUP1[,GROUP2,...[,GROUPN]]] : 指定用户所属组得附加组,多个组用逗号分隔;
167 -c, --comment COMMENT : 指明注释信息;
168 -d, --home HOME_DIR : 指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
169 -s, --shell SHELL : 指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
170 -r, --system : 创建系统用户;
171 -M, --no-create-home: 不用创建用户的家目录;
172 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
173
174 useradd -D : 显示创建用户的默认配置;
175 useradd -D 选项 : 修改默认选项的值;
176 修改结果保存于/etc/default/useradd文件中;
177
178 usermod命令: 修改用户属性
179 usermod [选项] 登录
180 -u,--uid UID : 修改用户的ID为此处指定的新UID;
181 -g,--gid GROUP: 修改用户所属的基本组;
182 -G,--groups GROUP1[,GROUP2,...[,GROUPN]]] :修改用户所属的附加组;原来的附加组会被覆盖;
183 -a,append : 与-G一同使用,用于为用户追加新的附加组;
184 -c, --comment COMMENT : 修改注释信息;
185 -d, --home HOME_DIR : 修改用户的家目录; 用户原有的文件不会被转移至新位置;
186 -m,--move-home : 只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
187 -l,--login NEW_login:修改用户名;
188 -s,--shell SHELL : 修改用户的默认shell;
189 -L,--lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
190 -U,--unlock : 解锁用户的密码;
191 userdel命令: 删除用户
192 userdel [option] 登录
193 -r:删除用户时一并删除其家目录;
194 例如:
195 userdel linuxde //删除用户linuxde,但不删除其家目录及文件;
196 userdel -r linuxde //删除用户linuxde,其家目录及文件一并删除
197
198 实操:
199 1.创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(gid为5000)和peguin(gid为5001);
200 groupadd distro -g 5000
201 groupadd peguin -g 5001
202 useradd gentoo -u 4001 -G distro,peguin
203 2.创建用户fedro,其注释信息为fedoro core,默认shell为/bin/tsch;
204 useradd fedro -c "fedoro core" -s /bin/tsch
205 3.修改gentoo用户的家目录为/var/tmp/gentoo:要求其原有文件仍能被用户访问;
206 usermod -d /var/tmp/gentoo -m gentoo
207 4.为gentoo新增附加组netadmin;
208 usermod -a -G netadmin gentoo
209
210 passwd命令:
211 passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warn‐
212 days] [-i inactivedays] [-S] [--stdin] [username]
213
214 (1) passwd : 修改用户自己的密码;
215 (2) passwd username : 修改指定用户的密码,但仅root有此权限;
216 -l,-u : 锁定和解锁用户;
217 -d : 清除用户密码串;
218 -e date : 过期期限,日期;
219 -i days :非活动期限;
220 -n days : 密码的最短使用期限;
221 -x days : 密码的最长使用期限;
222 -w days : 警告期限;
223
224 --stdin:
225 用法:echo "password" | passwd --stdin username
226 gpasswd命令:
227 组密码文件: /etc/gshadow
228
229 gpasswd [选项] group
230 -a usename : 向组中添加用户
231 -d usename : 从组中移除用户
232
233 newgrp命令: 临时切换指定的组为基本组;
234 newgrp [-] [group]
235 -: 会模拟用户重新登录以实现重新初始化其工作环境;
236
237 chage命令:更改用户密码过期信息
238 chage [option] 登录名
239 -d
240 -E
241 -w
242 -m
243 -M
244
245 id命令: 显示用户真实和有效id;
246 id [OPTION]... [USER]
247 -u : 仅显示有效的uid
248 -g : 仅显示用户的基本组id
249 -G : 仅显示用户所属的所有组的id;
250 -n : 显示名字而非id;
251
252 su命令: switch user
253 登录式切换: 会通过读取目标用户的配置文件来重新初始化
254 su -, -l, --login username
255 非登录式切换:不会读取目标用户的配置文件进行初始化
256 su username
257 注意:管理员可无密码切换至其他任何用户;
258
259 -c 'cmd' : 仅以指定用户的身份运行此处指定的命令;
260
261 其他几个不常用命令:chsh chfn finger whoami
262 命令总结:groupadd,groupdel,groupmod,useradd,usermod,userdel,passwd,gpasswd,newgrp,id,su,chage
263
264
265 权限管理:
266 ls -l ,ll
267 rwxrwxrwx:
268 左三位: 定义user(owner)的权限
269 中三位: 定义group的权限
270 右三位: 定义other的权限
271
272 进程安全上下文:
273 进程对文件的访问权限应用模型:
274 进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
275 否则,则检查进程的属主是否属于文件的属组;如果是则应用属组权限;
276 否则,就只能应用other的权限;
277 权限:
278 r: readable,读
279 w: writable,写
280 x: excutable,执行
281
282 文件:
283 r:可获取文件的数据;
284 w:可修改文件的数据;
285 x:可将此文件运行为进程;
286 目录:
287 r:可使用ls命令获取其下的所有文件列表;
288 w:可修改此目录下的文件列表;即创建或删除文件;
289 x:可cd至此目录,且可使用ll 来获取所有文件的详细信息;
290
291 权限管理命令:
292 chmod命令:
293 chmod [OPTION]... MODE[,MODE]... FILE...
294 chmod [OPTION]... OCTAL-MODE FILE...
295 chmod [OPTION]... --reference=RFILE FILE...
296
297 三类用户:
298 u:属主
299 g:属组
300 o:其他
301 a:所有
302
303 (1) chmod [OPTION]... MODE[,MODE]... FILE...
304 mode表示法:
305 赋权表示法:直接操作一类用户的所有权限位rwx;
306 u=
307 g=
308 o=
309 a=
310 授权表示法:直接操作一类用户的一个权限位r,w,x;
311 u+,u-
312 g+,g-
313 o+,o-
314 a+,a-
315 (3) chmod [OPTION]... --reference=RFILE FILE...
316 引用某个文件RFILE的权限,修改为file的权限;
317
318 选项:
319 -R,--recursive: 递归修改;
320
321 从属关系管理命令:chown,chgrp
322 chown命令:
323 chown [OPTION]... [OWNER][:[GROUP]] FILE...
324 chown [OPTION]... --reference=RFILE FILE...
325
326 选项:
327 -R: 递归修改
328
329 chgrp命令:
330 chgrp [OPTION]... GROUP FILE...
331 chgrp [OPTION]... --reference=RFILE FILE...
332
333 思考: 用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
334
335 umask: 文件的的权限反向掩码,遮掩码;
336 文件:
337 666-umask
338 目录:
339 777-umask
340
341 注意: 之所以文件用666去减,表示文件默认不能拥有执行权限;
342 umask: 023 默认022
343 666-023=643+1=644
344 777-023=754
345
346 umask命令:
347 umask: 查看当前umask
348 umask MASK: 设置umask
349
350 注意:此类设定仅对当前shell进程有效(通过命令进行的都是仅对当前shell有效);
351
352 实操:
353 1.新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看命令提示符;
354 useradd -M -r -s /sbin/nologin mariadb
355 2.新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
356 groupadd -g 5000 mageedu
357 useradd -d /users/gentoo gentoo
358 echo gentoo | passwd --stdin gentoo
359 3.新建用户fedora,其家目录为/users/www;密码同用户名;
360 useradd -d /users/www fedora
361 echo gentoo | passwd --stdin fedora
362 4.新建用户www,其家目录为/users/www;删除www用户,但保留其家目录;
363 useradd -d /users/www www
364 userdel www
365 5.为用户gentoo和fedora增附加组megeedu;
366 groupmod mageedu
367 usermod -G megeedu gentoo
368 usermod -G megeedu fedora
369 6.复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;
370 cp /var/log /tmp/
371 chown -R :mageedu /tmp/log
372 chmod g+w /tmp/log
373
374 install命令:
375 单源复制:
376 install [OPTION]... [-T] SOURCE DEST
377 多源复制:
378 install [OPTION]... SOURCE... DIRECTORY
379 install [OPTION]... -t DIRECTORY SOURCE...
380 创建目录:
381 install [OPTION]... -d DIRECTORY...
382
383 常用选项:
384 -m,--mode=MODE : 设定目标文件权限,默认为755;
385 -o,--owner=OWNER: 设定目标文件属主;
386 -g,--group=GROUP: 设定目标文件属组;
387
388 mktemp命令:
389 NAME
390 mktemp - create a temporary file or directory
391
392 SYNOPSIS
393 mktemp [OPTION]... [TEMPLATE]
394
395 例如:
396 myfile=$(mktemp /tmp/mytmp.xxx)
397 常用选项:
398 -d: 创建临时目录
399
400 注意:mktemp会创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;
Linux系统上的特殊权限
特殊权限: SUID,SGID,STICKY
安全上下文:
1.进程以某一户的身份运行;进程是发起此进程的用户的代理,因此以此用户的身份和权限完成所有操作;
2.权限匹配模型:
(1)判断进程的属主是否为被访问文件的属主,如果是,则应用属主的权限;否则,进入第2步;
(2)判断进程的属主是否属于被访问的文件的属组,如果是,则应用属组的权限;否则,进入第3步;
(3)应用其他权限;
SUID:
默认情况下:用户发起的进程,其属主是发起者。因此,进程以发起者的身份在运行
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么此程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主
管理文件的SUID权限:
设置SUID:chmod u+s FileName
取消SUID:chmod u-s FileName
展示位置:属主的执行权限位
如果属主原本有执行权限,显示为小写s
如果属主原本没有执行权限,显示为大写S
SGID:
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;
管理文件sgid权限:
chmod g+ | -s file...
展示位置:属主的执行权限位
如果属组原本有执行权限,显示为小写s
如果属组原本没有执行权限,显示为大写S
STICKY:
功用:对于属组或全局可写的二目录,组内的所有用户或系统上的所有用户对此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置sticky权限,则每个用户能创建新文件,且只能删除自己的文件;
管理文件sticky权限:
chmod o+ | -t file...
展示位置:属主的执行权限位
如果属组原本有执行权限,显示为小写s
如果属组原本没有执行权限,显示为大写S
系统上的/tmp和/var/tmp目录默认均有sticky权限;
管理特殊权限的另一种方式:
suid sgid sticky 八进制权限
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
例如:
chmod 1777
facl: file access control lists
文件的额外赋权机制:
在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;
getfacl命令:
getfacl file
user:username:mode
group:groupname:mode
setfacl命令:
赋权给用户:
setfacl -m u:username:mode file...
赋权给组:
setfacl -m g:groupname:mode file...
撤销赋权:
setfacl -x u:username file...
setfacl -x g:groupname file...