Linux学习之用户和组管理与文件权限
1.用户管理和组管理
1.1 用户管理
Linux系统下,用户分为三个类型:
超级用户:用户名为root,有一切的权限,对系统进行一些维护的时候(建立新用户,删除一些文件)。系统用户(伪用户):不能登录,存在的意义就是Linux在正常工作时所需要的內建的用户,主要是为了满足相应的系统进程对文件的操作。普通用户:用于管理Linux,常见用于一般的操作。
1.2 组管理
Linux系统下,组分为三类:
基本组(私有组):建立新的用户的时候,如果不去指定分组,系统就会自动创建一个和该用户名相同的组,该组为该用户的基本组。附加组(公有组):可以容纳多个用户的分组,该组下所有的用户都具有该组对应的所有权限,当一个基本组加入别的用户时,该基本组就变为附加组。系统组:root组,存系统用户。
1.3 UID
对于每一个用户而言,都会分配一个标号UID唯一表示:
-  
超级用户:0 -  
系统用户:1~999 -  
普通用户:≥1000新创建的普通用户如果不指定UID的话,默认从1000开始,之后+1即可。
 
[root@localhost ~]# id root 
uid=0(root) gid=0(root) 组=0(root) 
[menzi@localhost ~]$ id menzi 
uid=1000(menzi) gid=1000(menzi) 组=1000(menzi) 
whoami
 
2.对于用户和组的一些文件管理
2.1 /etc/passwd
 
 
/etc/passwd配置文件信息
 
- 第一字段:用户名称
 - 第二字段:密码标志
 - 第三字段: UID
 - 第四字段:GID用户初始组【只有一个,创建用户时自动建立,不推荐改】和附加组【同时属于其他组,像是大学的社团】
 - 第五字段:用户说明
 - 第六字段:家目录【普通用户 home/用户名【二级目录】 超级用户:/root/【一级目录】
 - 第七字段:登陆之后的shell:linux的命令解释器标准bin/bash sbin/nologin
注意:Root不一定是管理员,uid=0的一定是管理员。 
2.2 /etc/shadow
 
 
etc/shadow配置文件地信息:
 
- 第一字段:用户名
 - 第二字段(加密口令):加密密文【密码相同,密文也不相同】 sha521加密 ** !!没密码
 - 第三字段(最后一次修改的时间):最近一次更改密码的日期,以距离1970年1月1日的天数来表示的,数值越大越接
近当前时间 - 第四字段(最小时间间隔):密码不能在多少天内被修改,默认值为0,不限制
 - 第五字段(最大时间间隔):密码在多少天之后必须被修改,默认值为99999,不限制
 - 第六字段(警告时间):提前多少天警告用户密码即将过期,默认值为7,0表示不提供警告
 - 第七字段(不活动时间):到期后的宽限时间,密码过期多少天后禁用此用户
 - 第八字段(失效时间):账号失效时间,以距离1970年1月1日的天数表示,默认为空永久不失效
 - 第九字段(标识):保留字
 
2.3 etc/group和etc/gshadow
 
- etc/group:
 
etc/group配置文件信息:
 
- 第一字段:组名
 - 第二字段:组密码标志
 - 第三字段:GID
 - 第四字段:组中附加用户
 
- /etc/gshadow
 
2.4 用户添加命令:useradd

2.5 删除用户命令:userdel(删除用户 但是不删除用户家目录)
- userdel -r 用户名 全删 或者手动删
 
[root@localhost home]# userdel wang6 、
//家目录没删 邮件没删
userdel -r 用户名 全删
或者手动删
 
2.6 修改用户信息: usermod(除了具有useradd的参数外)
- -l 新用户名
 - 未登录 -L 锁定
 - -U 解锁
 
3. 用户组相关操作
3.1 groupadd 增加组
- -g 指定GID
 - -r 建立一个系统组,与g不同时使用,并且分配一个1~999的GID
 
3.2 groupdel
3.3 gpasswd

3.4 useradd -g 给用户改变分组
3.5 usermod -g 修改用户组
4.文件权限
4.1 文件权限解释

 drwxr-xr-x. 2 root root 6 5月 22 13:31 公共
         属主 属组 大小 最后一次修改的日期 文件/目录名
