朗科实习期间心得笔记(六)

与用户账户和组账户相关的文件:
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/default/useradd
/etc/login.defs
/etc/skel(directory)

/etc/passwd:用户名解析库
root:x:0:0:root:/root:/bin/bash
   1  2 3  4   5         6     7    
1字段:用户账户登陆名称
2字段:使用 X 表示密码占位符
3字段:用户账户的UID
4字段:用户账户的GID,即该用户账户的基本组的ID;
5字段:注释信息,如用户职位,用户完整名称等;
6字段:用户账户家目录的绝对路径;
7字段:用户账户的默认登陆shell

/etc/group:组账户解析库
root:x:0:
  1   2 3  4
1字段:组账户名称
2字段:组账户密码占位符
3字段:组账户的GID
4字段:以该组为附加组的用户列表,多个用户名之间使用 , 分隔;

/etc/shadow:用户账户的解析
root:$6$6kkn6aL6.uXXGiV9$Z1rLH/FLESIInB.V1TfCn9V/AhDlQMQIwOKwpxdk4h101tB6SdUv6USEIccF2XNcR.kpUuQE6x4HbSed24bNP.::0:99999:7:::

1字段:用户账户登录名
2字段:加密算法+随机变量+密码加密结果
3字段:最后一次修改密码的时间,其表示法为从1970年1月1日到当前系统时间所经过的天数
4字段:用户密码的最短使用期限;可以理解为多长时间内不能更改密码,如果为0表示随时可更改密码;如果不为0则表示几天内不能更改密码;
5字段:用户密码的最长使用期限;可以理解为多长时间内无需改密码也可以正常登录;
6字段:用户的密码使用时间在达到最大使用期限前多少天,在用户登录到系统是发送警告消息;默认为7天;
7字段:用户密码过期后的宽限期;可以理解为在密码过期后多少天内登陆系统是仍然可以提示修改密码;
8字段:用户密码的绝对失效时间;其表示法为从1970年1月1日到指定日期时间的天数; usermod  -e   可修改
9字段:保留,未被使用;

/etc/gshadow
root:::
1字段:组账户名称
2字段:组账户的加密保存密码
3字段:组管理员,现在废弃了;
4字段:以该组为附加组的用户账户列表;

gpasswd命令:设置组的密码及管理组成员;
   gpasswd  [选项]  组名
   -a USERNAME :将-a选项指定的用户添加至指定组
   -d USERNAME :将-d选项指定的用户从指定的组中移除

newgrp命令:用一个新的组重新登陆到系统,需要被指定的组有正确的密码设置;
   newgrp [-]  [组名]

/etc/default/useradd
作用:定义创建用户时的用户属性的默认值文件
 GROUP=100 // 在创建用户时如果没有为用户指定基本组,系统会为用户指定一个与用户名相同的组作为其基本组;
HOME=/home // 在创建用户时,如果没有为用户指定家目录,则会在/home目录中创建一个于用户名相同的目录作为家目录
INACTIVE=-1 // 在创建用户时,设定用户密码过期之后的宽限期,默认为-1,意为关闭用户密码过期宽限功能,即宽限期为永远;
EXPIRE=  // 在创建用户时,设定用户密码的绝对失效日期,默认没有启用;
SHELL=/bin/bash // 在创建用户时,设定用户的默认登陆shell,默认值为/bin/bash
SKEL=/etc/skel // 在创建用户时,为用户家目录提供的默认文件的模板
CREATE_MAIL_SPOOL=yes // 在创建用户时,是否直接为用户创建邮箱文件,默认为创建;

/etc/login.defs(definations)
作用:定义shadow_utils相关的属性,包括用户邮箱路径、密码的时间参数、UID和GID的范围,删除用户账户的命令、是否设置私有组(仅包含一个用户并作为该用户主要组)、权限位掩码、家目录创建开关、加密算法选择;
MATL_DIR        /var/spool/mail
//指定创建用户时为用户指定邮箱文件的路径
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN  5
PASS_WARN_AGE 7
//与密码的时间参数有关的设置
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
//指定默认的ID选择范围
CREATE_HOME yes
//是否在创建用户时为用户创建家目录的开关
UMASK           077
//指定用户家目录的默认权限的掩码
USERGROUPS_ENAB yes
//是否开启私有组开关
ENCRYPT_METHOD SHA512
//加密算法的选择

/etc/skel(directory)
作用:为新创建的用户的家目录提供默认的shell配置文件

文件系统的权限管理:
  普通权限
  特殊权限
  文件的扩展属性
  FACL(文件系统访问控制列表)

DAC:自主访问控制;

安全上下文:
    任何在计算机中执行的任务都是由进程来实现的;
    进程有必要访问和使用文件或某些数据资源;

