Linux文件权限与目录管理详解_Linux

一、Linux文件系统的三种身份

1)、文件所有者
2)、同组用户
同一个用户组的用户可以访问该用户组的文件;
每个账号可以加入多个用户组。
在同一个用户组的文件也可以设置不同的权限,可以不让本组用户查看。
3)、其他人
除了文件主、同组用户以外的人就是其他人。
PS: /etc/passwd 记录所有用户的账号
/etc/shadow 记录所有用户的密码
/etc/group 记录所有的组名

二、文件属性

ls -al 显示所有的文件名和相关属性(包括以.开头的隐藏文件)

total 72
drwxr-xr-x+ 28 chaibozhou staff  952 4 23 08:08 .
drwxr-xr-x  5 root    admin  170 4 13 21:24 ..
-r--------  1 chaibozhou staff   9 3 21 12:00 .CFUserTextEncoding
-rw-r--r--@ 1 chaibozhou staff 10244 4 23 11:25 .DS_Store
drwx------  5 chaibozhou staff  170 4 23 14:13 .Trash
-rw-------  1 chaibozhou staff  3205 4 23 16:37 .bash_history
drwxr-xr-x  6 chaibozhou staff  204 4 4 15:51 .config

第一列:文件的类型和权限
d:目录文件
-:普通文件
l:链接文件
b:用于存储数据的设备文件
c:用于传输数据的设备文件:鼠标、键盘

接下来都是三个字符为一组,分别表示文件所有者的权限、同组用户的权限、其他用户的权限,而且r、w、x的顺序是固定不变的。

第二列:有多少文件名连接到此节点

第三列:这个文件/目录的所有者账号
第四列:这个文件所属的用户组
第五列:这个文件的大小,单位是B
第六列:这个文件的创建日期或修改日期
若想要现实完整的日期时间,可以在ls上加上参数:ls -l –full-time
PS:在Linux的命令中,如果参数以-开头,则表示后面的参数是简写;如果以--开头,则表示后面的参数是完整的。这里的full-time就是一个完整的参数。
PS:如果当初使用中文安装Linux的话,显示完整的日期应该会以中文显示,但中文无法在命令窗口中显示,此时就会出现乱码,此时只能设置一下,让日期用英文显示:LANG=en_US
第七列:文件名

三、Linux权限的重要性

1、保护系统文件的功能
通常系统文件只有root管理员才有读、写、执行的权限。
2、为团队开发提供数据共享的功能
同一个开发团队可以设置成同组用户,从而能够共享文件。

四、改变文件属性与权限的命令

1、chgrp:改变文件所属的用户组
chgrp [-R] 新用户组 目录或文件 : 将这个路径下的文件的用户组改成“新用户组“
PS:这个新用户组一定得是/etc/group下有的,否则会报错。
PS:若最后一个参数是目录,则表示只将这个目录下的文件的用户组改成这个。
PS:-R表示若最后一个参数是目录,则将当前目录下的文件连同子目录下的所有文件的用户组都改成这个。
2、chown:改变文件主
chown [-R] 用户名 文件或目录 : 将这个目录下的所有文件的文件主都改成这个用户名。
PS:这个用户名必须是/etc/passwd下有的才行。
这个命令可以既修改文件主又修改用户组:chown [-R] 用户名:用户组名 目录/文件
chown [-R] 用户名.用户组名 目录/文件
PS:由于用户名可以存在小数点,当出现含有小数点的用户名时,系统会发生误判,所以我们一般都使用:来连接用户名和用户组名。
还可以仅修改用户组名:chown [-R] .用户组名 目录/文件
什么时候需要改变文件的文件主和用户组?
当我们把一个文件拷贝给别人的时候,假设这个文件只能文件主读取,由于拷贝会把文件的权限和所有的属性都一同复制,那么当另外一个人拿到拷贝后的文件后仍然无法访问;所以在拷贝完成之后,第一个人应当修改文件的属性和权限。

cp  原目录/原文件  新目录/新文件
1、chmod:改变文件的权限
改变文件的权限有两种办法,分别是:用数字进行权限的修改、用符号进行权限的修改。
a)用数字进行权限的修改
前面我们已经知道,权限有9个字母组成,并且每三个为一组,分别表示:文件主的权限、同组用户的权限、其他人的权限。在这种方式中,r=4、w=2、x=1,将每一组的三个值加起来,组成一个三位数即可。例如:
文件主:rwx = 4+2+1=7;
同组用户:rwx=4+2+1=7;
其他人:---=0+0+0=0;
所以命令如下:

