转载来源:http://blog.itpub.net/29621173/viewspace-1150127/

[root@orser ~]# ls -l install.log

-rw-r--r--. 1 root root 48005 Apr 22 05:38 install.log
再次将上面结果分为7组分别是【-rw-r--r--.】【1】【root 】【root 】【48005 】【Apr 22 05:38】【install.log】
【第一组-rw-r--r--.】

第一个字符表示文件类型

d:文件目录

b:块设备文件

[root@orser ~]# ls -l /dev/sda1

brw-rw----. 1 root disk 8, 1 Apr 25 19:41 /dev/sda1

c:字符设备文件

[root@orser ~]# ls -l /dev/console

crw-------. 1 root root 5, 1 Apr 25 19:41 /dev/console

l:连接文件(软连接)

[root@orser ~]# ls -l /dev/fd

lrwxrwxrwx. 1 root root 13 Apr 25 19:41 /dev/fd -> /proc/self/fd

p:管道文件:确切的说是FIFO(先进先出),也可以说是有名管道,跟管道稍有区别
s:套接字文件(不晓得为什么在帮助文档中没有提到)

-:普通文件

【注1】块设备与字符设备:

其最大的区别在于是否可以被随机访问,块设备可以被随机访问,字符设备不可以被随机访问。

【注2】硬链接与软链接:

两者区别在于一个文件分别做硬链接和软链接,当删除原文件时,软链接失效而硬链接依然可用。其次软链接与原文件的inode号不同,而硬链接与原文件的inode号相同。另外硬链接不能跨设备做,而软链接可以

【注3】管道:

管道是一种特殊文件,也可以说是一种特殊的虚拟文件,因为他只是在内存中开辟了一块区域。通过对两个进程的索引节点inode进行关联,使得两个进程间传输。不过管道属于半双工,也就是数据只能流向一个方向。

测试软硬链接的区别

[root@orser orser]# touch link

[root@orser orser]# ln link linkh

[root@orser orser]# ln -s link links

137901 -rw-r--r--. 2 root root 11 Apr 25 23:13 link

137901 -rw-r--r--. 2 root root 11 Apr 25 23:13 linkh

138760 lrwxrwxrwx. 1 root root  4 Apr 25 23:14 links -> link

以上可以看出软链接的inode号与原文件不同,硬链接的inode号与原文件相同

[root@orser orser]# cat link

kkkskdadsf

[root@orser orser]# cat links

kkkskdadsf

[root@orser orser]# cat linkh

kkkskdadsf

[root@orser orser]# rm -f link

[root@orser orser]# cat linkh

kkkskdadsf

[root@orser orser]# cat links

cat: links: No such file or directory

以上可以得出当原文件被删除时,软链接不可用,硬连接可用。

[root@orser orser]# ln -s /home/text linkss

[root@orser orser]# ls -l

lrwxrwxrwx. 1 root root    10 Apr 26 15:17 linkss -> /home/text

[root@orser orser]# ln /home/text linkd

ln: creating hard link `linkd' => `/home/text': Invalid cross-device link

以上可以看出软链接可以跨设备,而硬链接不能跨设备

2-10权限位

2-4:所属主权限即为谁创建的文件
5-7:所属组权限
8-10:其他人权限

每一组权限都分为3个字符rwx,r为可读权限对应数字为4,w为可写权限对应数字为2,x为可执行权限对应数字为1。
          rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)
          修改文件权限:chmod

原文件权限
[root@orser orser]# ls -l link
-rw-r--r--. 1 root root 0 Apr 26 15:18 link
为该文件添加拥有者可执行权限
[root@orser orser]# chmod u+x link
[root@orser orser]# ls -l link
-rwxr--r--. 1 root root 0 Apr 26 15:18 link
为该文件添加所属组可写入和可执行权限
[root@orser orser]# chmod g+wx link
[root@orser orser]# ls -l link
-rwxrwxr--. 1 root root 0 Apr 26 15:18 link
为该文件去除其他人可读权限

[root@orser orser]# chmod o-r link

[root@orser orser]# ls -l link

-rwxrwx---. 1 root root 0 Apr 26 15:18 link

也可以使用数字的方式修改权限
以原始文件为基准为该文件添加其他人可读可写可执行权限
[root@orser orser]# chmod 647 link
[root@orser orser]# ls -l link
-rw-r--rwx. 1 root root 0 Apr 26 15:18 link
将该文件全选还原到原始权限
[root@orser orser]chmod 644 link
[root@orser orser]# ls -l link
-rw-r--r--. 1 root root 0 Apr 26 15:18 link

强制位与冒险位(suid、sgid、stickty)