进程和其要操作的文件之间的关系,就定义为安全上下文;
    在DA模型中,定义安全上下文的方式很简单:
      所有权:任何启动进程的用户就是该进程的所有者;进程的所有者可以变更;
              任何创建文件的用户就是该文件的所有者;文件的所有者是可以变更的;
      使用权:在文件上面定义的对于该文件的特定使用过滤规则;
              三个权限:所有者权限,所属组权限,其他人权限。

安全上下文的匹配规则:
    当某个进程试图操作某个文件时,DAC将作如下规则匹配:
      1.判断进程的所有者和文件的所有者是否为同一用户,如果是则直接应用文件的所有者权限;
      2.如果不是则进一步判断进程的所有者是否为文件的所属组的成员,如果是则直接应用文件的所属组权限;
      3.如果不是,直接用其他人权限;

文件权限的构成:
   使用权:MODE,permission
     三个基本权限:
       r:readable,可读
       w:writable,可写
       x:executable,可执行

目录文件:
     r:可以使用ls命令获取其中所包含的所有文件的文件名列表;
     w:可以在此目录中进行文件名修改(创建、删除、修改);即可以创建、删除、修改文件名;
     x:可以使用ls -l命令查看文件的各个文件的属性信息,在路径中引用该目录;
    非目录文件
     r:可以利用cat之类的命令获取文件中存放的数据信息;
     w:可以修改(添加、修改、删除、覆盖)文件中所存放的数据信息
     x:可以将文件发起为进程

获取使用权和所有权的相关信息:
  ls -l +路径
  rwxr-xr-x:三个权限位(属主/所有者、属组/所属组、其他用户)
    属主权限:rwx,此权限位标识为user,简写为u;
    属组权限:r-x,此权限位标识为group,简写为g;
    其他用户权限:r-x ,标识为other,简写为o;               
    (短横线 - 代表不具备该权限)           所有的权限位可以统一用all,简写为a;

rwx组合称为 “权限标识三元组” :

数字权限标识:二进制数字标识,在对应的权限位上有权限为1,无权限为0;
      ---   000    0
      --x   001    1
      -w-   010    2
      ...   ...
      rwx   111    7

使用符号标识权限和数字标识权限的区别:
     1.使用符号标识法可以只标识某一个特定的权限位,也可以同时标识所有的权限位;  例:u=rw;ug=rwx;
     2.使用数字标识法只能同时标识所有权限位;例:744;934;8意味着008;

修改文件的使用权:
    chmod - change mode  命令
    改变文件的访问权限
    格式:
      chmod [OPTION]... --reference=RFILE FILE...       根据R文件权限更改文件权限
      chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...

MODE:符号权限标识法:
      u,g,o,a:表示权限位;
      +,-,=:表示授权方式
        +:表示在指定的权限位上增加指定权限,如果新增的权限是已经存在的权限则结果相比较授权之前无变化;
        -:表示在指定的权限位上撤销指定权限,如果被撤销的权限在原权限位并不存在则结果相比之前无不变化;
        =:表示在指定的权限为上精确授权,此种授权方式不考虑该权限位原有的权限设定;

r,w,x:表示具体权限

注意:chmod + 或 - r 或 x FILE:在所有的权限位上增加或撤销读或执行权限
            chomd + 或 - w  FILE :仅在所有者权限位上增加或撤销写权限

注意:对于文件来说,执行权限是非常重要的安全上下文标识;因此默认情况下,所有的非目录文件都不应该有执行权限;因为一旦非目录文件具有了执行权限,则意味着该文件可以被执行,发起为进程,则可以按需要使用系统资源;

OCTAL-MODE: 八进制数字权限标识法
      例:~]# chmod  765  r.txt

--reference=/etc/shadow  root.txt
    将shadow权限赋予root

常用选项:
      -R:递归的设置目标文件或目录的权限

修改文件的所有权:

chown
        chown - change file owner and group//修改文件的所有者和组别
    格式:
      chown [OPTION]... [OWNER][:[GROUP]] FILE...
      chown [OPTION]... --reference=RFILE FILE...

例:chown user1  test:仅更改test所属主
          chown user1:  test更改test所属主,所属组更改为user所属主要组
          chown :user1  test仅更改test所属组为user1
          chown user1:root  test更改test所属主为 user1,所属组为 root

注意:在使用chown命令时,可以使用“ . ”代替“ :” 。

常用选项:
       -R:递归地修改目录及其下面内容的所有权
       注意:对于文件来说,普通用户可以修改所有者为自己的文件的使用权,但无法修改文件的所有权;修改文件所有权的操作只有ROOT可以完成;

chgrp(不常用)
        chgrp - 改变文件的组所有权
        格式:chgrp [OPTION]... GROUP FILE...
              chgrp [OPTION]... --reference=RFILE FILE...

