一、权限的基本概念                                                  

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

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为其他用户的访问权限。第三个字段便是属主,第四个字段是属组。

  1. root@hao:~# ls -l
    total 8
    drwxr-xr-x root root Oct : m
    drwxr-xr-x root root Oct : test

 二、权限管理                                                        

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

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

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

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

     chown :groupname file 更改文件的属组

  1. [hadoop@hao tmp]$ ll /tmp
  2. total
  3. -rw-rw-r--. hadoop hadoop Nov : a.hadoop
  4. -rw-r--r--. hadoop mygroup Nov : b.hadoop
  5. ...
  6. [root@hao ~]# chown hao /tmp/a.hadoop
  7. [root@hao ~]# ll /tmp
  8. total
  9. -rw-rw-r--. hao hadoop ?. : a.hadoop
  10. -rw-r--r--. hadoop mygroup ?. : b.hadoop
  11. ...
  12.  
  13. [root@hao ~]# mkdir /tmp/testdir
  14. [root@hao ~]# ll /tmp
  15. total
  16. -rw-rw-r--. hao hadoop Nov : a.hadoop
  17. -rw-r--r--. hadoop mygroup Nov : b.hadoop
  18. ...
  19. drwxr-xr-x. root root Nov : testdir
  20. [root@hao ~]# chown hao /tmp/testdir
  21. [root@hao ~]# ll /tmp
  22. total
  23. -rw-rw-r--. hao hadoop Nov : a.hadoop
  24. -rw-r--r--. hadoop mygroup Nov : b.hadoop
  25. ...
  26. drwxr-xr-x. hao root Nov : testdir

命令选项:

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

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

  1. [root@hao ~]# ll /tmp
  2. total
  3. -rw-rw-r--. hao hadoop Nov : a.hadoop
  4. -rw-r--r--. hadoop mygroup Nov : b.hadoop
  5. ...
  6. [root@hao ~]# chown --reference=/tmp/b.hadoop /tmp/a.hadoop
  7. [root@hao ~]# ll /tmp
  8. total
  9. -rw-rw-r--. hadoop mygroup Nov : a.hadoop
  10. -rw-r--r--. hadoop mygroup Nov : b.hadoop
  11. ...

2、chgrp(change group)修改属组

使用方法同上。

3、chmod 更改文件权限

  a、修改三类用户的权限

  命令格式:chmod MODE filename...

  命令选项:

    -R:

    --reference:

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

  1. chmod test

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

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

  1. [root@hao ~]# ll /tmp
  2. total
  3. -rw-rw-r--. hadoop mygroup Nov : a.hadoop
  4. ...
  5. [root@hao ~]# chmod u=rw /tmp/a.hadoop
  6. [root@hao ~]# chmod g=rw /tmp/a.hadoop
  7. [root@hao ~]# chmod o=rw /tmp/a.hadoop
  8. [root@hao ~]# ll /tmp
  9. total
  10. -rw-rw-rw-. hadoop mygroup Nov : a.hadoop
  11. ...
    [root@hao ~]# chmod og=r,u=w /tmp/a.hadoop
  12. [root@hao ~]# ll /tmp
  13. total
  14. --w-r--r--. hadoop mygroup Nov : a.hadoop
  15. ...

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

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

  1. [root@hao ~]# chmod a+r /tmp/a.hadoop
  2. [root@hao ~]# ll /tmp
  3. total
  4. -rw-r--r--. hadoop mygroup Nov : a.hadoop
  5. ...
  6. [root@hao ~]# chmod a-r /tmp/a.hadoop
  7. [root@hao ~]# ll /tmp
  8. total
  9. --w-------. hadoop mygroup Nov : a.hadoop
  10. ...
  11. [root@hao ~]# chmod u+r /tmp/a.hadoop
  12. [root@hao ~]# ll /tmp
  13. total
  14. -rw-------. hadoop mygroup Nov : a.hadoop
  15. ...
  16. [root@hao ~]# chmod u+r,g+x /tmp/a.hadoop
  17. [root@hao ~]# ll /tmp
  18. total
  19. -rw---x---. hadoop mygroup Nov : a.hadoop
  20. ...

