一、权限的基本概念                                                  

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

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 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 更改文件的属组

[hadoop@hao tmp]$ ll /tmp
total
-rw-rw-r--. hadoop hadoop Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
...
[root@hao ~]# chown hao /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
-rw-rw-r--. hao hadoop ?. : a.hadoop
-rw-r--r--. hadoop mygroup ?. : b.hadoop
... [root@hao ~]# mkdir /tmp/testdir
[root@hao ~]# ll /tmp
total
-rw-rw-r--. hao hadoop Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
...
drwxr-xr-x. root root Nov : testdir
[root@hao ~]# chown hao /tmp/testdir
[root@hao ~]# ll /tmp
total
-rw-rw-r--. hao hadoop Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
...
drwxr-xr-x. hao root Nov : testdir

命令选项:

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

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

[root@hao ~]# ll /tmp
total
-rw-rw-r--. hao hadoop Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
...
[root@hao ~]# chown --reference=/tmp/b.hadoop /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
-rw-rw-r--. hadoop mygroup Nov : a.hadoop
-rw-r--r--. hadoop mygroup Nov : b.hadoop
...

2、chgrp(change group)修改属组

使用方法同上。

3、chmod 更改文件权限

  a、修改三类用户的权限

  命令格式:chmod MODE filename...

  命令选项:

    -R:

    --reference:

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

chmod  test

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

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

[root@hao ~]# ll /tmp
total
-rw-rw-r--. hadoop mygroup Nov : 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
-rw-rw-rw-. hadoop mygroup Nov : a.hadoop
...
[root@hao ~]# chmod og=r,u=w /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
--w-r--r--. hadoop mygroup Nov : a.hadoop
...

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

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

[root@hao ~]# chmod a+r /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
-rw-r--r--. hadoop mygroup Nov : a.hadoop
...
[root@hao ~]# chmod a-r /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
--w-------. hadoop mygroup Nov : a.hadoop
...
[root@hao ~]# chmod u+r /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
-rw-------. hadoop mygroup Nov : a.hadoop
...
[root@hao ~]# chmod u+r,g+x /tmp/a.hadoop
[root@hao ~]# ll /tmp
total
-rw---x---. hadoop mygroup Nov : a.hadoop
...

三、创建文件的默认权限                                            

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

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

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

[root@hao tmp]#
mkdir test1
[root@hao tmp]# ls -dl test1
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

[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=(openstack) gid=(openstack) groups=(openstack)
[root@hao ~]# ll /home
total
...
drwxr-xr-x. root root Nov : openstack
...
[root@hao ~]#
ls -al /home/openstack
total
drwxr-xr-x. root root Nov : .
drwxr-xr-x. root root Nov : ..
-rw-r--r--. root root Nov : .bash_logout
-rw-r--r--. root root Nov : .bash_profile
-rw-r--r--. root root Nov : .bashrc
drwxr-xr-x. root root Nov : .gnome2
drwxr-xr-x. root root Nov : .mozilla

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

[root@hao ~]# chown -R openstack:openstack /home/openstack
[root@hao ~]# ls -ld /home/openstack/
drwxr-xr-x. openstack openstack Nov : /home/openstack/
[root@hao ~]#
ls -la /home/openstack/
total
drwxr-xr-x. openstack openstack Nov : .
drwxr-xr-x. root root Nov : ..
-rw-r--r--. openstack openstack Nov : .bash_logout
-rw-r--r--. openstack openstack Nov : .bash_profile
-rw-r--r--. openstack openstack Nov : .bashrc
drwxr-xr-x. openstack openstack Nov : .gnome2
drwxr-xr-x. openstack openstack Nov : .mozilla

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

[root@hao ~]# chmod -R go= /home/openstack/
[root@hao ~]#
ls -ld /home/openstack
drwx------. openstack openstack Nov : /home/openstack
[root@hao ~]# ls -la /home/openstack/
total
drwx------. openstack openstack Nov : .
drwxr-xr-x. root root Nov : ..
-rw-------. openstack openstack Nov : .bash_logout
-rw-------. openstack openstack Nov : .bash_profile
-rw-------. openstack openstack Nov : .bashrc
drwx------. openstack openstack Nov : .gnome2
drwx------. openstack openstack Nov : .mozilla

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

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

1、创建组hive

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

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

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

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

[hao@hao ~]$ date
Tue Nov :: CST
[hao@hao ~]$
date +%s

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

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
drwxr-xr-x. hive hive Nov : .
drwxr-xr-x. root root Nov : ..
-rw-r--r--. hive hive Nov : .bash_logout
-rw-r--r--. hive hive Nov : .bash_profile
-rw-r--r--. hive hive Nov : .bashrc
drwxr-xr-x. hive hive Nov : .gnome2
drwxr-xr-x. hive hive Nov : .mozilla
[root@hao ~]# ls -dl /home/hive
drwxr-xr-x. hive hive Nov : /home/hive

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

[root@hao ~]# chmod -R go= /home/hive
[root@hao ~]# ls -dl /home/hive
drwx------. hive hive Nov : /home/hive
[root@hao ~]# ls -al /home/hive
total
drwx------. hive hive Nov : .
drwxr-xr-x. root root Nov : ..
-rw-------. hive hive Nov : .bash_logout
-rw-------. hive hive Nov : .bash_profile
-rw-------. hive hive Nov : .bashrc
drwx------. hive hive Nov : .gnome2
drwx------. hive hive Nov : .mozilla

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

[root@hao ~]# openssl passwd - -salt ''
Password:
$$$2hpL/5Hu1halILqBt7TFe.
[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. Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  2. 解决ie9以及以下console未定义

    页面明明已经删除了所有的console,但是ie9下依旧会报错 console未定义 只能这样解决了 window.console = window.console || (function () { ...

  3. (已解决)Arduino mega2560 R3插在电脑上没有反应

           OK,话不多说.网上找了一些资料,感觉都说的不够清晰.自己琢磨了下,有了一个简单粗暴的方法. 步骤1:插上Arduino mega2560板子.没有反应. 步骤2:我的电脑-管理-设备管 ...

  4. PHP函数:mysql_fetch_assoc指针重置

    本文目前主要讨论mysql_fetch_assoc“指针”如何重置的问题 要了解mysql_fetch_assoc,先看看它与mysql_fetch_row和mysql_fetch_array的关系. ...

  5. sql server 索引总结三

    一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...

  6. mysqlbench使用

    看见不少人问mysqlbench怎么用,这个好像没什么困难的,基本看的懂英文就可以使用了,感觉像使用word一样. 下载地址http://www.mysql.com/products/workbenc ...

  7. hihocoder第三十六周 二分查找

    题目链接:http://hihocoder.com/contest/hiho36/problem/1 , 一个比较简单的二分. 算法: 由于数据量比较大,O(nlogn)无法通过,所以不能先排序再查找 ...

  8. 【BZOJ3668】[NOI2014] 起床困难综合症(位运算思想)

    点此看题面 大致题意: 给定一些位运算操作,让你在\(0\sim m\)范围内选一个初始值,使其在经过这些运算后得到的结果最大. 前置技能:关于位运算 作为一道位运算的题,如果你不知道什么是位运算,那 ...

  9. 2018.5.27 OraclePLSQL编程 if-else练习和循环结构练习

    if-else运用 declare v_num number(8); begin v_num :=&n; if v_num>0 and v_num<100 then dbms_ou ...

  10. ubuntu or centos 网卡无法启动

    [root@seasoned-bro:/home/daeh0f]# /etc/init.d/network restart Restarting network (via systemctl): Jo ...