suid   数字为4

        说明:任何用户在执行拥有suid权限的命令时都会以命令用者的身份拥有                
        添加与去除的方法同添加去除普通选项 
                chmod  u+s  添加suid权限(往命令上添加)
                chmod  u-s  删除suid权限
        【注】suid作用到可执行文件上,作用到目录上没有意义        
sgid   数字为2
        说明:任何用户在拥有sgid权限的目录下创建的文件都要继承该目录的组
        添加与删除方法:
                chmod g+s  添加sgid权限
                 chmod g-s  删除suid权限
        【注】sgid作用到目录上,作用到文件上没有意义,cp过去的文件也会被作用        
sticky    t    数字为1
         说明:任何用户在拥有t权限的目录下创建的文件,只能该用户删除,其他人无权删除
         添加与去除
                chmod o+t 添加t权限
                chmod o-t 添加t权限
        【注】sticky作用到目录上,作用在文件上没有意义
强制位与冒险位同样可以使用数字模式添加或去除

添加和去除的方法为在普通数字权限前加上强制位与冒险位的数字权限。

例如:chmod  4777 cat

umask默认权限反掩码

当我们在创建文件或者目录的时候都会有一个默认权限,那么这个默认权限是怎么来的,就是通过umask计算得来的,一般root用户的umask值为022,普通用户的umask值为002。那么系统是怎么通过umask计算出创建文件或目录的权限的呢?
1、创建目录

取得777中每一位的二进制码(111 111 111)

取得umask中每一位的二进制码(000 010 010)

对umask中每一位的二进制码取反(111 101 101)

用777中每一位的二进制码和取反后的umask中每一位的二进制码做与运算(111 101 101)即755.

如果上面的国语繁琐,可以直接使用下列步骤

777=rwxrwxrwx

022=----w--w-

两者相减就是了。

2、创建文件

和创建目录的算法相同,只不过创建文件是用666与umask做运算。

11位

测试与SELinux的关系
      [root@orser orser]# sestatus
      SELinux status:                 disabled

[root@orser orser]# touch se

[root@orser orser]# ls -l se

-rw-r--r-- 1 root root 0 Apr 26 17:58 se

[root@orser orser]# sestatus

SELinux status:                 enabled

[root@orser orser]# ls -l se

-rw-r--r--. 1 root root 0 Apr 26 17:58 se
          经过测试发现当SELinux开启时创建文件此位会有点出现

当SELinux关闭时创建文件此位不会出现点,但是当再次开启SELinux时该文件此位置又会出现点。

测试与ACL的关系

[root@orser orser]# touch aclt

[root@orser orser]# ls -l aclt

-rw-r--r--. 1 root root 0 Apr 26 18:33 aclt

[root@orser orser]# setfacl -m user:oracle:--x aclt

[root@orser orser]# ls -l aclt 
-rw-r-xr--+ 1 root root 0 Apr 26 18:33 aclt

经过测试我们发现当此文件设置了acl权限的时候这一位上变成了+号。

综上测试:

如果这一位上有点,那只能证明系统开启过SELinux并且是在,或者该文件在开启SELinux之前就已经存在;如果这一位上面是+号那么可以证明是该文件具有acl权限控制。

【第二组 1 】

文件硬链接数。
测试:

[root@orser orser]# touch link
[root@orser orser]# ls -l link
-rw-r--r--. 1 root root 0 Apr 26 18:53 link
[root@orser orser]# ln link linkh
[root@orser orser]# ls -l link*
-rw-r--r--. 2 root root 0 Apr 26 18:53 link
-rw-r--r--. 2 root root 0 Apr 26 18:53 linkh

通过测试可以得出,当一个文件创建了硬链接的时候,此位为硬链接个数,同样做硬链接的那个文件此位和此文件相同

【第三组  root  】

该文件或目录的拥有者
即哪个用户对此文件或目录有足够的权限,只有拥有者(root除外)能够改变文件的属性,当用户被删除后该位置只显示用户id。
[root@orser orser]# useradd -u 508 -g users testuser
[root@orser orser]# su - testuser
[testuser@orser ~]$ id
uid=508(testuser) gid=100(users) groups=100(users) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[testuser@orser ~]$ touch test
[testuser@orser ~]$ ls -l test
-rw-r--r--. 1 testuser users 0 Apr 26 19:57 test
[root@orser ~]# userdel testuser
[root@orser ~]# ls -l /home/testuser/test 
-rw-r--r--. 1 508 users 0 Apr 26 19:57 /home/testuser/test
508为文件只记录的用户id,由于用户被删除关联不到用户信息所以只能显示本身记录的用户id。用户组也是同样道理

【第四组  root  】

该文件或目录属于哪个用户组,道理和用户一样。

【第五组  48005  】

文件大小

【第六组  Apr 22 05:38 】

最后一次修改时间

【第七组  install.log 】

文件名

