Linux文件目录的权限

 Linux是多用户多任务的分时操作系统,如果每个人都对文件和目录都是随便访问的话,难么你的文件很有可能会被他人删除或修改,从而丢失数据。为此系统对文件增加了权限的机制来防止这种事情的发生。对文件而言,用户被分为三类:属主(onwer)、属组(group)、和其他(other)。常规的权限分为:读(r readable)、写(w writable)、执行(x excutable)。使用ls -l 可以列出文件的权限。

[root@localhost boot]# ls -l 

total 107008

-rw-r--r--. 1 root root   126426 Nov 20  2015 config-3.10.0-327.el7.x86_64

以上为例最左边的-为文件的类型,-表示普通文件、d表示目录等。后面9位以三个为一种,分别代表了属主、属组、和其他 三个权限是 rwx。如果没有就用-表示。文件和目录对应的rwx权限是不一样的。用八进制表示r=4、w=2、x=1。

管理员可以使用chmod和chown来更改用户的权限和文件的属主和属组等操作。

 

对目录来说

r:表示可以用ls命令查看此目录下的文件列表,但它要跟目录的x权限一起是用

w:可在此目录中创建文件,也可删除此目录中的文件,也许x权限一起使用

x:目录最基本的权限,如果没有x目录将无法正常使用。

对文件来说

r:可是使用文件类查看器查看。如cat、head等

w:可以对文件内容进行修改,它没有删除文件的权限。删除文件的权限看父目录是否有w的权限

x:可以把此文件提请内核启动为一个进程 一般文件不加x权限,除二进制命令文件

chmod 更改目录或文件的权限

权限范围

u 属主

g 属组

o 其他

a 所有人

r读取权限 数字表示 "4"

w写入权限 数字表示 "2"

x执行权限 数字表示 "1"

s 特殊权限 

t 特殊权限

语法

chmod [OPTION]... MODE[,MODE]... FILE... 
       chmod [OPTION]... OCTAL-MODE FILE... #使用八进制模式
       chmod [OPTION]... --reference=RFILE FILE... #参照其他文件或目录

常用选项

-c, --changes #显示改变信息
-R, --recursive #递归改变,如改变目录是,其子目录和文件的权限一起干煸
--reference=RFILE #参数其他文件或目录

例如

[root@localhost testdir]# ll
total 0
-rw-rw-r-- 1 root root 0 Aug  6 11:37 file #源文件权限
[root@localhost testdir]# chmod ug=rwx file #ug一起更改权限
[root@localhost testdir]# ll
total 0
-rwxrwxr-- 1 root root 0 Aug  6 11:37 file#更改结果
[root@localhost testdir]# chmod g-x file #g去掉x权限
[root@localhost testdir]# ll
total 0
-rwxrw-r-- 1 root root 0 Aug  6 11:37 file #更改结果
[root@localhost testdir]# touch file #创建空文件
[root@localhost testdir]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  6 11:39 file #默认权限
[root@localhost testdir]# chmod 777 file #按八进制法更改权限
[root@localhost testdir]# ll
total 0
-rwxrwxrwx 1 root root 0 Aug  6 11:39 file #更改结果
[root@localhost testdir]# ll /etc/issue ./file #列出文件详细信息
-rw-r--r--. 1 root root 79 Jul 26 16:27 /etc/issue
-rwxrwxrwx  1 root root  0 Aug  6 11:39 ./file
[root@localhost testdir]# chmod --reference=/etc/issue file #参照文件更改权限
[root@localhost testdir]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  6 11:39 file #权限更改结果

文件和目录的默认权限和隐藏权限

当我们创建一个新文件时,文件的权限已经分配好了,为什么会这样呢,那就是因为与umask(遮罩码)这个玩意有关。umask是什么呢? 基本上,umask就是指定"目前用户在新建文件或目录时候的权限默认值",管理员和普通用户的umask是不一样的。我们可以使用umask查看。目录的默认权限等于777减去umask的022。前面的0是特殊权限位。文件的默认权限为666减去umask的022.但因为文件默认是不允许有执行权限的,所有单结果为奇数是向前进一位。

