Linux系列文章
- Linux (一) ——(目录结构、Vim编辑器、用户管理)
- Linux (二)—— 运行级别及实用指令
- Linux (三)——组管理和权限管理
- Linux (四)——任务调度和磁盘分区
- Linux (五)——网络配置和进程管理
- Linux (六)——rpm和yum
1. 组管理
Linux 组基本介绍
linux中的每个用户必须属于一个组,不能独立于组外。在linux中,每个文件都有所有者、所在组、其它组的概念。
文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
- 查看文件所有者
ll 可以查看文件所有者、所在组,以及相应的权限,下面会详细介绍
- 修改文件所有者
chown 用户名 文件名
- 改变用户的所有者和所有组
chown newowner:newgroup file
如果是目录,在chown 后 加-R选项,可以使目录下的所有文件生效
文件/目录 所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
- 组的创建
groupadd 组名
- 改变文件所在组
chgrp 组名 文件名
- 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中(useradd -g 用户组 用户名
),同样的用 root 的管理权限可以改变某个用户所在的组。
usermod -g 组名 用户名
注意,改变之后,只有用id 用户名 查询用户指令查询用户,才可以看到组的变化
其它组
除文件的所有者和所在组的用户外,系统的其它用户所在的组都是文件的其它组.
2. 权限管理
Linux 文件类型
- -:普通类型
- d:目录
- l:软连接
- c:字符设备【键盘、鼠标等】
- b:块文件【硬盘】
权限的基本介绍
使用 ll 指令,查看root下的test.txt 的相关信息如下
-rw-r--r--. 1 ewen person 2224 5月 13 10:59 test.txt
- ‘ - ’ :第一个字符确定文件类型
- rw- :代表所有者的权限
- r-- :代表所属组中的其他用户的权限
- r–:代表其他组中的用户权限
- 1 :如果是文件,表示硬连接的数;如果是目录则表示该目录的子目录个数
- ewen :代表文件的所有者
- person :代表文件所在组,一般是所有者的所属组,也有可能不是
- 2224 :文件的大小,如果是目录,则统一为4096
- 5月 13 10:59 : 文件最后一次修改的时间
- test.txt :文件名
注意:
1)每个权限占3位,如果只有一个权限,则有两个–,有两个权限,就有一个-,有三个权限,就没有-了。
2)在/home 目录下,用ll指令获得的信息中,如果目录是一个用户的家目录,代表所属组的那一项不一定是用户的所属组,如果想查看所属组的话,用 id + 用户名 查看,如果是文件的话,那么一定是文件所属组。
rwx 权限详解
- rwx 作用到文件
- r:read,可读。读取查看。
- w:write,可以修改。但不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- x:execute,可执行。可以被执行,如二进制文件或脚本。
- rwx 作用到目录
- r:可以读取,ls查看目录内容。
- w:可以修改,目录内创建+删除+重命名目录。
- x:可执行,可以进入该目录。
可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7
修改权限(chmod)
- 使用+、-、= 变更权限
u :所有者 g :所在组 o :其他人 a :所有人(u、g、o的总和)
比如
- chmod u=rwx,g=rx,o=x 文件目录名 给所有者读写执行权限,给所在组的其他用户读和执行权限,给其他人执行权限
- chmod o+w 文件目录名 给其他人加上写权限
- chmod a-x 文件目录名 给所有人取消读权限
应用举例
- 给 test.java文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
chmod u=rwx,g=rx,o=rx test.java
- 给 test.java 文件的所有者除去执行的权限,给所在组的其他用户增加组写的权限
chmod u-x,g+w test.java
- 给 abc 文件的所有用户添加读的权限
chmod a+r test.java
- 通过数字变更权限
- 规则:r = 4 、w = 2、 x = 1 rwx = 4 + 2 + 1 = 7
chmod u = rwx , g = rx, o = x 文件目录名 相当于chmod 751 文件目录名- 案例演示
将 test.java 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现
chmod 755 test.java
如果想同时改变目录下的所有子目录的权限,只需加-R选项
chmod -R 770 test test 及test 的所有子目录的权限都改为770(rwxrwx---)