用户及权限管理

  1 bash的基础特性:
  2     globbing:文件名通配(整体文件名匹配,而非部分);
  3         匹配模式:元字符
  4             *:匹配任意长度的任意字符.例如:pa*,*pa,*pa*,*p*a*
  5             ?:匹配任意单个字符.例如:pa?,??pa,p?a,p?a?,
  6             []:匹配指定范围内的单个字符.
  7                 [a-z],[A-Z],[0-9],[a-z0-9]
  8                 [[:upper:]]:所有大写字母
  9                 [[:lower:]]:所有小写字母
 10                 [[:alpha:]]:所有写字母
 11                 [[:digit:]]:所有数字
 12                 [[:alnum:]]:所有字母和数字
 13                 [[:space:]]:所有空白字符
 14                 [[:punct:]]:所有标点符号
 15                     例如:pa[0-9][0-9],2[0-9][0-9],[abcd]....
 16             [^]:匹配指定范围外的任意单个字符
 17                 [^[:upper:]]
 18                 [^0-9]
 19                 [^[:alnum:]]
 20 
 21 IO重定向及管道
 22     程序:数据+指令
 23     输入数据流:<--标准输入(stdin),键盘;
 24     输出数据流:-->标准输出(stdout),键盘;
 25     错误输出:  -->错误输出(stderr),显示器;
 26 
 27     fd:file description,文件描述符
 28         标准输入:0
 29         标准输出:1
 30         错误输出:2
 31 
 32     IO重定向:
 33         输出重定向: > 
 34             特性: 覆盖输出
 35         输出重定向:>>
 36             特性:追加输出
 37 
 38         # set -C
 39             禁止覆盖输出重定向至已存在文件;
 40             此时可使用强制覆盖输出:>
 41         # set +C
 42             关闭上述特性
 43 
 44         错误输出流重定向: 2> , 2>>
 45 
 46         合并正常输出流和错误输出流:
 47             (1) &> ,&>>
 48             (2) cmd > /PATH 2>&1
 49                 cmd >> /PATH 2>&1
 50 
 51         输入重定向: <
 52 
 53         tr命令:
 54             tr [option] ... set1 [set2]
 55                 把输入的数据当中的字符,凡是在set1定义范围内出现的,通过对位转换为set2出现的字符
 56             用法1:    tr set1 set2 < /PATH
 57             用法2:  tr -d set1 < /PATH    (不输出set1范围字符)
 58         注意:不修改原文件
 59 
 60         here document: <<
 61 
 62             cat << EOF
 63             cat > /PATH << EOF
 64 
 65         管道|:连接程序,实现将前一个命令的输出直接定向后一个程序当做输入数据流
 66             cmd | cmd | cmd |...
 67         
 68         tee命令: (从标准输入读入,输出并写入文件)
 69             cmd | tee /PATH 
 70 
 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会创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;

猜你喜欢

转载自www.cnblogs.com/liuyuanq/p/9788673.html