chmod [-R] 770 文件/目录

b)用符号进行权限的修改
chmod  u/g/o/a  +/-/=  r/w/x  文件/目录
例子:文件主能够读、写、执行;同组用户和其他用户能够读、执行。
chmod  u=rwx,go=rx  文件名
假设原先不知道文件的属性,现在只想让所有的人能够执行这个文件,则:
chmod  a+x  文件/目录
假设原先不知道文件的属性,现在只想让同组用户和其他用户无法写,则:
chmod  go-w  文件/目录
目录与文件权限的意义

一个文件具有rwx,仅仅表示用户可以对这个文件内容进行读、写、执行,即读取文件内容、向文件中写入内容、执行文件。但并不具备删除这个文件的权限。

一个目录具有rwx:
r:表示具有读取目录结构的权限,也就是我可以通过ls这个命令来查看目录的结构,但是,我是无法通过cd进入到这个目录下的。
w:表示具有更改目录结构的权限,即能够创建/删除/重命名/移动文件/目录。
x:表示某一用户能够通过cd进入到这个目录下。
PS:一个目录是否有x权限是非常重要的,如果没有x权限,表示不能进入到这个目录下,也就是不能执行这个目录下的所有程序。例:有一个目录文件如下

drwxr--r--  3  root  root  4096  日期  .ssh
这个目录文件的同组用户和其他用户只能通过ls查看目录的结构,不能cd到这个目录中去,也不能执行这里面的所有程序。

在架站时,要将服务器中的一些资源给外界访问,但如果一个目录只开放了r权限,那么只能ls这个目录的结构,却不能进入到这个目录中访问里面的数据。若要把目录中的数据开放给别人浏览的话,至少要开放r和x权限,但w权限不能轻易开放。例如:

假设有个账号user1,她的主文件夹是:/home/user1,user1对此目录文件具有rwx权限,在这个文件夹下有一个data文件,权限如下:-rwx—— 1 root root ……,则:
user1对于这个文件来说属于其他用户,不具备任何权限;但是对于这个文件夹来说,具有rwx,能够通过ls查看文件夹的目录结构,能够通过cd进入该文件夹,能够在这个文件夹下创建、删除、重命名、移动文件。

使用root账号在/temp下创建一个目录/dir,该目录的权限为744;再在/dir下创建文件test。
分析:对于dir这个目录,文件主rwx,同组用户和其他用户只能r;即:文件主能够ls这个目录结构,能够cd到这个目录,能够在这个目录中创建、删除、重命名、移动文件;而同组用户和其他用户只能ls这个目录结构。
PS:创建目录:mkdir 目录名
PS:创建空文件:touch 文件名

#用root身份进行以下操作
cd /temp
mkdir dir
chmod 744 dir
touch dir/test
chmod 600 dir/test #对于这个文件,文件主4+2:读和写,同组用户和其他用户啥也不能干
#现在切换身份至chai
su - chai #切换身份的命令:su - 用户名
cd /temp
ls -l dir #现在身份是chai,对于这个目录来说,是其他用户,那么只有r权限,也就是只能ls这个目录的结构,无法cd到这个目录中去
cd dir #直接报错:permission denied
exit #退出到刚才的身份
chown chai /temp/dir #将dir这个目录的文件主改为chai,此时chai具有rwx权限
cd /temp/dir #此时chai可以cd到dir中,可以在dir中创建、删除、重命名、移动文件
rm test #删除test文件

五、Linux文件种类

普通文件-
1. 纯文本文件
可以通过cat /chai来查看chai这个普通文件。
2. 二进制文件
Linux中的可执行文件(scripts和文字批处理文件不算)。
刚才的cat就是二进制文件。
3. 数据格式文件
就是程序运行时会被读取的具有特定格式的文件,如配置文件。
例如:用户在登陆Linux时,登陆日志会被记录在/var/log/wtmp这个文件中,这个文件就是一个数据格式文件。
PS:数据格式文件要用last去读,若用cat读会出现乱码。

目录文件d

连接文件l
就是Windows下的快捷方式。

