文件权限与目录

文件可存取访问的身份分为3个类别,分别是owner、group、others,这3种类别各有read、write、execute3种权限

 

一、用户和用户组

用户身份与用户组记录的文件:

1.账户信息:/etc/passwd

2.密码信息:/etc/shadow

3.组名信息:/etc/group

 

二、文件权限与属性

[root@hs-uf21 etc]# ll

-rw-r--r--          1       root    root      2767    Apr 11 13:20   passwd

drwxr-xr-x          4       root    root      4096    Apr 10 21:09   vmware-tools

[文件类型和权限]  [连接 ] [所有者][用户组]  [文件容量] [ 修改时间 ]   [文件名]

 

 

第一列“-rw-r--r--” 共10个字符,表示文件的类型和权限,具体如下:

 -        rw-         r--             r--

 d         rwx         r-x             r-x

[文件类型][所有者权限][同用户组的权限][非本用户组的权限]

文件类型说明:

[d] :表示目录;

[-] :表示普通文件;

[l] :表示连接文件(linkfile);

[b] :表示设备文件里面的可供存储的接口设备;

[c] :表示设备文件里面的串行端口设备,如键盘、鼠标。

文件权限说明:

[r] :表示可读(read);

[w] :表示可写(write);

[x] :表示可执行(execute);

第二列表示有多少个文件名连接到此节点(i-node)

第三列表示这个文件(或目录)的所有者账号

第四列表示这个文件(或目录)的所属用户组

第五列表示这个文件的容量大小,默认单位为B

第六列表示这个文件的创建日期或者是最近的修改日期

第七列表示这个文件的文件名,如果文件名之前多一个“.”,则表示这个文件为“隐藏文件”。

 

三、文件权限与属性的修改

参数:

    [-R] :进行递归(recursive)的持续更改,也即连同子目录下的所有文件、目录都更新成这个用组之间,常用在更改某一目录内所有的文件情况。

1.chgrp:改变文件所属用户组

语法:chgrp [-R] GROUP dirname/filename

将文件etc.tar所在所属的用户组改到dba:

[root@hs-uf21 ~]# chgrp dba etc.tar

[root@hs-uf21 ~]# ll

-rw-r--r--  1root dba 48885760 Apr 19 22:39 etc.tar

 

2.chown:改变文件所有者

语法:chown[-R] USER[:/.GROUP] dirname/filename

参数:

    [-R] :进行递归(recursive)的持续更改,也即连同子目录下的所有文件、目录都更新成这个用组之间,常用在更改某一目录内所有的文件情况。   

将文件etc.tar的所有者和所属组改为oracle和dba

[root@hs-uf21 ~]# chown oracle:dba etc.tar

[root@hs-uf21 ~]# ll

-rw-r--r--  1 oracle dba 48885760 Apr 19 22:39 etc.tar

注意:chown可以同时更改文件的所有才和组名,上面的操作这样操作,[root@hs-uf21 ~]# chown oracle.dbaetc.tar,即用户名和组名之前可以用“.”来代替“:”。

 

3.chmod:改变文件的权限

