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
什么时候需要改变文件的文件主和用户组? 当我们把一个文件拷贝给别人的时候,假设这个文件只能文件主读取,由于拷贝会把文件的权限和所有的属性都一同复制,那么当另外一个人拿到拷贝后的文件后仍然无法访问;所以在拷贝完成之后,第一个人应当修改文件的属性和权限。
cp 原目录/原文件 新目录/新文件
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文件
普通文件- 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的文件是否可以执行,取决于这个文件的属性中是否有x这个权限。 但是为了增强文件的可读性,我们还是给文件增加了“扩展名“。 *.sh表示脚本或批处理文件。 *Z、*.tar、*.tar.gz、*.zip、*.tgz他们都是压缩文件。 PS:从网上下载的文件的权限是有可能发生改变的,所以当我们下载的文件无法运行时查看一下它的权限是否有x。
Linxu默认采用Ext2/Ext3文件系统,对文件名的长度限制为: 单个文件名或目录名最大长度255个字符; 完整的文件或目录名最大长度为4096个字符。 文件命名时要避免一些特殊字符。
由于开发Linux distribution的厂商非常多,所以要对这些厂商开发的文件系统规范化,因此就出现了文件系统配置规范:Filesystem Hierarchy Standard=FHS。
FHS对目录规范的四种类型:
根目录是整个系统最重要的目录,其他所有的饿目录都是由根目录衍生而来的,同时根目录也与开机、还原、系统修复等操作有关。
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:也是一个虚拟文件系统,记录内核相关信息。
开机的时候只有根目录被挂载了,其他的目录所在的分区都是在系统启动完成之后才被挂载的。因此与开机过程有关的目录就必须要和根目录放在同一个分区中。必须与根目录放在同一个分区中的目录有:
/usr目录 =UNIX Software Resource,是操作系统关键资源放置的目录。 FHS建议:所有软件开发者都应将数据放置在这个目录的子目录下,而不要自行创建独立的目录。 这个目录就相当于Windows下的c:\program files。
/var目录 /usr放置安装程序时所需要的较大容量的文件,而/var下存放在程序执行过程中渐渐才会占用硬盘的目录。如:缓存、日志等。
每一个目录不只能挂载本地的文件系统,还可以使用网络上的文件系统。可以利用Network File System服务器=NFS服务器来挂载网络山的指定目录。