三、创建文件的默认权限                                            

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

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

  1. [root@hao ~]# cd /tmp
  2. [root@hao tmp]# touch test
  3. [root@hao tmp]# ll test
  4. -rw-r--r--. root root Nov : test
  5. [root@hao tmp]# umask

  6. [root@hao tmp]# mkdir test1
  7. [root@hao tmp]# ls -dl test1
  8. drwxr-xr-x. root root Nov : 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

  1. [root@hao ~]# useradd -M openstack

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

  1. [root@hao ~]# cp -r /etc/skel /home/openstack
  2. [root@hao ~]# finger openstack
  3. Login: openstack Name:
  4. Directory: /home/openstack Shell: /bin/bash
  5. Never logged in.
  6. No mail.
  7. No Plan.
  8. [root@hao ~]# ls /home
  9. guang hadoop hao haohao openstack testuser testuser1
  10. [root@hao ~]# id openstack
  11. uid=(openstack) gid=(openstack) groups=(openstack)
  12. [root@hao ~]# ll /home
  13. total
  14. ...
  15. drwxr-xr-x. root root Nov : openstack
  16. ...
  17. [root@hao ~]# ls -al /home/openstack
  18. total
  19. drwxr-xr-x. root root Nov : .
  20. drwxr-xr-x. root root Nov : ..
  21. -rw-r--r--. root root Nov : .bash_logout
  22. -rw-r--r--. root root Nov : .bash_profile
  23. -rw-r--r--. root root Nov : .bashrc
  24. drwxr-xr-x. root root Nov : .gnome2
  25. drwxr-xr-x. root root Nov : .mozilla

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

  1. [root@hao ~]# chown -R openstack:openstack /home/openstack
  2. [root@hao ~]# ls -ld /home/openstack/
  3. drwxr-xr-x. openstack openstack Nov : /home/openstack/
  4. [root@hao ~]# ls -la /home/openstack/
  5. total
  6. drwxr-xr-x. openstack openstack Nov : .
  7. drwxr-xr-x. root root Nov : ..
  8. -rw-r--r--. openstack openstack Nov : .bash_logout
  9. -rw-r--r--. openstack openstack Nov : .bash_profile
  10. -rw-r--r--. openstack openstack Nov : .bashrc
  11. drwxr-xr-x. openstack openstack Nov : .gnome2
  12. drwxr-xr-x. openstack openstack Nov : .mozilla

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

  1. [root@hao ~]# chmod -R go= /home/openstack/
  2. [root@hao ~]# ls -ld /home/openstack
  3. drwx------. openstack openstack Nov : /home/openstack
  4. [root@hao ~]# ls -la /home/openstack/
  5. total
  6. drwx------. openstack openstack Nov : .
  7. drwxr-xr-x. root root Nov : ..
  8. -rw-------. openstack openstack Nov : .bash_logout
  9. -rw-------. openstack openstack Nov : .bash_profile
  10. -rw-------. openstack openstack Nov : .bashrc
  11. drwx------. openstack openstack Nov : .gnome2
  12. drwx------. openstack openstack Nov : .mozilla

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

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

