任何完整的系统都应该具备有某种形式的安全性。必须用过某种机制来保护文件不被未授权的用户查看或修改;Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问。

1、Linux安全性

  Linux系统的安全核心是用户账户。访问Linux系统的每个人都拥有自己的分配的、唯一的账户。基于账户来进行安全处理。使用用户ID(UID)来跟踪用户权限。

  1.1、/etc/passwd文件

    存放用户名的文件--/etc/passwd;

    首先看到的是根用户,它的UID始终未0。它被称为系统账户。通常情况下,每个用户都是通过普通用户登录到Linux操作系统,普通用户不能直接获取对整个系统的访问权限。这样就保证了系统的安全性;

    500以下的UID保留作为系统账户。一些服务甚至特定的UID才能使用这些UID号。普通用户的UID一般为500开始往后。

    /etc/passwd的内容如下:

      1、登录用户名

      2、用户的密码【x表示密码替代符,真正的密码存放于/etc/shadow中】

      3、用户账户的ID号

      4、用户账户的数值用户组ID

      5、用户账户的文本描述(注释字段)

      6、用户的HOME目录位置

      7、用户的默认shell

    需要添加删除用户的话,可以直接在该文件下面进行操作;

  1.2、/etc/shadow文件

    /etc/shadow文件是提供了密码存放的地方。只有根用户才能访问这个文件。这比/etc/passwd文件更加安全;

 

    与/etc/shadow文件记录中有9个字段:

      1、与/etc/passwd文件中的登录名对应的登录名;

      2、经过加密的密码

      3、密码上次修改时间距离1970年1月1日的天数;

      4、距能够修改密码时的最少天数

      5、距必须修改密码是的天数

      6、距离密码逾期并警告用户修改密码的天数

      7、从密码逾期开始到账户被禁用的天数

      8、用户账户已被禁用的天数(存储为自1970年1月1日开始的天数)

      9、保留供未来使用的字段

  1.3、添加新的用户

    useradd用来添加用户。

    useradd -D  #查看Linux系统使用的系统默认值

      INACTIVE=-1  #密码逾期不被停用

      SKEL=/etc/skel  #系统会将/etc/skel目录中的内容复制到用户的HOME目录

      CREATE_MAIL_SPOOL=yes  #系统将在邮件目录中的内容复制到用户的HOME目录中;

    useradd常用参数:

      -c  #添加注释

      -d  #指定家目录名称

      -e  #指定账户逾期的日期,格式为YYYY-MM-DD

      -f  #表示账户逾期后,账户被禁用需要的天数。值0表示密码逾期时立即禁止账户;值为-1表示禁止此功能

      -g  #指定用户登录组的用户组名称或GID

      -G  #指定用户属于的一个或过个补充的用户组

      -k  #将/etc/skel目录的内容复制到用户HOME目录

      -m  #创建用户的HOME目录,与-k一起使用

      -M  #不创建家目录

      -n  #使用与用户登录名相同名称的创建一个新的用户组

      -r  #创建一个系统账户

      -p  #为用户指定一个默认密码

      -s  #指定默认登录shell

      -u  #指定账户的唯一的UID

    useradd还可以更改默认参数值

      -b  #修改默认的HOME目录被创建的位置

      -e  #修改新账户逾期的时间

      -f  #修改从密码逾期到账户被禁用的天数

      -g  #修改默认使用的用户组名称或GID

      -s  #修改默认登录的shell

      例如:useradd -D -s /bin/tsch

  1.4、删除用户

    userdel命令,用来删除用户。

    例如:userdel -r test  #-r带着默认家目录一块删

  1.5、修改用户

    常用的修改工具:

    usermod  编辑用户的账户字段,以及制定主要和次要的用户组成员

      -l  #用于修改用户账户的登录名

      -L  #用于锁定账户,使用户无法登录

      -p  #用于修改账户的密码

      -U  #用于接触账户锁定,使用户能够登录

    passwd  修改已有的用户密码

      passwd修改自身密码,passwd test修改test用户密码;

      -e   #选项用于前置用户下次登录时修改密码;

    chpasswd  读取登录名和密码对文件,并更新密码

      用于大量修改用户密码,从标准输入读取登录名和密码对应的列表(由冒号分开) 

    chage  修改密码的逾期时间

    chfn    修改账户的注释信息

      将信息存储于/etc/passwd的注释字段中。

      finger 命令可以查找关于Linux系统上的用户信息;

    chsh    修改用户账户的默认shell

      chsh -s /bin/csh test  #test用户的shell程序改为/bin/csh

2、使用Linux用户组

  在个人账户控制上,当个用户可以满足,在资源共享方面则有所欠缺。为此我们使用用户组的概念来实现; 

  每个用户组都有一个唯一的GID。与UDI类似是系统上独一无二的数值。

  2.1、/etc/group文件

    /etc/group文件用来存放系统中用户组的信息;

    与UID类似,500一下的GID为系统用户的用户组信息,而500以及500以上的才是普通用户的用户组信息;

      1、用户组名称

      2、用户组密码

      3、GID

      4、属于用户组的用户账户列表

    usermod 命令可以帮助我们将用户添加到特定的用户组中;

  2.2、创建新的用户组

    例如:groupadd shared

          tail -1 /etc/group

    这时候是没有用户属于这个组的,我们需要使用usermod命令来将用户添加到该组;

         usermod -G shared rich

         usermod -G shared test

         tail -1 /etc/group  #此时,用户rich和test用户就添加到了shared组中;

  2.3、修改用户组

    groupmod 命令可用来修改组的相关信息;

    例如:groupmod -n sharing shared  #-n将shared名字改为sharing;

      -g  #可以修改用户组的GID

