《鸟哥的Linux私房菜》学习笔记(5)——权限管

系统 1325 0

一、权限的基本概念                                                  

权限: 访问计算机资源或服务的访问能力。

Linux 中,每一个资源或者服务的权限,分别定义了三组用户的使用能力。

  • 文件的属主(u)
  • 文件的属组(g)
  • 其他用户(o)

对于每一类用户来说,可以对某个 文件 有三种权限:

  • r: 可读,可以使用类似 cat,more,less 等命令查看文件内容。
  • w: 可写,可以编辑或者删除此文件。
  • x: 可执行,可以在命令提示符下,当做命令提交给内核运行,一般对文件默认没有此权限,否则可能执行恶意代码。

对于 目录 来说,

  • r: 可以对此目录执行 ls 以列出内部的所有文件
  • w: 可以在此目录中创建文件。
  • x: 可以使用 cd 切换进此目录,也可以使用 ls -l 查看内部文件的详细信息。

进程的安全上下文( secure context : 进程是用户发起的,是用户操作计算机的代理。进程也是有属组和属主的。谁发起的进程,进程就以谁的身份运行。比如, A B 同时执行 ls 命令,这两个进程属 主不同,因此获得对某文件的权限也不同,如果文件的属主刚好和进程 A 的属主相同,那么 A 就可以访问该文件,也就是说有访问权限。 如下代码,drwxr-xr-x 3 root root 4096 Oct 16 20:57 m ,第一个字段 drwxr-xr-x rwx 为属主的权限, r-x 为属组的权限, r-x 为其他用户的访问权限。第三个字段便是属主,第四个字段是属组。

      root@hao:~# 
      
        ls
      
       -l
      
total 8
drwxr-xr-x 3 root root 4096 Oct 16 20 : 57 m
drwxr-xr-x 2 root root 4096 Oct 16 22 : 00 test

 二、权限管理                                                        

 1、chown(chage owner)改变文件属主

只有管理员才可以改变文件属主

命令格式: chown username file...更改文件的属主

     chown  username:groupname file...更改文件的属主和属组

     chown :groupname file 更改文件的属组

      
        
          [hadoop@hao tmp]$
        
      
      ll /
      
        tmp

total 
      
      
        40
      
      

-rw-rw-r--. 
      
        1
      
       hadoop hadoop     
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop


      
      -rw-r--r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        21
      
      
         b.hadoop

...
      
      
        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chown
      
       hao /tmp/
      
        a.hadoop


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ll /
      
        tmp

total 
      
      
        40
      
      

-rw-rw-r--. 
      
        1
      
       hao    hadoop     
      
        0
      
      
        11
      
      ?. 
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop


      
      -rw-r--r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
      
        11
      
      ?. 
      
        4
      
      
        12
      
      :
      
        21
      
      
         b.hadoop


      
      ...
      

[root@hao ~]# mkdir /tmp/ testdir [root@hao ~]# ll / tmp total 44 -rw-rw-r--. 1 hao hadoop 0 Nov 4 12 : 09 a.hadoop -rw-r--r--. 1 hadoop mygroup 0 Nov 4 12 : 21 b.hadoop ... drwxr -xr-x. 2 root root 4096 Nov 4 13 : 53 testdir [root@hao ~]# chown hao /tmp/ testdir [ root@hao ~]# ll / tmp total 44 -rw-rw-r--. 1 hao hadoop 0 Nov 4 12 : 09 a.hadoop -rw-r--r--. 1 hadoop mygroup 0 Nov 4 12 : 21 b.hadoop ... drwxr -xr-x. 2 hao root 4096 Nov 4 13 : 53 testdir

命令选项:

  -R:修改目录及其内部文件的属主。不使用该选项时,只更改目录的属主,不更改目录内文件的属主。

  --reference:更改文件的属主为指定文件的属主。chown --reference =/path file...

      
        
          [root@hao ~]#
        
      
      ll /
      
        tmp

total 
      
      
        44
      
      

-rw-rw-r--. 
      
        1
      
       hao    hadoop     
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop


      
      -rw-r--r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        21
      
      
         b.hadoop

...


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chown
      
       --reference=/tmp/b.hadoop /tmp/
      
        a.hadoop


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ll /
      
        tmp

total 
      
      
        44
      
      

-rw-rw-r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop


      
      -rw-r--r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        21
      
      
         b.hadoop

...
      
    

2、chgrp(change group)修改属组

使用方法同上。

3、chmod 更改文件权限

a、修改三类用户的权限

命令格式: chmod MODE filename ...

命令选项:

    -R:

    --reference:

  如下代码是更改test文件的三类用户权限为750即为rwxr-x---

      
        chmod
      
      
        750
      
       test
    

b、修改某类用户或某些类用户权限

命令格式: chmod 用户类别=MODE filename

      
        
          [root@hao ~]#
        
      
      ll /
      
        tmp

total 
      
      
        44
      
      

-rw-rw-r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       u=rw /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       g=rw /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       o=rw /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ll /
      
        tmp

total 
      
      
        44
      
      

-rw-rw-rw-. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...
        
[root@hao ~]# chmod og=r,u= w /tmp/ a.hadoop [root@hao ~]# ll / tmp total 44 -- w -r--r--. 1 hadoop mygroup 0 Nov 4 12 : 09 a.hadoop ...

  c、修改某类用户的某位或某些位权限

  命令格式: chmod 用户类别+(-)MODE filename

      
        
          [root@hao ~]#
        
      
      
        chmod
      
       a+r /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      ll /
      
        tmp

total 
      
      
        44
      
      

-rw-r--r--. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       a-r /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      ll /
      
        tmp

total 
      
      
        44
      
      

--
      
        w
      
      -------. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       u+r /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ll /
      
        tmp

total 
      
      
        44
      
      

-rw-------. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        chmod
      
       u+r,g+x /tmp/
      
        a.hadoop 


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      ll /
      
        tmp

total 
      
      
        44
      
      

-rw---x---. 
      
        1
      
       hadoop mygroup    
      
        0
      
       Nov  
      
        4
      
      
        12
      
      :
      
        09
      
      
         a.hadoop

...
      
    

三、创建文件的默认权限                                            

创建一个文件,它的默认权限是:666-umask的前三位

创建一个目录,它的默认权限是:777-umask的前三位。 umask是遮罩码

      
        
          [root@hao ~]#
        
      
      cd /
      
        tmp


        
          
            [root@hao tmp]# 
          
        
      
      
        touch
      
      
         test


        
          
            [root@hao tmp]#
          
        
         ll test


      
      -rw-r--r--. 
      
        1
      
       root root 
      
        0
      
       Nov  
      
        4
      
      
        16
      
      :
      
        39
      
      
         test


        
          
            [root@hao tmp]#
          
        
         umask


      
      
        0022
      
      
        
           [root@hao tmp]# 
        
      
      
        mkdir
      
      
         test1


        
          
            [root@hao tmp]# 
          
        
      
      
        ls
      
       -
      
        dl test1

drwxr
      
      -xr-x. 
      
        2
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        16
      
      :
      
        41
      
       test1
    

umask 可以直接设置用户的遮罩码 如 umask 202 则为设置当前用户的遮罩码。但是文件默认不能有执行权限,因此如果算得的结果有执行权限则会自动加1!!
该用户退出后,umask会默认恢复为初始值。

四、bash配置文件                                                    

bash的配置文件分为两种

  • 全局配置
    • /etc/profile,/etc/profile.d/*.sh,/etc/bashrc
  • 个人配置
    • ~/.bash_profile,~/.bashrc

这些文件分为两类:

  • profile类文件:
    • 设定环境变量
    • 可以设定登录时所运行的命令或脚本
  • bashrc类文件
    • 设定本地变量
    • 定义命令别名

五、shell 类型(用户角度)                                      

从用户角度来说,shell分为两种类型:

  • 登陆式shell
    • su - username
    • su  -l username
    • 正常通过某终端登陆的shell
  • 非登录式shell

    • su username
    • 图形终端下打开命令窗口
    • 自动执行的shell脚本

登录式shell读取配置文件的顺序为:

 1、/etc/profile 2、/etc/profile.d/*.sh 3、~/.bash_profile 4、~/.bashrc 5、/etc/bashrc

非登录式shell读取配置文件的顺序为:

  1、~/.bashrc 2、/etc/bashrc 3、/etc/profile.d/*.sh

六、练习一:创建没有家目录的openstack用户             

1、创建一个没有家目录的用户openstack

      
        
          [root@hao ~]#
        
      
      useradd -M openstack
    

2、复制/etc/skel 为/home/openstack

      
        
          [root@hao ~]#
        
      
      
        cp
      
       -r /etc/skel /home/
      
        openstack


        
          
            [root@hao 
          
        
      
      
        
          ~
        
      
      
        
          
            ]#
          
        
         finger openstack

Login: openstack                  Name: 

Directory: 
      
      /home/openstack              Shell: /bin/
      
        bash

Never logged 
      
      
        in
      
      
        .

No mail.

No Plan.


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        ls
      
       /
      
        home

guang  hadoop  hao  haohao  openstack  testuser  testuser1


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        id
      
      
         openstack

uid
      
      =
      
        1005
      
      (openstack) gid=
      
        1005
      
      (openstack) 
      
        groups
      
      =
      
        1005
      
      
        (openstack)


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
       ll /
      
        home

total 
      
      
        28
      
      
        

...
      
      
        

drwxr
      
      -xr-x.  
      
        4
      
       root      root      
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         openstack

...
      
      
        
           [root@hao ~]#
        
      
      
        ls
      
       -al /home/
      
        openstack

total 
      
      
        28
      
      
        

drwxr
      
      -xr-x. 
      
        4
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .

drwxr
      
      -xr-x. 
      
        9
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         ..


      
      -rw-r--r--. 
      
        1
      
       root root   
      
        18
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_logout


      
      -rw-r--r--. 
      
        1
      
       root root  
      
        176
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_profile


      
      -rw-r--r--. 
      
        1
      
       root root  
      
        124
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bashrc

drwxr
      
      -xr-x. 
      
        2
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .gnome2

drwxr
      
      -xr-x. 
      
        4
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
       .mozilla
    

3、修改/home/openstack及其内部文件的属主属组为openstack

      
        
          [root@hao ~]#
        
      
      
        chown
      
       -R openstack:openstack /home/
      
        openstack


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        ls
      
       -
      
        ld
      
       /home/openstack/
      
        

drwxr
      
      -xr-x. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
       /home/openstack/
      
        
           [root@hao ~]#
        
      
      
        ls
      
       -la /home/openstack/
      
        

total 
      
      
        28
      
      
        

drwxr
      
      -xr-x. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .

drwxr
      
      -xr-x. 
      
        9
      
       root      root      
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         ..


      
      -rw-r--r--. 
      
        1
      
       openstack openstack   
      
        18
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_logout


      
      -rw-r--r--. 
      
        1
      
       openstack openstack  
      
        176
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_profile


      
      -rw-r--r--. 
      
        1
      
       openstack openstack  
      
        124
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bashrc

drwxr
      
      -xr-x. 
      
        2
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .gnome2

drwxr
      
      -xr-x. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
       .mozilla
    

4、 修改/home/openstack及其内部文件 ,属组和其他用户没有任何访问权限

      
        
          [root@hao ~]#
        
      
      
        chmod
      
       -R go= /home/openstack/
      
        
           [root@hao ~]#
        
      
      
        ls
      
       -
      
        ld
      
       /home/
      
        openstack

drwx
      
      ------. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
       /home/
      
        openstack


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        ls
      
       -la /home/openstack/
      
        

total 
      
      
        28
      
      
        

drwx
      
      ------. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .

drwxr
      
      -xr-x. 
      
        9
      
       root      root      
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         ..


      
      -rw-------. 
      
        1
      
       openstack openstack   
      
        18
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_logout


      
      -rw-------. 
      
        1
      
       openstack openstack  
      
        176
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bash_profile


      
      -rw-------. 
      
        1
      
       openstack openstack  
      
        124
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .bashrc

drwx
      
      ------. 
      
        2
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
      
         .gnome2

drwx
      
      ------. 
      
        4
      
       openstack openstack 
      
        4096
      
       Nov  
      
        4
      
      
        14
      
      :
      
        53
      
       .mozilla
    

七、练习二:手动添加用户                                                     

需求:手动添加用户hive,属主属组均为hive,UID与GID均为5000,附加组为mygroup(已存在)

1、创建组hive

      
        
          [root@hao ~]#
        
      
       nano /etc/
      
        grou
      
    
    
      在该文件末尾添加组hive,同时在附加组mygroup添加用户hive
    
  
      mygroup:x:502:testuser1,hive
      
hive:x: 5000

2、在/etc/passwd中创建用户

      hive:x:
      
        5000
      
      :
      
        5000
      
      :hive:/home/hive:/bin/bash
    

3、在/etc/shadow中创建密码,这里的16378为距离1970年1月1日经过的天数,可以算出来。

      
        
          [hao@hao ~]$
        
      
      
        date
      
      
        

Tue Nov  
      
      
        4
      
      
        15
      
      :
      
        17
      
      :
      
        38
      
       CST 
      
        2014
      
      
        
           [hao@hao ~]$
        
      
      
        date
      
       +%
      
        s


      
      
        1415085473
      
      
        
           [hao@hao ~
        
      
      
        
          
            ]$
          
        
        bc

bc 
      
      
        1.06
      
      .
      
        95
      
      
        

Copyright 
      
      
        1991
      
      -
      
        1994
      
      , 
      
        1997
      
      , 
      
        1998
      
      , 
      
        2000
      
      , 
      
        2004
      
      , 
      
        2006
      
      
         Free Software Foundation, Inc.

This is 
      
      
        free
      
      
         software with ABSOLUTELY NO WARRANTY.

For details type `warranty
      
      
        '
      
      
        . 
      
      
        1415085473
      
      /
      
        86400
      
      
        16378
      
    
      hive:!!:
      
        16378
      
      :
      
        0
      
      :
      
        99999
      
      :
      
        7
      
      :::
    

4、创建家目录并设定其属组属主为hive

      
        
          [root@hao ~]#
        
      
      
        cp
      
       -r /etc/skel /home/
      
        hive


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        ls
      
       /
      
        home

guang  hadoop  hao  haohao  hive  openstack  testuser  testuser1
        
[root@hao ~]# chown -R hive:hive /home/ hive [root@hao ~]# ls -al /home/ hive total 28 drwxr -xr-x. 4 hive hive 4096 Nov 4 15 : 25 . drwxr -xr-x. 10 root root 4096 Nov 4 15 : 25 .. -rw-r--r--. 1 hive hive 18 Nov 4 15 : 25 .bash_logout -rw-r--r--. 1 hive hive 176 Nov 4 15 : 25 .bash_profile -rw-r--r--. 1 hive hive 124 Nov 4 15 : 25 .bashrc drwxr -xr-x. 2 hive hive 4096 Nov 4 15 : 25 .gnome2 drwxr -xr-x. 4 hive hive 4096 Nov 4 15 : 25 .mozilla [root@hao ~]# ls -dl /home/ hive drwxr -xr-x. 4 hive hive 4096 Nov 4 15 : 25 /home/hive

5、 修改/home/hive及其内部文件权限,使属组和其他用户没有任何访问权限

      
        
          [root@hao ~]#
        
      
      
        chmod
      
       -R go= /home/
      
        hive


        
          
            [root@hao 
          
        
      
      
        
          ~]#
        
      
      
        ls
      
       -dl /home/
      
        hive

drwx
      
      ------. 
      
        4
      
       hive hive 
      
        4096
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
       /home/
      
        hive


        
          
            [root@hao
          
        
      
      ~]# 
      
        ls
      
       -al /home/
      
        hive

total 
      
      
        28
      
      
        

drwx
      
      ------.  
      
        4
      
       hive hive 
      
        4096
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         .

drwxr
      
      -xr-x. 
      
        10
      
       root root 
      
        4096
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         ..


      
      -rw-------.  
      
        1
      
       hive hive   
      
        18
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         .bash_logout


      
      -rw-------.  
      
        1
      
       hive hive  
      
        176
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         .bash_profile


      
      -rw-------.  
      
        1
      
       hive hive  
      
        124
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         .bashrc

drwx
      
      ------.  
      
        2
      
       hive hive 
      
        4096
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
      
         .gnome2

drwx
      
      ------.  
      
        4
      
       hive hive 
      
        4096
      
       Nov  
      
        4
      
      
        15
      
      :
      
        25
      
       .mozilla
    

  6、手动生成密码,并添加到/etc/shadow中

 

      
        
          [root@hao ~]#
        
      
       openssl 
      
        passwd
      
       -
      
        1
      
       -salt 
      
        '
      
      
        12345678
      
      
        '
      
      
        

Password: 

$
      
      
        1
      
      $
      
        12345678
      
      $2hpL/
      
        5Hu1halILqBt7TFe.

[root@hao 
      
      ~]# nano /etc/shadow
    

 

《鸟哥的Linux私房菜》学习笔记(5)——权限管理


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论