zoukankan      html  css  js  c++  java
  • 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

    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位置位。

  • 相关阅读:
    Java之CyclicBarrier使用
    HashMap,LinkedHashMap,TreeMap的区别
    阿里巴巴常考面试题及汇总答案
    HashTable, HashMap,TreeMap区别
    Java集合类详解
    java代码的几个utils,基本可以直接用
    adb控制手机屏幕滑动(批处理)
    在设备上启用 adb 调试,有一个小秘密
    python clickZan
    python控制鼠标键盘
  • 原文地址:https://www.cnblogs.com/xcywt/p/7834990.html
Copyright © 2011-2022 走看看