注意:chown和chgrp命令所指定的用户和组,既可以是用户名和组名,也可以是UID和GID;

mkdir :   -m MODE   :在创建目录是为其指定权限

install:复制文件并设置属性
        格式:
          install [OPTION]... [-T] SOURCE DEST:单源复制,为复制后的文件增加执行权限;
          install [OPTION]... SOURCE... DIRECTORY:多源复制,为复制后的文件增加执行权限;
          install [OPTION]... -d DIRECTORY...:创建目录
        常用选项:
          -g, --group=GROUP
              set group ownership, instead of process’ current group//设定目标文件的所属组为指定组,而不是进程所有者的主要组;

-m, --mode=MODE
              set permission mode (as in chmod), instead of rwxr-xr-x//设定目标文件的权限,而不是755;

-o, --owner=OWNER
              set ownership (super-user only)//设定目标文件的所有者,仅root可用;

注意:install命令,不能复制目录,即不能以目录为源文件,如果其源文件是一个目录,则install命令会进入这个目录依次复制所有非目录文件到目标位置;

特殊权限:
 
  SUID:SUID仅设置在可执行的文件上,默认情况下当用户执行此类可执行文件时,被发起的进程的所有者不是进程发起者,而是可执行文件的所有者;换句话说,进程以文件所有者的身份运行;

SUID权限所显示的位置:文件的属主的权限位中的执行权限位上,如果属主本来就具有执行权限,则显示为“s”,如果属主本来没有执行权限则显示为“S”。

管理SUID权限:
   1.符号标识法:chmod u+s FILE
   2.数字标识法:chomd 4755 FILE

SGID:SGID可以设置在可执行文件或目录的属组权限位的执行权限上;
      如果某个目录设置了SGID权限,并且对于某些用户有写权限,则所有在此目录中创建的新文件和目录的所属组均为其父目录的所属组,而并非进程发起者的主要组;
  SGID权限显示位置:文件的属组权限位上的执行权限;如果属组本来就有执行权限则显示为s,否则显示为S。
 
  管理SGID权限:
      1.符号标识法:chmod g+s DIR(目录)
      2.数字标识法:chmod 2770 DIR(目录)

STICKY:STICKY仅设置在目录的其他用户权限位的执行权限上;
     如果在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡是拥有写权限的用户都能直接管理该目录中的所有文件名,包括改名文件及删除文件名等操作;因此需要在这样的目录上设置STICKY特殊权限;如果此类目录设置了STICKY,则所有用户即便拥有写权限也仅能删除或改名所有者为自身的文件;

STICKY权限的显示位置:在目录的其他用户的权限位的执行权限上,如果该权限位本来有执行权限,则显示为t,否则显示T。

管理STICKY权限:
    1.符号标识法: chmod o+t DIR
    2.数字标识法: chmod 1770 DIR

权限遮罩码
  作用:在创建目录或文件时,被创建出来的目录或文件的默认权限上删除遮罩码上所对应的权限;

注意:在创建目录或文件时,默认不设置特殊权限;

对于目录:默认的权限为 0777去掉umask
  对于非目录文件:默认的权限为 0666去掉umask

umask [OCTAL-MODE]

默认设置遮罩码的文件: /etc/bashrc
    规则:如果用户的UID大于199并且用户的用户名和主要组的组名相同,则遮罩码为002,否则遮罩码为022;

文件的扩展属性:

lsattr命令
   lsattr - 显示文件在Linux第二扩展文件系统上的特有属性
   lsattr [ -RVadv ] [ files...  ]

chattr
     修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
    chattr [ -RVf ] [ -v version ] [ mode ] files..

mode可以是:+-=[aAcCdDeEtTu]
      +:增加
      -:删除
      =:明确给定

a:在向文件写数据时只能以附加的方式进行写操作;文件的内容不能被更改和删除;一般会为日志文件设置此属性;
      A:atime,文件的访问时间戳控制属性;对于并发访问量较大或并发访问频率较高的文件应该设置此属性以降低IO成本;
      c:设置是否自动压缩之后在存储
      C:是否开启“写实复制”功能
      d:使用dump备份文件系统时,跳过属性设置为d的文件
      D:设置文件在文件系统中的异步写操作;
      i:设置文件不能被删除、改名及设定链接关系
      s:设置文件的保密性删除
      u:于s属性相反,如果此类文件被删除,则在存储器中会继续保存其内容
      :
      :

FACL:
      Filessystem Access Control List,文件系统访问控制列表
      想要应用此功能必须要让文件系统能够支持;
      FACL为文件系统的额外赋权机制;

在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的某个指定用户或组的一种机制

这种机制在Centos或RHEL7之后发行的版本中才逐渐成熟

与FACL相关的命令:

setfacl命令
         setfacl - set file access control lists
         格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec]  file ...

