zoukankan      html  css  js  c++  java
  • Linux用户和权限

    用户和用户组管理

    • linux使用用户和组来限制资源的使用。 在linux上运行任何程序或命令都要以一个具体的用户来运行,这个用户的权限决定了相应的程序能访问的资源和能执行的操作。

    用户相关命令

    • 组是用户的集合,比如我创建一个 dev 组,这个组里的用户有: zhaoy, steve, david等等。
    • 添加用户:useradd -G group1 user1 添加一个用户user1,并指定其附属组为 group1.

    该命令需要root权限,所以我先用 su -切换到root用户。

    • 可使用 id 命令来查看用户信息:

    注意:uid 是用户的id, gid是用户主组的id,后面的组是用户的附属组,主组和附属组差别不大,用户只能有一个主组但可以有多个附属组。
    还有很多其它参数,具体使用请 man useradd

    • 为用户设置密码

    • 用户信息放在 /etc/passwd 文件种,用户的密码信息放在 /etc/shadow 文件中。

    • 修改用户命令: usermod

    • 删除用户命令: userdel
      -- 如果删除用户时提示 user1被进程使用,请使用exit 和 logout命令多登出几次。

    • skel目录:新建用户时如果用 ·useradd -m user1· 那么就会为用户创建家目录(又叫主目录),家目录的默认位置为 /home/user1 ,同时会将 /etc/skel 目录下的文件拷贝到家目录下。

    组相关命令

    • 添加组 groupadd dev 添加一个名为 dev 的组。
    • 修改组信息: groupmod
    • 删除组:groupdel dev

    文件的UGO 权限模型

    • linux上的一切都是用文件来表示的,文件上附带的信息有:文件的一般权限和特殊权限信息,文件所属的用户U,文件所属的用户组G,文件的隐藏属性,文件大小,文件的创建和修改时间。

    文件基本信息

    • 运行 ls -al ,会显示类似如下信息:

    每一行是一个文件或者目录的信息,每一部分用空格分开,下面以第一条为例解释如下:

     第1部分的第一个字符:  文件类型,-表示这是一个文件,d表示这是一个目录,l表示这是一个连接文件,当然还有其它类型。
     第1部分的第2到10 个字符:即 rw-r--r-- , 这是该文件的UGO权限信息,下面会细说。
     第2部分: 1 表示该文件的连接数,通俗说就是有多少引用指向了该文件。
     第3部分:zhaoy  表示该文件的所有者是zhaoy这个用户。
     第4部分:zhaoy 表示该文件的所属组是 zhaoy 这个组。
     第5部分:675 表示该文件目前的大小是 675 字节(B)。
     第6部分:9月 22 12:19  表示该文件被创建和修改的时间。
     第7部分:文件名,如果文件名以点开头,说明这是一个隐藏文件,如果你用 `ls -l` ,那么隐藏文件是不会显示出来的,除非你加 `-a` 参数。
    

    r w x 读 写 执行权限

    • 文件的读权限:你可以看文件,比如 cat a.txt 可以看里面的内容。
    • 文件的写权限:你可以修改删除文件里的内容,但无法删除文件本身。
    • 文件的执行权限:可以执行该文件。
    • 目录的读权限:可以读取目录下的文件和子目录信息,比如可以用ls 命令列出目录下的文件和目录列表。
    • 目录的写权限:可以在目录下增加,删除文件。
    • 目录的执行权限:可以进入目录,比如可以执行 cd 进入目录。

    G, G, O:文件的所有者,文件所属的组,其它用户和组

    • 所以,修改权限就是权限和用户的组合。
    • 修改权限的命令命令:
      chmod u+rw test.sh ,给test.sh 的所有者添加读写权限。
      chmod g-x test.sh ,给test.sh 文件所在的群组取消执行权限。
    • 修改文件所属用户 chower user1 file1
    • 修改文件所属组 chgrp grp1 file1

    默认权限

    • 权限还可以用数字表示: r 4, w 2, x 1,比如一个文件的权限是 765,那就表示这个文件上U的权限是 rwx (7=4+2+1), G的权限是 rw-(6=4+2),O的权限是r-x (5=4+1)。
    • 当我们新建一个文件或目录的时候,它们上面的权限信息就是来自默认权限。
    • 文件的默认权限 = 666 - umask.
    • 目录的默认权限 = 777 - umask.
    • 运行 umask命令可以查看和设置默认权限 ,umask的值表示要减去的权限:

    为什么是4位?因为第一位表示的是特殊权限。
    所以文件的默认权限就是 666 - 022 = 644,目录的默认权限是 777 - 022 = 755

    特殊权限

    • SUID,例子:chmod u+s file1 针对文件,特别是可执行文件的U上的权限,当设置上是,如果文件可执行文件file1的所有者是userA,但是当前执行file1的用户是userB,如果userB对file1有x权限,那么当userB执行file1时,userB会临时切换位userA,file1就可以执行userA有权执行的操作。
    • SGID: 例子:chmod g+s file1:针对文件和目录,对文件的作用同SUID,对目录的作用就是:如果目录dir1 的所属组时group1,那么不论是哪个用户在这个目录下新建文件或子目录,这些新建的文件和子目录所属的组都是group1.
    • sticky: 例子:chmod o+t dir1 : 针对目录,对目录的作用:除root外的任何用户在目录dir1下增删改文件时,只能修改删除自己创建的文件,无法修改删除不是自己的文件。

    隐藏属性

    • 列出文件的隐藏属性 lsattr file1
    • 修改文件的隐藏属性:chattr -i -a file1
      • -i 参数表示这个文件除了root外不允许进行任何操作。
      • -a 表示这个文件内容只能追加,不能删除内容。
      • -i -a 只能由root来设置。
  • 相关阅读:
    [51nod] 1301 集合异或和
    [BZOJ] 1088: [SCOI2005]扫雷Mine
    [LUOGU] P4251 [SCOI2015]小凸玩矩阵
    8.21模拟赛
    [BZOJ] 3163: [Heoi2013]Eden的新背包问题
    [BZOJ] 1001: [BeiJing2006]狼抓兔子
    【NOIP2017提高A组冲刺11.8】好文章
    [BZOJ] 1520: [POI2006]Szk-Schools
    [BZOJ] 1877: [SDOI2009]晨跑
    day23(事务管理)
  • 原文地址:https://www.cnblogs.com/imap/p/7580420.html
Copyright © 2011-2022 走看看