1、创建组hive

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

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

  1. hive:x:::hive:/home/hive:/bin/bash

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

  1. [hao@hao ~]$ date
  2. Tue Nov :: CST
  3. [hao@hao ~]$ date +%s

  4. [hao@hao ~]$ bc
  5. bc 1.06.
  6. Copyright -, , , , , Free Software Foundation, Inc.
  7. This is free software with ABSOLUTELY NO WARRANTY.
  8. For details type `warranty'.
  9. /
  1. hive:!!:::::::

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

  1. [root@hao ~]# cp -r /etc/skel /home/hive
  2. [root@hao ~]# ls /home
  3. guang hadoop hao haohao hive openstack testuser testuser1
    [root@hao ~]# chown -R hive:hive /home/hive
  4. [root@hao ~]# ls -al /home/hive
  5. total
  6. drwxr-xr-x. hive hive Nov : .
  7. drwxr-xr-x. root root Nov : ..
  8. -rw-r--r--. hive hive Nov : .bash_logout
  9. -rw-r--r--. hive hive Nov : .bash_profile
  10. -rw-r--r--. hive hive Nov : .bashrc
  11. drwxr-xr-x. hive hive Nov : .gnome2
  12. drwxr-xr-x. hive hive Nov : .mozilla
  13. [root@hao ~]# ls -dl /home/hive
  14. drwxr-xr-x. hive hive Nov : /home/hive

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

  1. [root@hao ~]# chmod -R go= /home/hive
  2. [root@hao ~]# ls -dl /home/hive
  3. drwx------. hive hive Nov : /home/hive
  4. [root@hao ~]# ls -al /home/hive
  5. total
  6. drwx------. hive hive Nov : .
  7. drwxr-xr-x. root root Nov : ..
  8. -rw-------. hive hive Nov : .bash_logout
  9. -rw-------. hive hive Nov : .bash_profile
  10. -rw-------. hive hive Nov : .bashrc
  11. drwx------. hive hive Nov : .gnome2
  12. drwx------. hive hive Nov : .mozilla

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

  1. [root@hao ~]# openssl passwd - -salt ''
  2. Password:
  3. $$$2hpL/5Hu1halILqBt7TFe.
  4. [root@hao ~]# nano /etc/shadow

《鸟哥的Linux私房菜》学习笔记(5)——权限管理的更多相关文章

  1. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置

    Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...

  2. 鸟哥的linux私房菜学习笔记 __ 命令与文件的搜寻

    连续输入两次[tab]按键就能够知道使用者有多少命令可以下达.那你知不知道这些命令的完整档名放在哪里?举例来说,ls 这个常用的命令放在哪里呢? 就透过 which 或 type 来找寻吧! 范例一: ...

  3. 鸟哥的Linux私房菜学习笔记(1)

    2014/10/29 1.档案的权限管理分为三个部分: 拥有者.群组.其他 2.ls -al 命令可以看到档案的详细信息 3.档案的属性中由十个部分构成 第一个部分是档案类型 -代表档案.d代表文件夹 ...

  4. 鸟哥的linux私房菜学习记录之账号管理与权限设定

    每个登录者都会取到两个ID,一个使用者ID,一个群组ID

  5. 【鸟哥的Linux私房菜】笔记1

    Linux是什么 从操作系统与cpu架构关系到linux  Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...

  6. 鸟哥的linux私房菜学习-(一)优缺点分析以及主机规划与磁盘分区

    一.linux的优缺点 那干嘛要使用Linux做为我们的主机系统呢?这是因为Linux有底下这些优点: 稳定的系统:Linux本来就是基于Unix概念而发展出来的操作系统,因此,Linux具有与Uni ...

  7. 【鸟哥的Linux私房菜】笔记2

    Linux的应用 学习资源整理 安装记录 >< 1.Linux的应用: 网络服务器 数据库 学术机构的高效运算任务 嵌入式系统 ... 2.挂载与磁盘分区 学习资源整理 学习 1.书上的网 ...

  8. 【鸟哥的Linux私房菜】笔记3

    正确地开机 最好不要使用root账号登陆!GNOME图形界面 View items as a list X WindowShell 文本交互界面bash是Shell的名称,Linux的默认壳程序就是b ...

  9. 《鸟哥的Linux私房菜》笔记——02. 关于Linux

    Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...

  10. 鸟哥的linux私房菜学习

    cat /etc/shells 系统拥有的shellcat /etc/passwd 记录用户使用的shell按两次 tab 键可显示所有可执行的指令alias 查看所有命令的别名alias lm='l ...

随机推荐

  1. jQuery图片组展示插件----Galleria使用简介

    1.技术目标 掌握Galleria插件的基本操作 2.Galleria简介 Galleria是一个jQuery插件,可用于展示多张图片,操作也比较简单, 展示效果也非常不错,如图: 提示:Galler ...

  2. Java爬虫初体验

    年关将近,工作上该完成的都差不多了,上午闲着就接触学习了一下爬虫,抽空还把正则表达式复习了,Java的Regex和JS上还是有区别的,JS上的"\w"Java得写成"\\ ...

  3. vue-pos : 子组件与子组件通讯

    子组件与子组件通讯: 例子子组件1 要与子组件2 通讯 步骤1 : 在父组件新建一个 vue 对象 : const eventHub = new Vue() 步骤2 : 子组件1 发起事件 :this ...

  4. Table中采用JQuery slideToggle效果的问题

    需求:用JQuery实现,点击最上边的粗加号时,对所有含有子表的Tr进行展开,点击 + 号时,只对当前Tr的下一个tr内容的动态隐藏和显示: 问题:JQuery的slideToggle() slide ...

  5. oracle 清空数据库缓存

    oracle 清除数据库缓存: alter system flush shared_pool ; alter system flush BUFFER_CACHE ;

  6. fastjson解析json数组

    1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...

  7. LeetCode Best Time to Buy and Sell Stock II (简单题)

    题意: 股票买卖第2题.给出每天的股票价格,每次最多买一股,可以多次操作,但是每次在买之前必须保证身上无股票.问最大的利润? 思路: 每天的股票价格可以看成是一条曲线,能卖掉就卖掉,那么肯定是在上升的 ...

  8. LeetCode Sort List 链表排序(规定 O(nlogn) )

    Status: AcceptedRuntime: 66 ms 题意:根据给出的单链表,用O(nlogn)的时间复杂度来排序.由时间复杂度想到快排.归并这两种排序.本次用的是归并排序.递归将链表的规模不 ...

  9. NYOJ-22-素数求和问题

    原题地址 素数求和问题 描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和. 输入 第一行给出整数M(0<M<10)代表多少组测 ...

  10. Aizu 2300 Calender Colors(暴力)

    状压以后,直接暴力枚举,2^20约等于1e6,而且满足bitcount = m的状态很少. #include<bits/stdc++.h> using namespace std; +; ...