全局设置:/etc/bashrc用户设置:~/.bashrc。

umask 用来设置限制新文件权限的掩码

umask#   #设定掩码
umask–S 模式方式显示
umask–p 输出可被调用
[root@localhost testdir]# umask #管理员的umask
0022
[linux@localhost ~]$ umask #普通用户的umask
0002

Linux的特殊权限

  任何一个可执行程序文件能不能启动为进程取决发起者对程序文件是否拥有执行权限。启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组。进程访问文件时的权限,取决于进程的发起者。

一 :SUID特殊权限能让用户使用文件属主的权限来运行此命令。当有SUID权限时,文件的所有者x会替换成s权限 ,如果属主没有x权限将会以S报错。 例如-rwsrwxrwx 1 root root 48568 May 11 16:59 /bin/cat  文件颜色呈红色状态。 使用chmod命令更改

1、SUID权限只对二进制程序有效。

2、程序执行者对于该程序来说,需要具备x的权限。

3、执行者在执行的过程中将会获得该程序属主的权限

[root@localhost /]# ll /usr/bin/tail #显示tail原来的权限属性
-rwxr-xr-x 1 root root 61496 May 11 16:59 /usr/bin/tail
[root@localhost /]# chmod 4755 /usr/bin/tail #设置SUID权限,也可u+s方式
[root@localhost /]# ll /usr/bin/tail #显示更改后
-rwsr-xr-x 1 root root 61496 May 11 16:59 /usr/bin/tail #属主的x权限被s占用了
[root@localhost /]# tail /etc/shadow #用tail打开shadow,默认情况下shadow只有管理员能打开。
apache:!!:17008::::::
saslauth:!!:17008::::::
postfix:!!:17008::::::
rpcuser:!!:17008::::::
nfsnobody:!!:17008::::::
gdm:!!:17008::::::
pulse:!!:17008::::::
sshd:!!:17008::::::
tcpdump:!!:17008::::::
Alan:!!:17019:0:99999:7:::

二 : SGID能让其他用户以文件的属组权限来运行此命令。当有SGID权限时,文件的属组x会替换为r权限,如果属组没有x权限将会以S报错。 文件背景颜色为黄色。使用chmod命令更改

1、SGID对二进制文件有限

2、程序执行者对于该程序来说,需要具备x的权限

3、执行者在执行的过程中将会获得该程序的属组的权限

4、可以针对文件和目录使用

[root@localhost /]# mkdir /testdir #创建目录
[root@localhost /]# chmod 2757 /testdir #更改权限 包括增加GID
[root@localhost /]# su Cloud #切换到普通用户
[Cloud@localhost /]$ cd /testdir/ #进入root创建的用户
[Cloud@localhost testdir]$ touch file #创建空文件
[Cloud@localhost testdir]$ touch fiel2 #创建空文件
[Cloud@localhost testdir]$ mkdir dir #创建空目录
[Cloud@localhost testdir]$ ll #显示目录下的文件发现组依然是root
total 0
drwxrwsr-x 2 Cloud root 6 Aug  6 14:57 dir #属组是root
-rw-rw-r-- 1 Cloud root 0 Aug  6 14:57 fiel2
-rw-rw-r-- 1 Cloud root 0 Aug  6 14:56 file

三 :SBIT只对目录有效,对文件却无效,它的作用就是防止别人删除对方的资料。心细的同学可能发现/tmp就是此类文件

1、当用户对此目录有w,x权限时,即具有写入的权限时;

2、当用户在该目录下创建文件或目录时,仅有子与root才有权利删除该文件

