1.linux 文件权限
-rw-r--r-- 1 root root 915 4月 25 14:58 100
解释:
A.-rw-r--r-- 代表文件属性 一共十个属性
第1列是文件的属性:
d:表示是一个目录,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
第2-10列是三个属性为一组,一共三组,代表用户对这个文件的权限
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限
2-4列是拥有者权限,即owner,
5-7列是群组权限,即group
8-10列是非本群组的用户权限,others
下面举例说明:
-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr―r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
注意:这里x与目录的关系相当重要,如果你在该目录下不能执行任何指令,那么自然就无法ls,cd等指令,当然就无法进入目录.因此,如果 你想开放某个目录,那么请将该目录的x属性也打开.
另外,liunx下文件是否能执行是由x属性来决定的,跟文件的后缀名没什么关系
B. 1
这一栏表示链接数(如果是目录,通常与该目录下的子目录数有关)
C: root root
这两栏前一个代表文件或目录的拥有者,后一个表示拥有者的群组
D:915
这一栏表示文件的大小
E:4 月25 14:58
这一栏表示文件的建档时间或最近的修改时间
F:100
这一栏表示文件名,如果文件名前面多一个".",那么表示这个文件为隐藏文件.在ls -al显示出来,如果无a参数,文件名带有"."的文件是无法显示出来的
表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
此外,默认的权限可用umask命令修改,用法非常简单,只需执行umask 777 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。通常root帐号搭配umask命令的数值为022、027和077,普通用户则是采用002,这样所产生的权限依次为755、750、700、775
2.改变文件的权限
A.改变群组 chgrp(change group)
B.改变拥有者 chown(change owner) 加上-R参数修改目录下的所有子目录或文件的拥有者
C.改变权限 chmod -R xyz 文件或目录
文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
将同一组的数字相加,即可得到数字表示
如有一个文件的权限属性为-rwxr-x---
即有rwx=4+2+1=7
r-x=4+0+1=5
---=0+0+0=0
那么这个文件的权限数字表示法为750
也可根据符号类型来改变文件形态
按照顺序,三个一组即可得到user,group,others三组,可以用u,g,o来表示3个组的属性,a即all可表示全部三组,
范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
+表示增加权限
-表示删除权限
3.文件格式和文件种类
linux能否支持某个文件格式与核心是否将其编译进去有关,在/lib/modules/`uname -r`/kernel/fs里面看有相应的文件格式
ext3作为linux的文件格式 :
最近发布的Linux版本大多已经默认采用ext3或reiserfs这种具有日志式
管理的文件系统了。
什么是日志式文件系统呢?或者,ext3与ext2有什么不同?ext3其实只是多做了一个日志式数据的记录。要将数据写入硬盘时,ext2是直接将数据写入,但ext3则会将这个“要开始写入”的信息写入日志式记录区,然后才开始写入数据。在数据写入完毕后,又将“完成写入动作”的信息写入日志式记录区,这有什么好处呢?最大的好处就是数据的完整性与“恢复力”。
什么是“恢复力”呢?早期的ext2文件系统如果遇到断电,文件系统就要检查文件一致性。这个检查过程要将整个分区内的文件进行完整的比较,很慢,时间很久。如果是ext3,那么只要通过检查“日志记录区”就可以知道,断电时有哪些文件正在进行写入,只要检查这些地方即可。这样就能够节省很多文件检查的时间。
所以我们要选择ext3。Red Hat公司首席核心开发人员Michael K. Johnson说:
“为什么要从ext 2转换到ext3呢?有4个主要的理由:可利用性、数据完整性、速度及易于转换”。“可利用性”,他指出,这意味着从系统中止到快速重新复原,而不是持续让e2fsck执行长时间的修复。ext3的日志式条件可以避免数据毁损的可能。他也指出:“除了写入若干数据超过一次的情况,ext3往往会比ext2更快,因为ext3的日志使硬盘读取头的移动能更有效地进行”。然而,或许决定因素还是在Johnson先生的第4个理由中。
“我们可以轻松地从ext2更改到ext3,获得强有力的日志式文件系统,而不需要重新做格式化”。这是正确的,为了体验ext3的好处,不需要去做长时间的、冗长乏味的且易于产生错误的
备份工作及重新格式化的动作。
Linux的文件种类主要有下面这几种:
• 普通文件(regular file):就是一般我们存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx]。另外,依照文件的内容,又大致可以分为:
纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容为我们可以直接读到的数据,例如数字、字母等等。设置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。
二进制文件(binary):我们在GNU发展史中提过,系统其实仅认识且可以执行二进制文件(binary file)。Linux中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令cat就是一个二进制文件。
数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。举例来说,Linux在用户登入时,都会将登录数据记录在 /var/log/wtmp文件内,该文件是一个数据文件,它能通过last命令读出来。但使用cat时,会读出乱码。因为它是属于一种特殊格式的文件。
• 目录(directory):就是目录,第一个属性为 [d],例如 [drwxrwxrwx]。
• 连接文件(link):类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]。
• 设备与设备文件(device):与系统外设及存储等相关的一些文件,通常都集中在 /dev目录。通常又分为两种:
块(block)设备文件:就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。
字符(character)设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。
• 套接字(sockets):这类文件通常用在网络数据连接。我们可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型。
• 管道(FIFO, pipe):FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]。
那么,使用“ls -al”命令,就可以简单通过判断每一个文件的第一个属性来了解这个文件是何种类型。
除了设备文件是系统中很重要的文件,最好不要随意修改之外(通常它也不会让你修改),另一个比较有趣的文件就是连接文件。如果常常将应用程序放到桌面,就应该知道在Windows下面有所谓的“快捷方式”。同样,可以将Linux 下的连接文件简单视为一个文件或目录的快捷方式。套接字与管道文件比较难理解,因为它们与进程(process)密切相关,到将来了解进程(第17章)之后,再回来查看吧。此外,也可以通过man fifo及man socket来查看系统说明。
Linux文件扩展名
基本上,Linux文件是没有“扩展名”的,我们知道,Linux文件能否执行,与它第一列的10个属性有关,与文件名一点关系也没有。这与Windows不同。在Windows中,能执行的文件扩展名通常是 .com、.exe、.bat等等,而在Linux中,只要属性中有x,例如 [-rwx-r-xr-x] 即表示这个文件可以执行。
,x表示这个文件具有可执行的能力,但能不能执行成功,当然就要看该文件的内容。
下面有数种常用的扩展名:
• *.sh:批处理文件(scripts,脚本),因为批处理文件使用shell写成,所以扩展名就编成 .sh。
• *Z, *.tar, *.tar.gz, *.zip, *.tgz:经过打包的压缩文件。这是因为压缩软件分别为gunzip、tar等等的,根据不同的压缩软件而取其相关的扩展名。
• *.html, *.php:网页相关文件,分别表示HTML语法与
PHP语法的网页文件。.html的文件可使用网页浏览器来直接打开, .php的文件则可以通过客户端的浏览器来浏览服务器端,以得到运算后的网页结果。
另外,还有程序语言如Perl的文件,其扩展名也可能取成 .pl。
另外,在Linux中,每一个文件或目录的文件名最长可以到255个字符,加上完整路径时,最长可达4096个字符,是相当长的文件名。
4.linux目录配置
linux的树状目录如下图:
请注意,每个目录都是依附在 / 根目录下面,所以,在
安装的时候,一定要有一个 / 对应的分区才能安装的原因即在于此。这也就是我们俗称的“树状目录”。根据FHS定义出来的每个目录内应该放置的文件内容如表6-1所示。
表6-1 目录内容
目录
应放置的文件内容
/
根目录root(/),一般建议在根目录下面只有目录,不要直接有文件。根目录是启动时系统第一个载入的分区,所以,所有启动过程会用到的文件应该都放在这个分区中。举例来说,/etc、/bin、/dev、/lib、/sbin这5个子目录都应该要与根目录连在一起,不可独立成为某个分区
/bin,
/usr/bin,
/usr/local/bin
除了 /bin之外,/usr/local/bin、/usr/bin也是放置“用户可执行的二进制文件的目录”。举例来说,ls、mv、rm、mkdir、rmdir、gzip、tar、cat、cp、mount等重要命令都放在这个目录中
/boot
这个目录的主要目的是放置Linux系统启动会用到的文件。启动会用到Linux的核心文件。这个目录下面的文件vmlinuz就是Linux的核心。非常重要。如果引导程序(loader)选择grub,那么这个目录内还有 /boot/grub子目录
/dev
在Linux系统上,任何设备都以文件类型存在于这个目录中。存取这个目录下面的某个文件,就等于存取某个设备。设备又分为字符设备(character device),例如键盘、鼠标等;以及块设备(block device),例如硬盘、光盘等等。在此目录下的文件会多出两个属性,分别是主设备号(major device number)与辅设备号(minor device number)。系统核心就是通过这两个号码来判断设备的。重要的文件有 /dev/null、/dev/tty[1-6]、/dev/ttyS*、/dev/lp*、/dev/hd*、/dev/sd* 等等
/etc
系统主要的设置文件几乎都放在这个目录内,例如人员的账号密码文件、各种服务的起始文件等等。一般来说,这个目录下的各文件属性是可以让一般用户查看的,但只有root有权修改。并且,在此目录下的文件几乎都是ASCII的纯文本文件。不过,FHS建议不要在这个目录中放置可执行文件。比较重要的文件有:/etc/inittab、/etc/init.d/、/etc
/modprobe.conf、/etc/X11、/etc/fstab、
/etc/sysconfig/ 等等。另外,其下重要的目录有:
・ /etc/init.d/:所有服务的默认启动脚本都放在这里,例如要启动或者关闭iptables的话:
/etc/init.d/iptables start
/etc/init.d/iptables stop
・ /etc/xinetd.d/:这就是所谓的超级守护程序(super daemon)管理的各项服务的设置文件目录。
・ /etc/X11:与X Window有关的各种设置文件都在这里,尤其是xorg.conf或XF86Config这两个X
Server的设置文件
/home
这是系统默认的用户家目录(home directory)。在新增一般用户账号时,默认的用户家目录都会放到这里。比较重要的是,家目录有两种代号:
~:表示当前这个用户的家目录,而
~dmtsai:则表示dmtsai的家目录
/lib,
/usr/lib,
/usr/local/lib
系统会使用到的函数库的目录。程序在运行过程中,可能会调用一些额外的功能参数,这需要函数库的协助。这些函数库就放在此处。比较重要的是 /lib/modules目录内会放核心的相关模块
/lost+found
系统出现异常,产生错误时,会将一些遗失的片段放于此目录下,通常这个目录会自动出现在某个分区最顶层的目录下。例如在 /disk中加装硬盘,在这个目录下就会自动产生一个这样的目录: /disk/lost+found
/mnt
/media
这是软盘与光盘的默认载入点;通常软盘挂在 /mnt/floppy下,而光盘挂在 /mnt/cdrom下,不过也不一定。随便找一个地方来载入也可以。另外,当前也规划出另一个 /media的目录。与 /mnt有点类似
/opt
这是给主机额外安装软件所放的目录。举例来说,FC4使用Fedora团体开发的软件,如果今天想要自行安装新的KDE桌面软件,可以将该软件安装在这个目录下。不过,以前的Linux系统中,我们还是习惯放在 /usr/local目录下
/proc
这个目录本身是一个“虚拟文件系统”。它放置的数据都在内存中,例如系统核心、形成信息、外部设备的状态及网络状态等等。因为这个目录下的数据都在内存中,所以本身不占任何硬盘空间。比较重要的文件有/proc/cpuinfo、/proc/dma、/proc/ interrupts、/proc/ioports、/proc/net/* 等等
/root
系统管理员(root)的家目录。之所以放在这里,是因为我们提过,系统第一个启动就载入的分区为 /,而我们希望 /root能够与 / 放在同一块分区上
/sbin,
/usr/sbin,
/usr/local/sbin
放一些系统管理员才会用到的执行命令,例如:fdisk、mke2fs、fsck、mkswap、mount等等。与 /bin不太一样的地方是,这几个目录是给root等系统管理用的。但本目录下的执行文件还是可以让一般用户用来“查看”而不能设置
/srv
一些服务启动之后,这些服务所需要取用的数据目录。举例来说,WWW服务器需要的网页数据就可以放在 /srv/www里
/tmp
这是让一般用户或者是正在执行的程序临时放置文件的地方。这个目录是任何人都能存取的,所以需要定期清理。当然,重要数据不可放在此目录
/usr
根据FHS规范的第二层内容,在 /usr目录下,包含系统的主要程序、图形界面所需要的文件、额外的函数库、本机自行安装的软件,以及共享的目录与文件等等。事实上,它有点像Windows操作系统中的“Program files”与“WinNT”这两个目录的结合。在此目录下的重要子目录有:
・ /usr/bin, /usr/sbin:一般身份用户与系统管理员可执行的文件放置目录。
・ /usr/include:c/c++ 等程序语言的文件头(header)与包含文件(include)放置处,当以tarball方式(*.tar.gz的方式安装软件)安装某些数据时,会使用到里头的许多包含文件。
・ /usr/lib:各应用软件的函数库文件放置目录。
・ /usr/local:本机自行安装的软件默认放置的目录。当前也适用于 /opt目录。在安装完Linux之后,基本上所有的配置都有了,但软件总是可以升级的,例如要升级代理服务,则通常软件默认的安装地方就是在 /usr/local(local是“当地”的意思),同时,安装完毕之后所得到的执行文件,为了与系统原执行文件有分别,升级后的执行文件通常放在 /usr/local/bin。建议将后来才安装的软件放在这里,便于管理
・ /usr/share:共享文件放置的目录,例如下面两个目录:
n /usr/share/doc:放置一些系统帮助文件的地方,例如安装了grub,那么在该目录下面找一找,就可以查到lilo的帮助文件了。很方便。
n /usr/share/man:manpage的文件文件目录。就是使用man的时候查询的路径。例如使用man ls命令时,就会查出 /usr/share/ man/man1/ls.1.gz帮助文件的内容。
Ÿ /usr/src:Linux系统相关的程序代码放置目录,例如 /usr/ src/linux为核心源码。
Ÿ /usr/X11R6:系统内的X Window System所需的执行文件几乎都放在这里
/var
这个目录也很重要,也是FHS规范的第二层目录内容。它主要放置系统执行过程中经常变化的文件。举例来说,例如缓存(cache)或者是随时更改的登录文件(log file)。此外,某些软件执行过程中会写入的
数据库文件,例如MySQL数据库,也都写入这个目录中。很重要。它下面的重要目录有:
・ /var/cache:程序文件在运行过程当中的一些暂存盘。
・ /var/lib:程序执行的过程中,需要使用到的数据文件放置的目录。举例来说,locate数据库与MySQL及rpm等数据库系统,都写在这个目录内。
・ /var/log:登录文件放置的目录。很重要。例如 /var/log/ messages就是总管所有登录文件的文件。
・ /var/lock:某些设备具有一次性写入的特点,例如tab(磁带机),此时,为了避免被其他人干扰而破坏正在运行的操作,因此,会将该设备lock(锁)起来,以确定该设备只能被单一程序所用。
・ /var/run:某些程序或者是服务启动后,会将它们的PID放在这个目录下。
・ /var/spool:是一些队列数据存放的地方。举例来说,主机收到电子邮件后,就会放到 /var/spool/mail中,若信件暂时发不出去,就会放到 /var/spool/mqueue目录下,用户工作任务分配(cron)则是放在 /var/spool/cron中
5.文件与目录管理
A. 目录概述:
下面这些就是比较特殊的目录,要记下来:
. 表示此层目录
.. 表示上一层目录
- 表示前一个工作目录
~ 表示“当前用户身份”所在的家目录
~account 表示account用户的家目录
在目录下面有两个目录是一定会存在的,就是 . 与 .. 。分别表示此层与上层目录
cd(切换目录)cd是Change Directory(改变目录)的缩写,这是用来切换工作目录的命令。注意,目录名与cd命令之间有一个空格
eg:
[root@linux ~]# cd /var/spool/mail# 这就是绝对路径的写法。直接指定要去的完整路径名称。
[root@linux mail]# cd ../mqueue# 这个是相对路径的写法,我们由 /var/spool/mail去 /var/spool/mqueue就这样写。
pwd(显示当前所在的目录) pwd是Print Working Directory(显示工作目录)的缩写,也就是显示当前所在目录,
参数:-P : 显示出实际路径,而非使用连接(link)路径。
eg:
[root@linux mail]# pwd
/var/mail
[root@linux mail]# pwd -P
/var/spool/mail <== 怎么回事?有没有加 -P差很多。
[root@linux mail]# ls -l /var/maillrwxrwxrwx 1 root root 10 Jun 25 08:25 /var/mail -> spool/mail
# 看到这里应该知道原因了吧?因为 /var/mail是连接文件,连接到 /var/spool/mail# 所以,加上pwd -P的参数后,会不以连接文件的数据显示,而是显示正确的完整路径
mkdir(建立新目录)如果想要建立新目录,就使用mkdir(make directory,生成目录)。
参数:-m : 设置文件的权限。直接设置,不要管默认权限。
-p : 帮助你直接建立所需要的目录递归。
eg:
[root@linux tmp]# mkdir -p test1/test2/test3/test4# 加了这个 -p的参数,可以自行建立多层目录。
[root@linux tmp]# mkdir -m 711 test2
[root@linux tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2# 仔细看上面的权限部分,如果没有加上 -m来强制设置属性,系统会使用默认属性。# 那么,你的默认属性是什么?这要通过下面介绍的umask才能了解。
rmdir(删除“空”目录) 如果想要删除现有目录,就使用rmdir。而且被删除的目录里,必定不能有其他目录或文件
如果要将所有目录下的东西都删除,就必须使用rm -rf directoryname
B 环境变量PATH:
PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻。用以下命令可以看到PATH的值。
$ echo $PATH
要修改所有用户的PATH值,您可以以root身份编辑/etc/profile文件,修改其中包含“PATH=”的一行。(每一个 path 之间要用 “:“ 分隔。)
如果只是要修改某一个用户的PATH值,就应该编辑该用户主目录中的.bash-profile文件。
注意:在修改了PATH值或任何环境变量后,都要用export将其输出,新的PATH值才能生效如果要及时生效,在命令行输入source 文件名.即可生效
C 文件与目录的管理
ls 查看文件和目录
cp 复制文件或目录
rm 删除文件或目录
如果要连目录下的内容都一起删除,例如子目录里面还有子目录,就要使用 -rf参数。不过,使用“rm -rf”命令之前,请千万注意,因为该目录或文件“肯定”会被root删除。因为系统不会再次询问是否要删除。所以这是非常重要的命令,需要特别注意。不过,如果确定该目录不要了,使用rm -rf来循环删除是不错的方式。
mv 移动文件与目录,或重命名
D 查看文件内容
cat 由第一行显示文件内容
tac 从文件的最后一行开始显示
more 一页一页地显示文件的内容
less 与more相似,但其优点是可以往前翻页
head 只看头几行
tail 只看末尾几行
nl 显示同时输出行号
od 以二进制方式读取文件内容
cat(concatenate) -n 连同行号显示在屏幕上
head [-n number] 看文件开头的几行
tail [-n number] 看文件末尾的几行
nl和cat -n的用法相似
E:链接文件
1.索引结点(inode):
block是记录文件内容数据的区域,inode是记录该文件的属性及其放置在哪个block之内的信息.即使该文件没有数据,也会占用一个inode.
linux查找文件时,也是先搜寻inode table表找到这个文件的属性和数据存放的地点,然后去block中取出数据,即在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。
一个分区被格式化一个文件系统后,基本上有inode table和数据这两个区域.
2.ln
硬链接(hard link):硬链接说白了是一个指针,指向文件索引节点(inode),系统并不为它重新分配inode,删除一个硬连接后,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除
限制:(1)不可以在不同文件系统的文件间建立硬链接(2)不能可以为目录创建硬链接。
软链接(Soft Link),软链接又称为符号链接(Symbolic link)
硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
F:文件与目录权限
chown 改变文件的拥有者 [-R 循环的改变该目录下的所有文件的拥有者]
chgrp 改变文件的所属群组
chmod 改变文件的权限
unmask 改变预设的建立文件或目录的属性[该值指定的是取消的权限](可以在/etc/bashrc中改变,也可以直接命令改变.)
1. 如果建立的是文件,则默认没有可执行项(X),最大为666(建立的文件的最终权限就是666-unmask)
2. 如果建立的是目录,则所有的权限都放开了,即最大权限为777(建立目录的最终权限就是777-unmask)
chattr 改变文件的特殊属性
chattr [+-=] [ASacdistu] [文件或目录名称]
+-=:操作符`+'用来在文件已有属性的基础上增加选定的属性; `-'用来去掉文件上的选定的属性;而`='用来指定该文件的唯一属性
当修改设置了'A'属性的文件时,它的atime记录不会改变. 这可以在笔记本电脑系统中避免某些磁盘I/O处理.
设置了`a'属性的文件只能在添加模式下打开用于写入. 只有超级用户可以设置或清除该属性.
设置了`c'属性的文件在磁盘上由内核自动进行压缩处理. 从该文件读取时返回的是未压缩的数据. 对该文件的一次写入会在保存它们到磁盘之前进行数据压缩.
设置了`d'属性的文件不能对其运行 dump(8) 程序进行备份.
设置了`i'属性的文件不能进行修改:你既不能删除它, 也不能给它重新命名,你不能对该文件创建链接, 而且也不能对该文件写入任何数据. 只有超级用户可以设置或清除该属性.
当删除设置了`s'属性的文件时,将对其数据块清零并写回到磁盘上.
当修改设置了`S'属性的文件时, 修改会同步写入到磁盘上;这与应用到文件子系统上的`sync'挂载选项有相同的效果.
当删除设置了`u'属性的文件时, 将会保存其内容. 这使得用户可以请求恢复被删除的文件.
lsattr 显示文件的特殊属性
lsattr [-aR]
-a:将隐藏文件的属性也显示出来
-R:连同子目录的数据一并显示出来.
G:搜寻文件或目录
which 查看可执行程序的位置,主要通过PATH环境变量到该路径内寻找可执行文件.
whereis 查看文件的位置
whereis只能查二进制文件、说明文档,源文件
locate 查看文件的位置
find [路径] [参数](可以使用通配符*,速度慢而且费硬盘)
H.SUID,SGID,Sticky bit与file指令
UID和GID代表用户代号和群组代号,root的都是0
-r-s--x--x 1 root root 21200 2005-06-17 /usr/bin/passwd
在原来的x位置有一个s属性,这个就是所谓的SUID,如果是-r-x--s--x,那么这里的s就是所谓的SGID.当一个文件具有 SUID,同时other群组具有可执行权限,那么当others群组执行该程序时,others将拥有该文件的owner权限,同理,当一个文件具有 SGID,同时other群组具有可执行权限,那么当others群组执行该程序时,others将拥有该文件的group权限.
设置文件或目录的suid或sgi属性:
那么如果在这三个数字之前再加上一个数字的话,那最前的面数字就代表这几个属性了! ( �]:通常我��使用chmod xyz filename 的方式�碓O定filename的�傩�r,�t是假�O�]有SUID, SGID 及Sticky bit 啦! )
4为SUID
2为SGID
1 ��Sticky bit 1为Sticky bit
假�O要�⒁���n案�傩愿�椤�-rwsr-xr-x』�r,由於s 在使用者�嘞拗校�所以是SUID ,因此,在原先的755 之前�要加上4 ,也就是:『 chmod 4755 filename 』�碓O定!假设要将一个档案属性改为『-rwsr-xr-x』时,由于s在使用者权限中,所以是SUID ,因此,在原先的755之前还要加上4 ,也就是:『 chmod 4755 filename 』来设定! 此外,�有大S �c大 T 的�a生喔!此外,还有大S与大T的产生喔! �⒖嫉紫碌墓�例啦!参考底下的范例啦! ( 注意:底下的�例只是��而已,所以�B哥使用同一���n案�碓O定,您必��t解 SUID 不是用在目�上,而SBIT 不是用在�n案上的喔! )
具有Sticky bit属性的目录,其下的文件或目录只有文件拥有者及root才有权删除.
系统中存在这样的目录,即/tmp目录
drwxrwxrwt 19 root root 4096 9月 27 04:02 tmp
最末位是t
file指令可以用来看文件的类型,还可以用来查看文件是否被加入了SUID信息.