linux文件权限和目录结构(一)

linux文件权限和目录结构(一)

文件介绍


linux中其中一个文件的信息
-rw-r--r-- 1 root root 1 Jun 6 14:17 back_log.txt

第一列:-rw-r--r--

第一个-’ 代表文件的类型,主要分为以下几个:
-:一般文件
d:目录文件
l:链接文件
b:块设备文件,即一些存储数据以提供系统随机访问的接口设备,如硬盘、软盘等
c:字符设备文件,即一些串行端口的接口设备,如鼠标、键盘等
s:套接字,数据接口文件,通常被用在网络上的数据传输
p:FIFO文件

之后每三个分为一组。且均为『rwx』的三个参数的组合。
其中,[ r ]代表可读(read)
[ w ]代表可写(write)
[ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

第一组为『文件拥有者可具备的权限』,以『back_log.txt』那个文件为例,该文件的拥有者可以读写,但不可执行;
第二组为『加入此群组之帐号的权限』;
第三组为『非本人且没有加入本群组之其他帐号的权限』。

请你特别注意喔!不论是那一组权限,基本上,都是『针对某些帐号来设计的权限』喔!
以群组来说,他规范的是『加入这个群组的帐号具有什么样的权限』之意,
以学校社团为例,假设学校有个童军社的社团办公室,『加入童军社的同学就可以进出社办』,主角是『学生(帐号)』而不是童军社本身喔!

第二列是一个数字,表示有多少文件名链接到此节点。(Linux的目录树是使用文件名来记录的)

第三列表示这个文件的所有者账号。

第四列表示这个文件的所属组账号。

第五列的数字代表这个文件的大小,单位是Byte。

第六列是这个文件的创建日期或者最近修改日期,日期(月/日)及时间,如果这个档案被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。


最后列是文件名,如果文件名前多个.’,代表这个文件是隐藏文件。  

改变档案属性与权限

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

chgrp


test文件夹和里面的文件都是属于root用户root组的。
现在更改为www用户组(用户组在/etc/group文件内,可以cat /etc/group,进行查看)。

命令格式
chgrp [OPTION] 组名 dirname/filename ...
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的档案之情况。
-h : 修改符号链接本身。主要是在文件或文件进行了链接的时候,是改变链接文件。还是改变源文件的所属组。


可以看到如果不加-R 那么只有test文件夹改变了用户组。


如果加了-R 那么test文件夹和里面的文件都是www用户组了

chown

chown [OPTION] [文件拥有者|文件拥有者:所属组|:所属组] dirname/filename...
选项与参数:
-R :进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组,用户组之意。常常用在变更某一目录内所有的档案之情况。


chmod:

文件权限的改变使用的是chmod这个指令,但是,权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

数字类型改变档案权限

Linux档案的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
档案的权限为:『-rwxrwxrwx』,这九个权限是三个三个一组的!
其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的。
例如当权限为: [-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以设定权限的变更时,该档案的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更


一下个是加了-R选项的

符号类型改变档案权限

从之前的介绍中可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!
那么我们就可以藉由u, g, o来代表三种身份的权限!
此外,a则代表all亦即全部的身份!那么读写的权限就可以写成r, w, x啰!
也就是可以使用底下的方式来看:


假如我们要『设定』一个档案的权限成为『-rwxr-xr-x』时,基本上就是:

user (u):具有可读、可写、可执行的权限;
group 与others (g/o):具有可读与执行的权限。

所以就是:


如果不知道原先的文件属性,而只想要增加test这个文件夹的每个人均可写入的权限,那么就可以使用:


而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可写入权限,则:


linux中,文件和文件的所对应的rwx是不同的




Linux命名有个a用户,他的家目录下有一个b.txt文件这个文件的权限为700,那么这个用户是无法读、无法编辑也无法执行的。但是由于是在a用户的家目录下,所以他可以删除。

单一文件或目录的最大容许档名为255bytes,
以一个ASCII 英文占用一个bytes 来说,则大约可达255 个字元长度。
若是以每个中文字占用2bytes 来说, 最大文件名就是大约在128 个中文字之多。

文件命名尽量不用特殊字符。因为有一些特殊字符有特殊的意义。