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/shadow中。
/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控制限制
- 数字:如果当前是文件 则表示该文件对应的硬链接数;如果目录的话,表示的是该目录下子目录的个数
( .是当前目录 …当前目录的父目录 )
- 文件的权限针对三类对象进行定义
owner 属主,缩写u
group 属组,缩写g
other 其他,缩写o
- 每个文件针对每类访问者定义了三种主要权限
r:Read 读
w:Write 写
x:eXecute 执行
另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
注意:root账户不受文件权限的读写限制,执行权限受限制
- 对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
r:读取文件内容
w:修改文件内容
x:执行权限对除二进制程序以外的文件没什么意义
针对文件目录:
r:查看目录下的文件列表
w:删除和创建目录下的文件
x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
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文件
检测用户唐僧是否有权限
检测用户悟空是否有权限
把沙僧放入妖怪组
写一个冒泡排序程序
冒泡排序