参考资料

块设备与字符设备     http://blog.itpub.net/10522540/viewspace-198228/
软硬链接             http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html
管道、FIFO           http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/   
                     http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-4/   
                     http://oss.org.cn/kernel-book/ch07/7.1.1.htm
ACL                  http://www.ibm.com/developerworks/cn/linux/l-acl/   
                     http://linuxguest.blog.51cto.com/195664/124107

BASH SHELL ls -l 输出了什么相关推荐

  1. Linux ls -l输出文件信息详解

    在linux中,我们知道一切皆为文件,经常我们会使用ls -l去查看文件的信息,今天会大家详细讲解一下ls -l输出的文件属性信息. 1.ls -l输出 命令: ls -l 通过ls -l命令输出,我 ...

  2. linux shell ls -l,linux之ls -l|grep ^-|wc -l命令 Shell 中常見的日志統計方法

    轉:http://www.cnblogs.com/senior-engineer/p/6203268.html Shell 中常見的日志統計方法 https://my.oschina.net/wate ...

  3. linux文件属性及 ls -l 命令输出结果详解

    目录 一.ls -l 输出的内容概略 二.ls -l 输出内容详解 1.命令 2.inode索引节点编号 3.文件类型 4.文件属性 5.目录或链接的个数 6.所有者及组 7.文件大小 8.文件最后修 ...

  4. unix/linux命令“ls -l”选项输出结果详解

    from: http://hi.baidu.com/hoxily/item/12e2a02d03f77e0942634a8e unix/linux命令"ls -l"选项输出结果详解 ...

  5. linux shell 一行 for,BASH shell脚本回显到同一行输出

    我有一个简单的BASH shell脚本,它检查curl命令的HTTP响应代码. 逻辑很好,但我坚持"简单地"打印出"输出". 我正在使用GNU bash,版本3 ...

  6. Shell中ls -l 与 ll 的区别

    命令ls -l 与 ll 的区别 一次偶然,发现 ls -l 和 ll 的效果是一样的 [root@test tmp]# ls -l total 0 drwxr-xr-x. 2 root root 3 ...

  7. linux shell ls 输出存进数组变量

    将ls的输出存到list中 再转存到 filelist数组中: c=0 list=`ls` for file in $list dofilelist[$c]=$filec=$[c+6] done 把f ...

  8. Linux命令 ls -l s输出内容含义详解

    1. ls  只显示文件名或者文件目录 2. ls -l(这个参数是字母L的小写,不是数字1) 用来查看详细的文件资料 在某个目录下键入ls -l可能会显示如下信息: 文件属性(占10个字符空间)  ...

  9. Bash shell

    一.认识bash shell 1.登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2.bash shell 功能 a. 命令记忆能力(hist ...

  10. Linux学习笔记四--Bash Shell

    查看某一命令是否是来自于外部命令还是内置于bash中:type [-tpa] name      也可用来查找命令,如:type -p touch 有/bin/touch:type -p vbird无 ...

最新文章

  1. js取一定范围内的随机整数
  2. 第十三周项目一-分数类中的运算符重载
  3. Eclipse导入Spring Boot项目后pom.xml出现红叉的解决办法
  4. css行高line-height的一些深入理解及应用
  5. [CareerCup] 14.4 Templates Java模板
  6. luogu P5324 [BJOI2019]删数
  7. 听说GNN大有可为,从这篇开始学以致用
  8. Unity3D游戏开发之使用SVN对Unity进行版本控制
  9. 可扩展架构设计的三个维度
  10. Java Float类floatToIntBits()方法与示例
  11. I/O复用之 epoll
  12. bic,orr——设置某些位为0或者1
  13. SQL Server表分区-水平分区
  14. 简洁的网页跑丢了动态动画404页面源码
  15. nginx做代理服务
  16. pclose与fclose的区别
  17. 循环队列(java)
  18. SpringBoot Starter自动装配的原理
  19. 2.6配置自定义PropertyEditors
  20. Dxg——Keil 单片机 开发笔记整理分类合集【所有的相关记录,都整理在此】

热门文章

  1. Unity3D手机斗地主游戏开发实战(04)_出牌判断大小
  2. oracle spatial特点,Oracle Spatial中SDO_Geometry详细说明
  3. 数据立方体(Data Cube)
  4. mysql删除通用日志_删除MySQL log bin 日志操作记录
  5. csgo单板透视距离绘制代码
  6. eclipse中左边的package文件列表不见了,解决方法
  7. Flutter Package 开发、发布、使用
  8. 对于圆桌理论和经典概率判断算法的分析(转)
  9. 赵小楼《天道》《遥远的救世主》深度解析(36)丁元英为什么参加芮小丹组的那场文化人的饭局?
  10. The error occurred while setting parameters