设备文件
1. 块设备文件b
用于存储数据的设备文件,如:硬盘、软盘。
2. 字符设备文件c
用于数据传输的设备文件,如:键盘、鼠标。
3. 套接字s
这个设备文件在/var/run中。
4. 管道p
用于解决多个程序同时访问一个文件所造成的错误问题。

六、Linux扩展名

Linux并没有扩展名,一个Linux的文件是否可以执行,取决于这个文件的属性中是否有x这个权限。
但是为了增强文件的可读性,我们还是给文件增加了“扩展名“。
*.sh表示脚本或批处理文件。
*Z、*.tar、*.tar.gz、*.zip、*.tgz他们都是压缩文件。
PS:从网上下载的文件的权限是有可能发生改变的,所以当我们下载的文件无法运行时查看一下它的权限是否有x。

七、Linux对文件的限制

Linxu默认采用Ext2/Ext3文件系统,对文件名的长度限制为:
单个文件名或目录名最大长度255个字符;
完整的文件或目录名最大长度为4096个字符。
文件命名时要避免一些特殊字符。

八、Linux目录配置标准

由于开发Linux distribution的厂商非常多,所以要对这些厂商开发的文件系统规范化,因此就出现了文件系统配置规范:Filesystem Hierarchy Standard=FHS。

FHS对目录规范的四种类型:

1、可分享的目录
表示这个目录可以分享给网络上的其他主机挂载使用。
2、不可分享的目录
只能在自己机器上运行的设备文件或者与程序有关的socket文件,由于只与自己的机器有关,所以自然就不能分享给其他主机了。
3、不变的目录
不管什么样的distributions,这些目录是固定不变的,而且目录里面的文件数据基本不发生变化。一般这些目录中存放函数库、系统配置文件等。
4、可变的目录
这些目录中文件的数据一直会发生变化,如日志文件。
根目录是整个系统最重要的目录,其他所有的饿目录都是由根目录衍生而来的,同时根目录也与开机、还原、系统修复等操作有关。

FHS建议:根目录要足够的小,而且应用程序不要和根目录放在同一个分区中。

FHS建议根目录下必须要有这些目录:
- /bin:在bin目录下的命令可以被所有账号使用,一般的命令是:cat、chmod、chown、date、mv、mkdir、cp、bash
- /boot:放开机会用到的文件
- /dev:任何设备都是以文件的形式存放在这个目录当中
- /etc:系统主要的配置文件都放在这个目录中。这个目录下的文件属性是可以给一般用户查阅的,但只有root才可以修改,FHS建议:这个目录下不要放置可执行文件。
- /home:系统默认的用户主文件夹。
~表示当前登陆用户的主文件夹
~chai表示指定用户的主文件夹
- /lib:存放开机时用到的库函数及/bin、/sbin目录下的命令会使用到的库函数。
- /media:放置可删除的设备文件。如:软盘、光盘。
- /mnt:如果要临时挂载一些额外的设备就放在这个文件夹下。
- /opt:放置第三方软件的目录
- /root:系统管理员的主文件夹
- /sbin:放置开机过程中需要的,包括开机、修复、还原系统所需要的命令
- /srv:是service的缩写,存放网络服务所需的一些数据。
- /tmp:一般用户执行程序暂时存放数据的地方。任何人都可以访问,所以要定时清理一下。FHS建议distributions开机时要将这个目录清空。

其他重要的目录:
- /lost+found:使用ext2/ext3文件系统才会产生的一个目录。当文件系统发生错误时,一些丢失的片段就会放在这个目录中。
- /proc:是一个虚拟文件系统,也就是它的数据都是存放在内存中的,不占用硬盘空间。
- /sys:也是一个虚拟文件系统,记录内核相关信息。

开机的时候只有根目录被挂载了,其他的目录所在的分区都是在系统启动完成之后才被挂载的。因此与开机过程有关的目录就必须要和根目录放在同一个分区中。必须与根目录放在同一个分区中的目录有:

/etc:配置文件
/bin:重要的执行文件
/dev:所需要的设备文件
/lib:执行文件所需要的库函数与内核所需要的模块
/sbin:重要的系统执行文件

/usr目录
=UNIX Software Resource,是操作系统关键资源放置的目录。
FHS建议:所有软件开发者都应将数据放置在这个目录的子目录下,而不要自行创建独立的目录。
这个目录就相当于Windows下的c:\program files。