- 第1个字符 d 表示文件类型
 - 第2~4个字符 rwx 表示的是文件属主的权限
 - 第5~7个字符 r-x 表示的是文件属组的权限
 - 第8~10个字符 r-x 表示其他所有用户对该文件的权限
 - 第11个字符 . 表示的是文件的访问控制ACL , . 表示被SELinux安全上下文访问,空格表示没有访问限制, + 该文件上有ACL控制限制
 - 数字:如果当前是文件 则表示该文件对应的硬链接数;如果目录的话,表示的是该目录下子目录的个数
( .是当前目录 …当前目录的父目录 ) 
- 文件的权限针对三类对象进行定义
 
- 每个文件针对每类访问者定义了三种主要权限
 
  另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
   注意:root账户不受文件权限的读写限制,执行权限受限制
- 对于文件和目录来说,r,w,x有着不同的作用和含义:
 
针对文件:
针对文件目录:
4.2 修改权限的指令chmod
- 第一种形式:+ - =变更权限
 
1.chmod u=rwx,g=rw,o=x 文件/目录 (u 属主 g 属组 o 其他所有用户 a所有人) 
2.chmod o+w 文件/目录 
3.chmod a-x 文件/目录
第二种形式:通过数值变更
  		rwx rw- r–	
  		111 110 100
  		7   6   4
  		r:4
  		w:2
 		x:1
[menzi@localhost ~]$ touch abc
-rw-rw-r--. 1 menzi menzi 0 6月 5 15:50 abc 
//1.给abc属主给读写执行 属组读执行 其他读写 
[menzi@localhost ~]$ chmod u=rwx,g=rx,o=rw abc
-rwxr-xrw-. 1 menzi menzi 0 6月 5 15:50 abc 
//2.给abc文件属主去除执行权限,属组增加写的权限 
[menzi@localhost ~]$ chmod u-x,g+w abc
-rw-rwxrw-. 1 menzi menzi 0 6月 5 15:50 abc 
//3.给abc文件的所有用户增加读的权限 
[menzi@localhost ~]$ chmod a+r abc
-rw-rwxrw-. 1 menzi menzi 0 6月 5 15:50 abc
 
- 通过数值变更
 
//将abc文件权限修改为rwx r-x r-x
[menzi@localhost ~]$ chmod 755 abc
-rwxr-xr-x. 1 menzi menzi 0 6月 5 15:50 abc 
[menzi@localhost ~]$ chmod 123 abc
---x-w--wx. 1 menzi menzi 0 6月 5 15:50 abc 
[menzi@localhost ~]$ chmod 000 abc
----------. 1 menzi menzi 0 6月 5 15:50 abc
 
4.3 修改文件属主chown
[root@localhost menzi]# chown root abc
----------. 1 root menzi 0 6月 5 15:50 abc 
[root@localhost ~]# chown -R menzi test 
//将test目录下所有的文件和目录包括自己属主改为menzi
 
4.4 chgrp
设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)
- -R 递归
 - -reference=f1 f2 f3 参考f1文件权限设置f2,f3文件
 
5 练习
  建立两个组神仙,妖怪;建立四个用户:唐僧、悟空、八戒、沙僧;分别给四个 用户设置密码;把悟空 八戒 放入妖怪 把唐僧 沙僧 放入神仙;用悟空建立一个文 件monkey.java 文件写一段话"I am monkey king!" ;给八戒一个可以rw的权限 ; 八戒修改monkey.java,并加入一句话 “I am pig” 唐僧 沙僧 对该文件没有权限 ;
 把沙僧放入妖怪组 让沙僧修改文件monkey.java 加入了一个冒泡排序“…”
- 创建用户和组

给用户设置密码 
 登录四个用户和root

 给用户分组
 
 创建一个java文件
 
 写入文件
 
 给权限

给权限
 
 修改monkey.java文件
 
 检测用户唐僧是否有权限
 
 检测用户悟空是否有权限
 
 把沙僧放入妖怪组
 
写一个冒泡排序程序
 
冒泡排序
 










