文件权限分基本权限和高级权限

基本权限:

权限主要是设置用户的权限

基本权限分三种:

r:读 可以读取文件的内容

w:写

x:执行

权限            对文件的影响                   对目录的影响

r:读        可以读取文件的内容       可以列出目录的内容(文件名)

w:写       可以更改文件的内容      可以创建或者删除目录中的任意一个文件

x:执行    可以作为命令执行文件   可以访问目录的内容(取决于目录中文件的权限)

x权限对文件是非常危险的;w权限对于目录来说是非常危险的

 

为什么x对于文件是非常危险的?因为:如果一个文件有x权限,就相当于把系统抛了一个接口给用户;用户没有权限没关系,只要有编译器可以往里面写代码 ;所以一般情况下文件是没有x权限的;意味着只能往文件里面写文本,就算写了代码,也认为是文本;x权限要针对目录就只能允许要进那个目录,没有别的作用

# ls -l         (ls   -l 查看属性)

总用量 0

-rw-r--r-- 1 root root 0 3月   2 03:09 test.txt

-           文件的类型(-:文本文件     d:目录   l:链接文件)

rw-r--r--        权限(前三个是所有者,指的是谁创建的这个文件,中间三个是所有组,意味着这组里面的用户,都这个文件有什么权限,后面三个叫其他用户,
1           引用次数(快捷方式数量)
root            所有者
root            所有组
0           文件的大小(1k为单位)
3月 2 03:09 文件的创建和最后修改时间

chown:更改文件的属主、属组(既可以改所有者,也可以改所有组)
# chown alice.hr file1 或者也可以写成# chown alice:hr file1//改属主、属组 ;那个除了点,冒号也可以
chgrp:专门改所有组的
-R:递归修改,就是把一个目录下的所有文件的属组和属主都改了

更改权限
使用字符
                对象  赋值符  权限类型
                u        +         r    u就是改前三个
chmod       g        -         w    g就是改中间三个
                o        =         x    o就是改后三个
                a
# chmod u+x file1     //属主增加执行
# chmod a=rwx file1     //所有人等于读写执行
# chmod a=- file1     //所有人没有权限
# chmod ug=rw,o=r file1     //属主属组等于读写,其他人只读
# ll file1      //以长模式方式查看文件权限
-rw-rw-r-- 1 alice it 17 10-25 16:45 file1  //显示的结果
数字
# chmod 644 file1
# ll file1
-rw-r--r-- 1 alice it 17 10-25 16:45 file1
切记:文件或者目录的权限限制对root用户限制无效,对所有人和其它人的限制有效,如果文件的权限只有读,那所有者可以读和强制写此文件

文件权限管理之二: 特殊权限   

           数值        作用                                文件                  目录

suid       4      给普通用户提权              可执行的二进制文件      没用

sgid       2      继承文件所属组                                             有用

sticky    1      仅允许删除自己的文件                                     有用

作用:
suid:  当一个文件具有SUID权限的时候,允许运行这个文件用户具有该文件的所有者权限!
当一个文件具有SUID权限的时候,允许这个用户运行文件的时候就意味着如果suid针对一个非可执行文件作用不大,没什么意义,只有用户在运行文件的时候才会产生变化,所谓的变化是具有所有者权限,如果是个普通
文件,没有可执行权限,不能被运行suid权限就没什么作用,当一个用户运行可执行权限文件的时候,具有所有者权限;我们会发现系统当中有很多存在这种矛盾的地方

# which passwd
/usr/bin/passwd
# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd--->这个文件的所有者本该是x,确是s,不是x就意味着该文件具有suid权限;用户借用suid的root权限来编辑

sgid:  允许在这个目录里之后创建的文件具有和这个目录相同所有组属性(继承所有组名称)
sgid和所有组有关,针对目录才有作用;作用是允许一个目录具有suid权限之后,这个目录里所有文件和目录都具有相同的所有组属性
粘滞位(o+t):只能删除自己创建的文件,别人的文件就算有权限粘滞位也不允许它删;粘滞位要求不管有没有权限,一旦一个目录有粘滞位,所有者能删,其他人都不行其他人都不行;它的作用就是例如是公共目录
上面的suid是最危险的;不到迫不得已不要用,什么是迫不得已?就是像passwd出现矛盾的地方

设置特殊权限
a、字符
chmod u+s file  (+suid)   chmod u-s file(-suid)
chmod g+s  dir  (+sgid)   chmod g-s file(-sgid)
chmod o+t  dir

b、数字

chmod 7777 file (4+2+1)777

chmod 2770 dir

chmod 3770 dir  (2+1)770

chmod 0770 dir 去除以上权限

文件权限管理之三: umask(用来指定系统的默认权限)

umask: 新建文件、目录的默认权限是由umask决定的

创建时默认权限满分:文件是666(没有x执行权限),目录777

root:   文件 644  umask: 0022                

          目录 755

普通用户:文件 664  umask: 0002          

              目录 775

[root@master ~]# umask     //查看当前用户的umask权限
0022
[root@master ~]# umask -S           //查看最终生效的权限(也称为mask值)
u=rwx,g=rx,o=rx

[root@master ~]# umask 000  //设置umask权限
[root@master ~]# umask
0000

算umask权限的时候不要用减法去算,因为算的不准

 

读,权限是二进制的100,十进制是4;

写,权限是二进制的010,十进制是2;

执行,权限是二进制的001,十进制是1;

具备多个权限,就把相应的 4、2、1 相加就可以了:

若要 rwx 则 4+2+1=7

若要 rw- 则 4+2=6

若要 r-x 则 4+1=5

若要 r-- 则 =4

若要 -wx 则 2+1=3

若要 -w- 则 =2

若要 --x 则 =1

若要 --- 则 =0