Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件。

用户权限通过创建用户时分配的用户ID(UID)来跟踪的。每个用户有唯一的ID,但是登录时用的不是UID,而是登录名。

7.1.1 /etc/passwd 文件

这个文件将用户的登录名匹配到对应的UID中,还包含了一些与用户相关的信息。

root用户账户是Linux系统的管理员,UID是0.

有些账户是系统账户:系统上运行的各种服务进程访问资源用的特殊账户。

所有运行在后台的服务都需要用一个系统用户账户登录到linux系统上。

UID 500 以下是系统预留给系统账户的。

/etc/passwd 文件包含的信息有:登录用户名,密码,UID,组ID(GID),文本描述,HOME目录的位置,默认的shell。

7.1.2 /etc/shadow 文件

对Linux系统密码管理提供了更多的控制。只有root才能访问

为每个用户账户都保存了一条记录。

这样Linux系统可以更好的控制用户密码。

7.1.3 添加新用户

useradd,可以一次性创建新用户账户及设置用户HOME目录结构。

可以查看useradd命令用到的一些默认值, -D。

/etc/skel   目录很有意思,创建用户时会将这些默认文件复制到你创建的每个用户的HOME目录中。

例子:

$user add -m test   // 默认情况下不会创建HOME目录,除非加了 -m。

// 创建了HOME目录,并将/etc/skel 复制进去了

useradd还可以接一些参数。

还可以更改默认值的参数。

7.1.4 删除用户

默认会删除/etc/passwd文件中的用户信息。不会删除属于该账户的任何文件。

加上-r  会删除用户的HOME目录和邮件目录,

userdel -r test

7.1.5 修改用户

修改用户账户信息的

usermod: 修改用户账户字段。可以加其他选项

passwd和chpasswd,改变用户密码

chpwsswd能从标准输入自动读取登录密码和密码对列表。

chsh:修改默认的用户登录shell

chfn:

chage:帮助管理用户账户的有效期

7.2 使用Linux组

组权限允许许多个用户对系统中的对象(文件,目录,设备......)共享一组共用的权限。

每个组都有唯一的组ID(GID)。还有唯一的组名。

7.2.1 /etc/group 文件

可以查看该文件:包含组名 组密码 GID 属于该组的用户列表

不能直接修改/etc/group 这个文件来将一个用户添加进组。而应该使用usermod命令。

7.2.2 创建新组

groupadd命令

7.2.3 修改组

groupmod命令

7.3 理解文件权限

ls -l

- 代表文件

d 代表目录

l 链接

c 字符设备

b 块设备

n 网络设备

-rwxrwxr-x   分别是文件属主、同组用户、其他人的权限

7.3.2 默认文件权限

创建一个文件,会有个默认的权限。通过umask查看

umask  第一个表示粘着位。

后面的3位表示文件或目录对应的umask对应的八进制值。

这个只是一个掩码。还要转换一下才能得到真正的权限

对于文件来说全权限是666(全都可读可写) rw-rw-rw-

对于目录来说全权限是777(全都可读可写可执行)rwxrwxrwx

创建新文件的权限=全权限 - umask

比如:umask 是222,那么创建的文件的权限就是 666 - 222 = 444(r--r--r--)

对于目录来说就是 555  (r-xr-xr-x)

7.4 改变安全性设置

chmod 命令

chmod 777 newfile

chmod o+r newfile // 给其他用户增加可执行权限

chmod u+r newfile // 给属主增加可执行权限

chmod g+w newfile // 给组用户增加写权限

chmod a+r newfile // 给所有增加读权限

还可以移除权限

chmod a-r newfile // 给所有移除读权限

7.4.2 改变所属关系

chown改变文件的属主,(可用登录名或UID来指定文件的新属主)

chgrp改变文件的默认属组(属于哪个组group)

7.5 Linux上共享文件的方法是创建组

目前新建一个文件想让其他人能访问,有两个方法:

(1)改变其他用户所在安全组的访问权限

(2)给文件分配一个包含其他用户的新默认属组。

大规模操作就会很繁琐。下面就来解决这问题。

Linux还为每个文件和目录存储了3个额外的信息位

设置用户ID(SUID):文件被用户使用时,程序会以文件属主的权限运行

设置组ID(SGID):对文件来说被使用时,以文件属组的权限运行。对目录来说,创建的新文件会已目录的默认属组作为默认属组。

粘着位:进程结束后文件还驻留在内存中。

SGID非常重要,启用SGID之后可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也就成为了每个用户的属组。

要创建共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID位置位。

《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限的更多相关文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---6

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  2. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---5

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  3. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---4

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  4. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---3

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  5. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---2

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  6. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---1

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---0

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  8. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  10. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. 架构师之路-在Dubbo中开发REST风格的远程调用

    架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...

  2. ocs的沟通平台

    Microsoft Office Communications Server 2007 R2 简称:OCS准时准确地联系人员以及管理信息过载根据人员的状态与其联系,然后单击最佳方式与其通信:通过电子邮 ...

  3. 图片载入状态判断及实现百分比效果loading

    前言 一些大的外部资源会导致页面加载速度慢,这时候一般会加上loading效果:这里实现的是根据图片加载进度的百分比loading效果 如何判断图片加载的状态 1.onload  onerror 推荐 ...

  4. 浅谈Java抽象类

    什么是抽象类?这名字听着就挺抽象的,第一次听到这个名字还真有可能被唬住.但是,就像老人家所说的,一切反动派都是纸老虎,一切有着装x名字的概念也是纸老虎.好吧,我们已经从战略上做到了藐视它,现在就要战术 ...

  5. C语言通过函数参数不能带出动态内存的例子。

    实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...

  6. 阿里巴巴 Java 开发规约插件初体验

    阿里巴巴 Java 开发手册 又一次来谈<阿里巴巴 Java 开发手册>,经过这大半年的版本迭代,这本阿里工程师们总结出来避免写出那么多 Bug 的规范,对于 Java 开发者简直就是必备 ...

  7. linux_base_commond_one

    1.cd commond a. cd usr 切换到该目录下usr目录  b. cd ../ 切换到上一层目录  c.cd / 切换到系统根目录  d. cd ~ 切换到用户主目录 e. cd - 切 ...

  8. (@WhiteTaken)设计模式学习——代理模式

    今天学习了一下代理模式,代理模式分为很多种.目前感觉有两种是需要学习一下的. 静态代理模式 动态代理模式 1. 静态代理模式 需要被代理的类,实现一个或者多个接口. 代理类需要实现被代理类的接口,在此 ...

  9. 张高兴的 Windows 10 IoT 开发笔记:ADXL345 加速度传感器

    GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/ADXL345Demo

  10. 张高兴的 Xamarin.Android 学习笔记:(一)环境配置

    最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多.我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了. ...