/var目录
/usr放置安装程序时所需要的较大容量的文件,而/var下存放在程序执行过程中渐渐才会占用硬盘的目录。如:缓存、日志等。

每一个目录不只能挂载本地的文件系统,还可以使用网络上的文件系统。可以利用Network File System服务器=NFS服务器来挂载网络山的指定目录。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索Linux文件权限
Linux目录管理
linux文件权限详解、linux 文件目录权限、linux 文件与目录权限、linux权限详解、linux 目录详解,以便于您获取更多的相关知识。

时间: 2024-09-08 07:20:08

Linux文件权限与目录管理详解_Linux的相关文章

一天一个shell命令 linux文件操作系列-ln命令详解_linux shell

里提示一下:ubuntu的翻译很多都是字面直译,存在很多问题,所以建议大家参照我这里的解释.当然本来也是有些赶文的嫌疑,望指正. 经常在linux上操作,有在不同的目录下切换某几个固定的命令,或者修改几个固定的文件,这时候,如果能在一个目录下就操作他们,会是一件多么轻松的事情.我们来看看链接命令ln 全称 ln 全称是link 顾名思义,这是一个建立一个链接.怎么去理解呢?它的功能类似于Mac OS的别名或者Windows的快捷方式, 删除不会影响文件本身. 说明:(直接看看斜体,就行了) 链接

Node.js的文件权限及读写flag详解_node.js

一.文件权限的数字类型 用数字来代表各个权限,各权限的分数对照表如下:      r: 4      w: 2      x: 1 文件的基本权限有9个,分别是owner.group.others三种身份各有自己的read.write.execute权限.例如文件的权限字符为"-rwxrwxrwx"这9个权限是三个三个一组的.每种身份(owner.group.others)各自的权限(r.w.x)分数是需要累加的. 例如,当权限为[-rwxrwx-]时,分数则是: owner = rw

linux中 关于screen 的命令详解_Linux

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GNU

一天一个shell命令 linux好管家-磁盘-du命令详解_linux shell

du命令 磁盘管理 du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 语法 du [选项][文件] 选项 -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes 以KB(1024bytes)为单位输出. -m或--megabytes 以MB为单位

linux下配置yum源方法详解_Linux

本人使用的方法一,成功配置,方法二没测过,可以作为参考 方法一: 1.确保RHEL5中已经安装了yum [root@lvs-master ~]# rpm -qa |grep yum yum-metadata-parser-2-el5 yum-updatesd-9-el5 yum-22-el5 yum-security-16-el5 yum-rhn-plugin-4-el5 2.修改源配置文件 #vim /etc/yum.repos.d/CentOS-Base.repo (如果目录下没有.repo

Linux查看命令之od命令详解_Linux

od(octal dump)命令 od(octal dump)命令可以以八进制.十进制.十六进制和ASCII码的格式来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符(如换行符等)很有用.此外,在一些有空洞的文件中可以通过od命令查看空洞的位置. 一般使用格式: od [-aBbcDdeFfHhIiLlOosvXx] [-A base] [-j skip] [-N length] [-t type] [[+]offset[.][Bb]] [file ...] 来个简化版:

一天一个shell命令 linux好管家--磁盘--df命令详解_linux shell

df命令 磁盘管理 df命令用于显示磁盘分区上的可使用的磁盘空间.默认显示单位为KB.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法 df(选项)(参数) 选项 -a或--all:包含全部的文件系统: --block-size=<区块大小>:以指定的区块大小来显示区块数目: -h或--human-readable:以可读性较高的方式来显示信息: -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes: -i或--inod

rsync实现linux文件同步到windows配置详解

说明: 本篇文章实现linux定时将www,msyql,svn目录rsync到win2003指定目录上. win2003安装CWRsync,做为rsync的server端,运行CWRsync守护进程daemon,接受linux同步过来的文件: linux为centos,本身就有rsync,按时rsync文件到win上. 环境: win2003 192.168.1.2 CWRsync rsyncd服务端,以daemon守护进程运行 linux 192.168.1.3 rsync客户端 实现: 1.

oracle用户权限、角色管理详解_oracle

Oracle 权限设置 一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的). 二.系统权限管理: 1.系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构. RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构. CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构.