[Cloud@localhost tmp]$ ll -d #查看tmp目录属性 最后为权限位t
drwxrwxrwt. 9 root root 4096 Aug  6 15:10 .
[Cloud@localhost tmp]$ mkdir dir1 dir2 #Cloud用户创建目录
[Cloud@localhost tmp]$ touch fi1 f2 #Cloud用户创建文件
[Cloud@localhost tmp]$ ll #显示详细信息
total 0
drwxrwxr-x 2 Cloud Cloud 6 Aug  6 15:10 dir1
drwxrwxr-x 2 Cloud Cloud 6 Aug  6 15:10 dir2
-rw-rw-r-- 1 Cloud Cloud 0 Aug  6 15:10 f2
-rw-rw-r-- 1 Cloud Cloud 0 Aug  6 15:10 fi1
[root@localhost tmp]# su linux #切换其他用户
[linux@localhost tmp]$ ll #查看目录下文件信息
total 0
drwxrwxr-x 2 Cloud Cloud 6 Aug  6 15:10 dir1
drwxrwxr-x 2 Cloud Cloud 6 Aug  6 15:10 dir2
-rw-rw-r-- 1 Cloud Cloud 0 Aug  6 15:10 f2
-rw-rw-r-- 1 Cloud Cloud 0 Aug  6 15:10 fi1
[linux@localhost tmp]$ rm fi1 #删除fi1
rm: remove write-protected regular empty file ‘fi1’? yes   
rm: cannot remove ‘fi1’: Operation not permitted #权限拒绝,虽然目录有w的权限,但是加了t就无法删除他人文件
[linux@localhost tmp]$ rm difr1#权限拒绝,虽然目录有w的权限,但是加了t就无法删除他人目录
rm: cannot remove ‘difr1’: No such file or directory

原创文章,作者:ladsdm,如若转载,请注明出处:http://www.178linux.com/29971

(0)
ladsdmladsdm
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who (unknown) :0           2016-12-15 2…

    Linux干货 2016-12-20
  • N28-第二周博客作业

    常用通配符
    *:表示任意长度的任意字符;

    ?:表示任意的单个字符;

    []:表示在指定范围内的单个字符:[a-z];

    [^]:脱字符,是取反的意思,即在指定范围以外的任意字符,如 [^0-9]表示除数字以外的一切字符。

    [:digit:] 表示所有的数字,相当于0-9

    [:lower:] 表示所有的小写字母

    [:upper:] 表示所有的大写字母

    [:alpha:] 表示所有的字母,

    [:alnum:] 相当于[0-9a-z]

    [:space:] 相当于空白字符

    [:punct:] 表示所有的标点符号

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

    3、请使用命令行展开功能来完成以下练习:

    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │?? └── grub
    ├── dev
    ├── etc
    │?? ├── rc.d
    │?? │?? └── init.d
    │?? └── sysconfig
    │?? └── network-scripts
    ├── lib
    │?? └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │?? └── local
    │?? ├── bin
    │?? └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    Linux干货 2017-12-11
  • 【招聘需求】高级运维工程师/上海虹口区/待遇20k左右

    上海虹口区/待遇20k左右 有意向者发简历至@管家邮箱 邮件名是:[求职]Net-姓名-花名-工作年限 岗位职责:1、降低技术壁垒,建设运维工具、运维平台,实现运维自动化,包括 运维自动化、配置管理中心等。2、具备前瞻性,带领运维技术团队完成业务支撑,负责定位、分析、跟踪和相协调处理重大事故,使之对业务影响降至最低。3、技术支持、培训、知识库建设。4、运维接…

    Linux干货 2015-03-12
  • 编译安装dropbear和使用

    一、概念 Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。 二、功能 dropbear实现完整的SSH客户端和服务器版本2协议。它不支持SSH版本1 的向后兼容性,以节省…

    Linux干货 2016-10-04
  • 20160810作业

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。           2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root…

    Linux干货 2016-08-12
  • linux下解压命令大全

    .tar  解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .t…

    Linux干货 2017-07-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 23:11

    文章思路清晰,从权限模型到特殊权限管理都有了详细的认识。