3、解码文件权限

  了解 ll 查看到的文件权限

  3.1、使用文件权限符号

    rwx-读写执行,同时可以用8进制数来表示

  3.2、默认文件权限

    遮罩码--umask,定义了文件的默认权限;

    文件权限可以使用代码来表示,如下图:

    文件的完整权限是666,而目录的完整权限是777;因此在实例中,文件初始权限在去掉umask后为644,而目录的为755;

    通过umask命令可以修改默认遮罩码,但是不建议这么做;

4、修改安全设置

  4.1、修改权限

    chmod用来修改文件权限,格式如下:

    chmod options mode file

    例如:chmod 760 newfile

    也可以使用符号的模式指定文件的权限:

    [ugoa...] [+-=] [rwxXstugo...]

      u  表示用户

      g  表示用户组

      o  表示其他

      a  表示上述所有

      +  添加对应权限

      -  去掉对应权限

      =  为权限赋值

      x  用于指定执行权限

      s  用于设置正在执行的UID或者GID

      t  用于保存程序文本

      u  用于将权限设置为所有者的权限

      g  用于将权限设置为用户组的权限

      o  用于将权限设置为其他人的权限

    例如:

  4.2、修改所有者

    chown可以方便的修改文件所有者;

    chown options owner [.group] file

    例如:chown dan newfile

         chown .dan newfile

         chown dan. newfile

       chown dan.dan newfile

    也可以使用 chgrp 直接来修改用户组即可;

    例如:chgrp shared newfile  #只修改用户组,类似与chown .dan newfile

5、共享文件

  有时候,我们需要将文件共享给所有的用户,我们需要临时调用文件所有者权限,这时候,Linux系统为我们提供了三个额外的信息为,它们分别是:

  1、set user id (SUID)  当文件由用户执行时,程序将在文件所有者的权限下运行

  2、set group id (SGID)  对于文件,程序将在文件用户组的权限下运行,对于目录,目录中创建的所有新文件使用目录用户组作为默认用户组

  3、粘着位  进程结束后,文件仍然保留(粘着)在内存中

  chmod命令可以修改设置这三位的信息,权限如下图:

理解Linux文件权限的更多相关文章

  1. Linux命令行–理解Linux文件权限(转)

    6.1.1 /etc/passwd文件 /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 登录用户名 用户密码 用户账户的UID 用户账户 ...

  2. 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

    Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件. 用户权限通过创建用户时分配的用户ID(UID)来跟踪的.每个用户有唯一的ID,但是登录时用的不是UID, ...

  3. 通俗易懂理解Linux文件权限修改chmod命令

    chmod g+w filename 给同组用户增加filename文件的写权限 chmod go+rw filename 给同组和组外用户增加写和读的权限 chmod g-w filename 给同 ...

  4. 个人理解Linux文件权限--以前记录的,根据鸟哥的第二版去解释的

    ps:鸟哥的第三版私房菜印刷的有问题 上面的意思:d指的是目录 档案拥有者权限:r可读w可写,x,可运行, 同群组的权限:r可读,这段有个-号,表示不可写,x表示可运行 其他非本群组的权限:r可读,这 ...

  5. 对Linux文件权限的理解

    755,775,777,ugoa 等分别代表什么含义?这些数字是如何得到的? 1.常用的linux文件权限: 444 -r--r--r-- 600 -rw------- 644 -rw-r--r-- ...

  6. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  7. Linux文件权限与属性详解 之 一般权限

    目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...

  8. Linux文件权限设置

    基本概念 https://linux.cn/article-7418-1.html#3_8880 用户管理 文件权限设置 -添加用户账户08% -理解 /etc/passwd 中的内容12% -理解 ...

  9. 说说Linux文件权限那些事儿

    文件全部权 显示文件的全部权 更改文件的全部权 文件的权限 改动文件的权限 用符号表示法改动 用数字表示法改动 使用umask指定默认的文件权限 參考文献 首先我们要知道Linux的标准文件权限和安全 ...

随机推荐

  1. Python全栈之路----常用模块----subprocess模块

    我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python ...

  2. 输入框VS软键盘

    最近在做一个h5的时候遇到的问题 我们都知道当页面上的有输入框被选中了,这个时候就回调出键盘用户可以输入.但是安卓手机在弹出键盘时页面的输入框也会被覆盖住: 以下为暂时的解决办法:(以下方法同时解决了 ...

  3. 如何使用 Pylint 来规范 Python 代码风格

    如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/   Pylint 是什么 ...

  4. CrawlSpider模板

    crawlSpider 创建CrawlSpider模板 scrapy genspider -t crawl <爬虫名字> <域名> 模板代码示例: # -*- coding: ...

  5. 普通Linux用户1分钟上手vi编辑器

    *导读:普通用户只要花1分钟看第二部分即可.高级用户请忽略本文* 目录 1. 编辑器之战 2. vi的使用 2.1 vi的3个模式 2.2 vi的3个模式切换 2.3 vi最基本的命令 2.4 vi的 ...

  6. centos7通过yum安装mysql8

    1.检查是否安装mariadb rpm -qa | grep mariadb 若有会显示 mariadb-libs-5.5.56-2.el7.x86_64 2.卸载mariadb rpm -e --n ...

  7. 非常完善的两个微服务框架比较(SpringCloud与Dubbo)

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值. 虽然微服务架构没有公认的技术标准和规范或者草案,但 ...

  8. 基于Linux-3.9.4的mykernel实验环境的极简内核分析

    382 + 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验环境 win10 -> VMware -> Ubuntu1 ...

  9. Web 安全之 XSS 攻击与防御

    前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...

  10. cordova文件系统插件的使用方法:cordova-plugin-file

    提供对设备上的文件进行读取和写入的功能支持. 1. 添加插件:cordova plugin add cordova-plugin-file 2. 调用方法: