Linux目录,文件,权限管理

来源:互联网 发布:香蕉网络电视 编辑:程序博客网 时间:2024/05/16 10:29

目录的相关操作

.   代表当前目录

..  代表上层目录

/   根目录

-     代表前一个工作目录

~   代表当前使用者家目录

~account   代表account用户的家目录 

cd           变换目录(changedirectory)

pwd        显示当前目录(printworkingdirectory)

mkdir     建立新目录(makedirectory)

rmdir     删除目录(removedirectory)

 

文件和目录管理

ls     查看文件和目录(list)

-           -a    全部文件

-           -h    humanreadable

-           -R    递归

-           -l     长列表

 

 

cp    复制文件和目录(copy)

-           -f     force

-           -p    复制属性

-           -r     递归

 

rm   删除文件和目录(remove)

-           -f     force

-           -i     询问

-           -r     递归

-            

mv   移动文件和目录(move)

-           -f     force

-           -i     询问

 

查看文件内容

cat  

-           -n    显示行号

tac   反向显示

 

more       可翻页显示,仅下翻

less         可翻页显示,可上下翻

-           /      搜索字符串

-           n     向下搜索

-           N     向上搜索

-           q     退出

 

head       显示头几行

-           -n

 

tail         显示最后几行

-           -n

 

od          显示非文本文件

-           -t     a      预设字符

c      ascii输出

d     十进制输出

f      浮点输出

o     八进制输出

x     十六进制输出

 

文件时间

mtime     (modification time)文件内容改变时,会更新这个时间

ctime      (status time)文件属性改变时,会更新这个时间

atime      (access time)文件被读取时,会更新这个时间

 

touch

-a    修改atime

-c    仅修改时间,不建立文件

-d    接日期

-m   修改mtime

-t     接时间


Linux权限操作 


文件和目录的预设权限和隐藏权限

文件预设权限      umask

表示去掉某个权限

 

文件隐藏属性

chattr     (change attribute)

+     增加属性

-           去掉属性

=     设定等于属性

a      文件只能增加数据,不能删除

i      文件不能删除、改名、写入

 

lsattr      (listattribute)

-a    包括隐藏文件

-R    递归


Linux文件权限

每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。 利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为 准。第一个字段由10个字符组成,如下:
        -rwxr-xr-x
第一位表示文件类型,-表示文件,d表示目录
2-4位表示文件所有者的权限,u权限
5-7位表示文件所有者所属组成员的权限,g权限
8-10位表示所有者所属组之外的用户的权限,o权限   
2-10位的权限总和有时称为a权限

以上例子中,表示这是一个文件(非目录),文件所有者具有读、写和执行的权限,所有者所属组成员和所属组之外的用户具有读和执行的权限而没有写的权限。


文件权限修改----chmod

1. 用数字表示法修改权限

    所谓数字表示法,是指将r、w和x分别用4、2、1来代表,没有授予权限的则为0,

    然后把权限相加,如下   

 原始权限 转换为数字 数字表示法 rwxrwxr-x (421)(421)(401) 775 rwxr-xr-x (421)(401)(401) 755
    修改权限的例子:将文件test的权限修改为所有者和组成员具有读写的权限,其他 人只有读权限
         chmod 664 test
    2. 用文本表示法修改权限
    文本表示法用4个字母表示不同的用户:
    u:所有者
    g:组成员
    o:其他成员
    a:所有人
    权限仍用r、w和x表示
    和数字表示法不同,文本表示法不仅可以重新指定权限,也可以在原来权限的基础上增加或减少权限,如下:
    =:重新制定权限
    -:对目前的设置减少权限
    +:对目前的设置增加权限
    例子:讲上述例子中,所有者加上执行权限,组成员减少执行权限,其他成员设置为 执行权限,执行以下命令
    chmod u+x,g-x,o=x test 

    注意:逗号前后不能有空格