文件可存取访问的身份分为3种,分别是usergroupothers,每种身份的文件权又可以分为三类:r(readw(write)x(execute),同时也可以用数字来代表,分别为:r = 4w = 2x = 1。所以改变权限的方法可以分为:数字类型和符号类型

 

数字类型改变文件权限

语法:chmod [-R] [权限] 文件或者目录

参数:[权限]为rwx的数字表示,具体如下

    user   = rwx =4+2+1 = 7

    group  = rwx = 4+2+1 = 7

    others = rwx= 4+2+1 = 7

 

给文件install.log的所有者赋予读写执行的权限

[root@hs-uf21 ~]# chmod 700install.log

[root@hs-uf21 ~]# ll

-rwx------  1root   root    59020 Apr 10 20:32 install.log

 

给文件install.log的所有者赋予读和写的权限,同级用户和非同组用户赋予读的权限

[root@hs-uf21 ~]# chmod 644install.log

[root@hs-uf21 ~]# ll

-rw-r--r--  1root   root    59020 Apr 10 20:32 install.log

 

符号类型改变文件权限

语法:chmod [-R] [权限操作] 文件或者目录

参数:[权限操作]具体为设置每种身份的权限操作,不同身份之间的权限设置用逗号隔开

    身份类型:u(user)、g(group)、o(others)、a(all)

    操作类型:+(增加权限)、-(删除权限)、=(设置权限)

    权限类型:r(read)、w(write)、x(execute)

 

给文件install.log的所有者赋予读、写、执行的权限,同级用户和非同组用户赋予读和执行的权限

[root@hs-uf21 ~]# chmod u=rwx,go=rxinstall.log

[root@hs-uf21 ~]# ll

-rwxr-xr-x  1root   root    59020 Apr 10 20:32 install.log

 

给文件install.log的所有者、同级用户、非同组用户赋予读和写的权限

[root@hs-uf21 ~]# chmod a=rwinstall.log

[root@hs-uf21 ~]# ll

-rw-rw-rw-  1root   root    59020 Apr 10 20:32 install.log

 

取消文件install.log同级用户、非同组用户的写的权限

[root@hs-uf21 ~]# chmod go-winstall.log

[root@hs-uf21 ~]# ll

-rw-r--r--  1root   root    59020 Apr 10 20:32 install.log

 

注意:如果要给目录及了目录下的所有文件赋予权限,可以使用-R参数。

 

四、文件与目录的权限

1.文件权限的意义

r(read):可读取此文件的实际内容。

w(write):可以编辑、新增或者是修改该文件的内容(但不可以删除该文件)。

x(execute):该文件可以被系统执行的权限。

注意:对于文件的“rwx”权限,主要都是针对“文件内容”来说的,与文件名的存在死心塌地否没有关系,因为文件记录的是实际的数据。

 

2.目录权限的意义

r(read):表示具有读取目录结构列表的权限,即可以查询该目录下的文件名数据。

w(write):表示具有更改目录结构列表的权限,即新建新的文件与目录、删除已经存在的文件与目录(不论该文件的权限为何)、将已经存在的文件或者目录进行重命名、转移该目录内的文件、目录、位置。

x(execute):表示用户能否进入该目录成为当前工作目录。

 

在oracle的根目录下创建一个目录files,并取消该目录的所有权限:

[root@hs-uf21 oracle]# mkdir files

[root@hs-uf21 oracle]# ll

drwxr-xr-x  2root   root          4096 Apr 20 19:41 files

[root@hs-uf21 oracle]# chown -R oracle.oinstall files

[root@hs-uf21 oracle]# ll

drwxr-xr-x  2oracle oinstall      4096 Apr 20 19:41files

[root@hs-uf21 oracle]# chmod a-rwx files

[root@hs-uf21 oracle]# ll

d---------  2oracle oinstall      4096 Apr 20 19:41files

 

用oracle用户进入、查看files目录,以及在files目录创建新的文件都会提示权限不足:

[oracle@hs-uf21 ~]$ oracle

[oracle@hs-uf21 ~]$ ll

d---------  2oracle oinstall      4096 Apr 20 19:41files

[oracle@hs-uf21 ~]$ cd files

-bash: cd: files: Permission denied

[oracle@hs-uf21 ~]$ ll files

ls: files: Permission denied

[oracle@hs-uf21 ~]$ touch ./files/test.txt

touch: cannot touch `./files/test.txt': Permissiondenied

给目录files赋予可执行的权限,此时可以进入该目录,但是不可以创建新文件,也不可以ls查看该目录下的文件列表:

[oracle@hs-uf21 ~]$ chmod 100 files

d--x------  2oracle oinstall      4096 Apr 20 19:41files

[oracle@hs-uf21 ~]$ cd files

[oracle@hs-uf21 files]$ touch test.txt

touch: cannot touch `test.txt': Permission denied

 

给目录files赋予可写和可执行的权限,此时可以进行该目录,也可以创建新文件,但不可以使用ls查看该目录下的文件列表:

[oracle@hs-uf21 ~]$ chmod 300 files

d-wx------  2oracle oinstall      4096 Apr 20 19:41files

[oracle@hs-uf21 ~]$ cd files

[oracle@hs-uf21 files]$ touch test.txt

[oracle@hs-uf21 files]$ ls

ls: .: Permission denied

 

给目录files赋予可读、可写和可执行的权限,此时对该目录下所有文件进行各种操作:

[oracle@hs-uf21 ~]$ chmod 700 files

[oracle@hs-uf21 ~]$ cd files

[oracle@hs-uf21 files]$ ll

total 0

-rw-r--r--  1oracle oinstall 0 Apr 20 19:54 test.txt

 

五、目录配置

FHS(Filesystem Hierarchy Standard)规范每个特定的目录下应该要放置什么样子的数据。

FHS依据文件系统使用的频繁与否与是否允许用户随意改动,将目录定义成四种交互使用的形态,如下:

1.可分享的:可以分享给其它系统挂载使用的目录

2.不可分享的:自己机器上运行的设备文件或者是与程序有关的socket文件等。

3.可变动的:经常改变的数据,例如登录文件等。

4.不可变动的:有些数据是不会经常变动的,跟随着distribution面不变动。

 

事实上FHS针对目录树架构仅定义出三层目录下应该放置什么数据,如下:

1./(root,根目录):与开机系统相关;

2./usr(UNIX Software Resource):与软件安装、执行相关;

3..var(variable):与系统运作过程相关。

 

根目录(/)的意义与内容

根目录与开机、还原、系统修复等操作有关,其它所有的目录都是由根目录衍生出来的,同时目录(/)所有的分区越小越好,且应该程序所安装的软件最好不要与根目录放在同一个内,如此不但性能较好,根目录所在文件系统也不容易发生问题。FHS定义的根目录下应该存在的了目录如下:

[/bin  ]:放置系统执行文件的目录

[/boot ]:放置系统开机会使用的文件,包括Linux内核文件以及开机菜单与开机所需配置文件等

[/dev  ]:在Linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录当中的

[/etc  ]:系统主要的配置文件几乎都放置在这个目录

[/home ]:系统默认的用户主文件夹

[/lib  ]:放置系统在开机是需要用到的函数库,以及在/bin或者/sbin下面的命令会调用的函数库

[/media]:放置可以删除的设备,包括软盘、光盘、DVD等设备都暂时挂载与此。

[/opt  ]:放置第三方软件的目录,也可以放置在/usr/local下面

[/root ]:系统管理员(root)的主文件夹

[/sbin ]:放置系统开机过程中需要的命令,包括开机、修复、还原系统等命令。

[/srv  ]:可以视为service的缩写,是一些网络服务启动之后,这些服务需要取胜的数据目录。如www、ftp等。

[/tmp  ]:一般用户或者是正在执行的程序暂时存放文件的地方,这个目录任何用户都可以访问。

[/prod ]:这个目录是一个虚拟文件系统,它放置的数据都是在内存当中的,例如系统内核、进程、外部设备的状态及网络状态等。

[/sys  ]:这个目录也是一个虚拟文件系统,平主要记录内核相关的信息。

 

操作系统软件资源(/usr)的意义与内容

依据FHS的基本定义,/usr里面存放可分享与不可变动的数据是操作系统相关的软件,而不用户的数据,因为系统默认的软件都放置在/usr下面,这个目录有点类似windows系统下有“C:\Windows”和“C:\Program files”这两个目录。系统刚安装完毕时,这个目录占用的空间最大。/usr的子目录一般如下:

[/usr/src   ]:放置源代码

[/usr/bin   ]:放置一般用户可以使用的命令,与/bin(开机过程相关的命令)不同。

[/usr/lib   ]:包含各应用软件的函数库、目标文件、以及不被一般用户惯用的执行文件或者脚本。

[/usr/local ]:系统管理员在本机安装的第三方软件

[/usr/sbin  ]:非系统正常运行所需要的系统命令。

[/usr/share ]:放置共享文件

[/usr/include]:C/C++等程序语言的头文件与包含文件

[/usr/X11R6 ]:放置XWindow系统重要数据。

 

/var的意义与内容

/var目录主要放置常态性变动的文件,包括缓存、登录文件、以及某些软件运行过程所产生的文件。/var目录常见的子目录如下:

[/var/lock ]:放置文件资源或者设备的锁

[/var/log  ]:放置登录文件

[/var/run  ]:某些程序或者服务启动后,会将它们的IID放置在这个目录下。

[/var/spool]:放置一些队列数据

[/var/cache]:应用程序本身运行过程产生的一些暂存文件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值