setfacl --restore=file(还原默认值)
    常用选项:
        -m acl_spec:为指定文件设置acl_spec
        -x acl_spec:将acl_spec从指定文件上移除

acl_spec:acl_specification,acl规格,访问控制列表
        u:USERNAME:MODE
        g:GROUPNAME:MODE
        MODE一般是使用符号权限标识法的权限:

示例:
          为文件赋予指定用户的额外访问权限:
        [[email protected] ~]$ setfacl -m u:link:rwx /tmp/temp/

撤销指定文件的额外访问权限:
        [[email protected] ~]$ setfacl -x u:link /tmp/temp/

注意:如果设置了FACL之后,再修改目标文件的使用权限,那么FACL中设置的权限条目可能受到影响而导致授权失败;因此,为了保证没有此项干扰,应该先调整目标文件或目录权限,在设置FACL;

getfacl命令
        getfacl - get file access control lists
        格式:getfacl [-aceEsRLPtpndvh] file ...

时间: 2024-10-08 18:27:46

朗科实习期间心得笔记(六)的相关文章

朗科实习期间心得笔记(八)

其他的文本处理命令:    wc命令    cut命令   在文件的每一行中提取片断   注意:能够被cut命令修剪的文本文件或数据内容,一般是具有某种特定格式或结构的文本文件或数据内容:如:/etc/passwd   cut [OPTION]... [FILE]...   常用选项   -d:指定在实施修剪操作时所使用的字段分隔符号,默认是TAB(空白字符):   -f:根据我们指定的字段分隔符号来指定要保留的字段编号的列表:     LIST称为字段列表,地址定界,其书写方法:      

朗科学习期间心得笔记(九)

bash脚本编程的结构:  bash脚本编程语言:    脚本类语言    解释型语言    过程式编程语言 过程式编程语言的结构:    顺序执行结构:从上到下,从左向右的执行所有语句(命令):    选择执行结构:当条件满足或不满足时,才会执行对应的语句(命令):    循环执行结构:重复执行某段语句(命令): bash脚本编程语言中,也具备上述结构:其默认为顺序执行结构:         选择执行结构:根据给定条件的逻辑判断结果,或根据某个可选取的取值范围,进而选择某个分支结构中的命令语句

朗科实习期间笔记心得(十)

bash脚本编程 case选择分支结构case 词 in [模式 [| 模式]...) 命令 ;;]... esac  在脚本中使用的case结构:     case $(VAR-NAME) in      PATTERN1)        COMMAND        ...        ::      PATTERN2)        COMMAND        ...        ::      ...    esac PATTERN可以是下列几类字符:    1.普通文本字符   

python之raw_input()(学习笔记六)

python之raw_input()(学习笔记六) 我们经常使用raw_input()读取用户的输入,如下例子所示: >>> name = raw_input('please input your name:'),截图如下: 下面简单说下,raw_input()与if搭配使用,脚本如下: #!/usr/bin/env python # -*- coding:utf-8 -*- birth = raw_input('birth:') if birth < 2000: print '0

湖南省监狱戒毒场所春节期间实现“四无”“六无”目标z7

湖南省监狱戒毒场所春节期间实现"四无""六无"目标比赛时候在都只是想要混个小康他们十年都是在球送入网窝开始掉队b6uo7a.yqtfu.cn/fdl49e.yqtfu.cn/vz4w96.yqtfu.cn/wihh4b.yqtfu.cn/yw5011.yqtfu.cn/v85m84.yqtfu.cn/bnmimr.yqtfu.cn/e37v53.yqtfu.cn/k0dymn.yqtfu.cn/v821zg.yqtfu.cn/fj7zr6.yqtfu.cn/y0j1

我的MYSQL学习心得(六)

我的MYSQL学习心得(六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2.四舍五入函数TR

swift学习笔记(六)析构过程和使用闭包对属性进行默认值赋值

一.通过闭包和函数实现属性的默认值 当某个存储属性的默认值需要定制时,可以通过闭包或全局函数来为其提供定制的默认值. 注:全局函数结构体和枚举使用关键字static标注    函数则使用class关键字标注 当对一个属性使用闭包函数进行赋值时,每当此属性所述的类型被创建实例时,对应的闭包或函数会被调用,而他们的返回值会被作为属性的默认值. ESC: Class SomeCLass{ let someProperty:SomeType={ //给someProperty赋一个默认值 //返回一个与

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

Learn Java for Android Development Second Edition 笔记(六)- Interface

Interface Java里用interface关键字,引入一种没有具体实现的类型. Declaring Interfaces interface一般以大写字母开头,able单词结束,如下例子: interface Drawable { int RED = 1; // For simplicity, integer constants are used. These constants are int GREEN = 2; // not that descriptive, as you wil