目录权限

    目录权限的修改和文件权限修改不同,只是四种权限代表的含义如下:
    r:可列出目录中的内容
    w:可在目录中创建、删除和修改文件
    x:可以使用cd命令切换到此目录
    -:没有任何此目录的访问权限
    注意:目录可以使用通配符"*"来表示目录中的所有文件,如将/test目录中的所有文件 的权限设置为任何人都可以读写

     chmod 666 /test/*


特殊权限

linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit

1、setuid、setgid

先看个实例,查看你的/usr/bin/passwd 与/etc/passwd文件的权限

[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd
-rw-r--r-- 1 root root  1549 08-19 13:54 /etc/passwd
-rwsr-xr-x 1 root root 22984 2007-01-07 /usr/bin/passwd

众所周知,/etc/passwd文件存放的各个用户的账号与密码信息,/usr/bin/passwd是执行修改和查看此文件的程序,但从权限上看,/etc/passwd仅有root权限的写(w)权,可实际上每个用户都可以通过/usr/bin/passwd命令去修改这个文件,于是这里就涉及了linux里的特殊权限setuid,正如-rwsr-xr-x中的s

setuid就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限,setgid同理指”组“

作为普通用户是没有权限修改/etc/passwd文件的,但给/usr/bin/passwd以setuid权限后,普通用户就可以通过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了

2、stick bit (粘贴位)

再看个实例,查看你的/tmp目录的权限

[root@MyLinux ~]# ls -dl /tmp
drwxrwxrwt 6 root root 4096 08-22 11:37 /tmp

 tmp目录是所有用户共有的临时文件夹,所有用户都拥有读写权限,这就必然出现一个问题,A用户在/tmp里创建了文件a.file,此时B用户看了不爽,在/tmp里把它给删了(因为拥有读写权限),那肯定是不行的。实际上是不会发生这种情况,因为有特殊权限stick bit(粘贴位)权限,正如drwxrwxrwt中的最后一个t

stick bit (粘贴位)就是:除非目录的属主和root用户有权限删除它,除此之外其它用户不能删除和修改这个目录

也就是说,在/tmp目录中,只有文件的拥有者和root才能对其进行修改和删除,其他用户则不行,避免了上面所说的问题产生。用途一般是把一个文件夹的的权限都打开,然后来共享文件,象/tmp目录一样。

3、如何设置以上特殊权限

         setuid:chmod u+s xxx

setgid: chmod g+s xxx

stick bit : chmod o+t xxx

或者使用八进制方式,在原先的数字前加一个数字,三个权限所代表的进制数与一般权限的方式类似,如下:

suid   guid    stick bit

  1        1          1

所以:suid的二进制串为:100,换算十进制为:4

guid的二进制串为:010,换算:2

stick bit 二进制串:001,换算:1

于是也可以这样设:setuid:chmod 4755 xxx

setgid:chmod 2755 xxx

stick bit:chmod 1755 xxx

最后,在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那代表此文件的特殊权限没有生效,是因为你尚未给它对应用户的x权限. 


指定文件的默认权限掩码-----umask

权限掩码有4个八进制的数字组成,讲现有的权限减掉权限掩码后,即可产生此文件建立 时的默认权限。

一般来说,新建文件的默认值是0666,新建目录的默认值是0777,如果将全线掩码设置 为0002,则每个新建文件的默认权限为0666-0002=0664,而目录的默认权限则为775。

可以直接输入umask命令来检查目前的默认权限掩码,或输入"umask 权限掩码"来指定默认权限掩码。

用umask的方式指定默认权限掩码,可以避免添加访问权限过大的文件或目录。


Linux文件种类

正规文件:第一个属性为 “-”

纯文本文件

类似windows中的txt文件,但是linux的文本更广泛

二进制文件

类似windows中的exe可执行文件

数据格式文件

数据文件,用文本方式读取可能是乱码,例如log文件,可以通过last等指令读取

目录,第一属性为“d”

 连接文件,第一属性为“l”

类似windows下快捷方式,但又不全相同,具体细节以后讨论

 设备文件

通常在/dev目录下,分两类

区块设备文件,第一属性为“b”

一般为存储设备,例如:硬盘之类的

字符设备文件,第一属性为“c”

一般是串口设备,如键盘或者鼠标等

数据接口文件,第一属性为“s”

通常用作socket编程时的,数据传输

命名管道文件,第一属性为“p”

常用于多进程间的读写操作


Linux文件扩展名

严格来说linux里面是没有所谓扩展名的,linux不像windows一样严格以后缀来识别文件类型。但是有些文件为了让使用者了解它的作用所以也会带扩展名。

例子:

*.sh        shell        脚本文件

*.z *.tar  *.tar.gz  *.zip *.tgz              压缩文件

*.html *.php              网页文件

*.pl         perl脚本


Linux目录结构(FHS)

/:Linux文件系统根目录/bin:binary的所写,存放用户的可执行程序,例如ls,cp和mv等,也包含其它的shell,如bash
  • /boot:系统启动时需要的文件,如vmlinuz和initrd.img
  • /dev:接口设备文件目录,如hda表示第一块IDE硬盘
  • /etc:有关系统设置与管理的文件,如passwd。保存在/etc目录中的文件一般都不是二进制文件
  • /etc/X11:X Window系统的设置目录
  • /home:用户的主目录
  • /lib:仅包含执行/bin和/sbin目录中的二进制文件时所需要的共享类库
  • /mnt:设备文件系统的挂载点,如光盘的默认挂载点是/mnt/cdrom
  • /opt:通常提供一个空间,供较大型且固定的应用程序软件保存文件使用,这样可以避免将文件分
  •               散到整个文件系统
  • /proc:目前系统内核与程序执行的信息,它和ps可以看到的内容相同
  • /root:root管理员主目录,其它用户的主目录都位于/home目录中
  • /sbin:system binary的缩写,存放的是系统启动时需要执行的程序,如swapon
  • /tmp:存放临时文件的目录
  • /usr:存放用户使用的系统命令,以及应用程序等信息/usr/bin:存放用户可执行的程序,如mdir/usr/inculde:保存供C语言加载的头文件/usr/include/X11:保存供X Window程序加载的头文件 /usr/lib:类库/usr/lib/X11:X Window类库 /usr/local:提供自行安装的应用程序位置/usr/sbin:存放非经常性使用的程序,如showmount/usr/src:保存程序的源文件/usr/X11R6/bin:存放X Window系统的执行程序
  • /var:Variable的缩写,具有可变性质的相关程序目录,如log、spool等
初学者可以使用ls或ll指令查看各个文件夹,通过查看各个文件夹下文件的颜色来了解文件的含义。
文件颜色的含义:蓝色为文件夹;绿色是可执行文件;浅蓝色是链接文件;红框文件是加了SUID位,任意限权;

红色为压缩文件;褐色为设备文件。


目录结构详解

目录

描述

/

第一层次结构的根、整个文件系统层次结构的根目录

/bin/

需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:catlscp,和/usr/bin类似。

/boot/

引导程序文件,例如:kernelinitrd;时常是一个单独的分区[6]

/dev/

必要设备例如:/dev/null.

/etc/

特定主机,系统范围内的配置文件

关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为/etcetra 目录[7]这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。[8]自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")[9]

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系统(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/home/

用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。

/lib/

/bin/ and /sbin/中二进制文件必要的文件。

/media/

可移除媒体(CD-ROM)的挂载点 (FHS-2.3中出现)

/lost+found

ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。

/mnt/

临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用

/opt/

可选应用软件

/proc/

虚拟文件系统,将内核进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root

/root/

超级用户家目录

/sbin/

必要的系统二进制文件,例如: init ip mountsbin目录下的命令,普通用户都执行不了。

/srv/

站点的具体数据,由系统提供。

/tmp/

临时文件(参见 /var/tmp)在系统重启时目录中文件不会被保留。

/usr/

默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的()用户工具和应用程序。

/var/

变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。


/etc目录

特定主机系统范围内的配置文件


目录

描述

/etc/rc /etc/rc.d

/etc/rc*.d

启动、或改变运行级时运行的scriptsscripts的目录.

/etc/hosts

本地域名解析文件

/etc/sysconfig/network

IP、掩码、网关、主机名配置

/etc/resolv.conf

DNS服务器配置

/etc/fstab

开机自动挂载系统,所有分区开机都会自动挂载

/etc/inittab

设定系统启动时Init进程将把系统设置成什么样的runlevel及加载相关的启动文件配置

/etc/exports

设置NFS系统用的配置文件路径

/etc/init.d

这个目录来存放系统启动脚本

/etc/profile/etc/csh.login,  /etc/csh.cshrc

全局系统环境配置变量

/etc/issue

认证前的输出信息,默认输出版本内核信息

/etc/motd

设置认证后的输出信息,

/etc/mtab

当前安装的文件系统列表.scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令

/etc/group

类似/etc/passwd ,但说明的不是用户而是组.

/etc/passwd

用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.

/etc/shadow

在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.

/etc/sudoers

可以sudo命令的配置文件

/etc/syslog.conf

系统日志参数配置

/etc/login.defs

设置用户帐号限制的文件

/etc/securetty

确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.

/etc/printcap

类似/etc/termcap ,但针对打印机.语法不同.

/etc/shells

列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.

/etc/xinetd.d

如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系统(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/etc/skel/

默认创建用户时,把该目录拷贝到家目录下



/usr目

默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。

目录

描述

/usr/X11R6

存放X-Windows的目录;

/usr/games

存放着XteamLinux自带的小游戏;

/usr/doc

Linux技术文档;

/usr/include

用来存放Linux下开发和编译应用程序所需要的头文件;

/usr/lib

存放一些常用的动态链接共享库和静态档案库;

/usr/man

帮助文档所在的目录;

/usr/src

Linux开放的源代码,就存在这个目录,爱好者们别放过哦;

/usr/bin/

非必要可执行文件 (单用户模式中不需要);面向所有用户。

/usr/lib/

/usr/bin//usr/sbin/中二进制文件的

/usr/sbin/

非必要的系统二进制文件,例如:大量网络服务守护进程

/usr/share/

体系结构无关(共享)数据。

/usr/src/

源代码,例如:内核源代码及其头文件。

/usr/X11R6/

X Window系统版本 11, Release 6.

/usr/local/

本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin/lib/share/.这是提供给一般用户的/usr目录,在这里安装一般的应用软件;



/var目录

/var 包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.

目录

描述

/var/log/message

日志信息,按周自动轮询

/var/spool/cron/root

定时器配置文件目录,默认按用户命名

/var/log/secure

记录登陆系统存取信息的文件,不管认证成功还是认证失败都会记录

/var/log/wtmp

记录登陆者信息的文件,last,who,w命令信息来源于此

/var/spool/clientmqueue/

当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此

/var/spool/mail/

邮件目录

/var/tmp  

/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)

/var/lib  

系统正常运行时要改变的文件.  

/var/local  

/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .  

/var/lock  

锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.

/var/log/

各种程序的Log文件,特别是login   (/var/log/wtmp log所有到系统的登录和注销)syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.  

/var/run  

保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.

/var/cache/

应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。


/proc目录

虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。

例如:uptime network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root

目录

描述

/proc/meminfo

查看内存信息

/proc/loadavg

还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!

/proc/uptime

就是用 uptime 的时候,会出现的资讯啦!

/proc/cpuinfo

关于处理器的信息,如类型、厂家、型号和性能等。

/proc/cmdline

加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!

/proc/filesystems  

目前系统已经加载的文件系统罗!

/proc/interrupts

目前系统上面的 IRQ 分配状态。

/proc/ioports

目前系统上面各个装置所配置的 I/O 位址。

/proc/kcore

这个就是内存的大小啦!好大对吧!但是不要读他啦!

/proc/modules

目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!

/proc/mounts

系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!

/proc/swaps

到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!

/proc/partitions

使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!

/proc/pci  

 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!

/proc/version

核心的版本,就是用 uname -a 显示的内容啦!

/proc/bus/*  

一些汇流排的装置,还有 U的装置也记录在此喔!


/dev目录

设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备文件一般存放在/dev目录下,

对常见设备文件作如下说明:


目录

描述

/dev/hd[a-t]

IDE设备

/dev/sd[a-z]

SCSI设备

/dev/fd[0-7]

标准软驱

/dev/md[0-31]

raid设备

/dev/loop[0-7]

本地回环设备

/dev/ram[0-15]

内存

/dev/null

无限数据接收设备,相当于黑洞

/dev/zero

无限零资源

/dev/tty[0-63]

虚拟终端

/dev/ttyS[0-3]

串口

/dev/lp[0-3]

并口

/dev/console

控制台

/dev/fb[0-31]

framebuffer

/dev/cdrom

=> /dev/hdc

/dev/modem

=> /dev/ttyS[0-9]

/dev/pilot

=> /dev/ttyS[0-9]

/dev/random

随机数设备

/dev/urandom

随机数设备