zoukankan      html  css  js  c++  java
  • 《鸟哥的Linux私房菜》学习笔记(5)——权限管理

    一、权限的基本概念                                                  

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

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

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

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

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

    对于目录来说,

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

    进程的安全上下文(secure context: 进程是用户发起的,是用户操作计算机的代理。进程也是有属组和属主的。谁发起的进程,进程就以谁的身份运行。比如,AB同时执行ls命令,这两个进程属 主不同,因此获得对某文件的权限也不同,如果文件的属主刚好和进程A的属主相同,那么A就可以访问该文件,也就是说有访问权限。如下代码,drwxr-xr-x 3 root root 4096 Oct 16 20:57 m,第一个字段drwxr-xr-xrwx为属主的权限,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
  • 相关阅读:
    机器学习的分类与主要算法对比
    关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?
    Spring Boot静态资源处理
    Tomcat关闭后,重新启动,session中保存的对象为什么还存在解决方法
    Tomcat 7源码学习笔记 -9 tomcat重启后session仍然保留
    mysql-sql语句中变量的使用
    js检测对象中是否存在某个属性
    mysql :=和=的区别
    sql面试题(学生表_课程表_成绩表_教师表)
    ddd
  • 原文地址:https://www.cnblogs.com/mingcaoyouxin/p/4074794.html
Copyright © 2011-2022 走看看