第六章、理解linux文件权限

-----------Linux的安全性-------------
  linux安全系统的核心是用户账户,用户对系统上对象的访问权限取决于他们登陆系统时用的账户。
    1、/etc/passwd:Linux系统使用专门/etc/passwd来将用户的登陆名匹配到对应的UID值.root用户账户是Linux系统的管理员,通常分配给它的UID是0.
       Linux系统会为各种各样功能创建不同的用户账户,这些账户不是真的用户,是系统上运行各种服务进程访问资源用的特殊账户(所有运行在后台的服务都需要用一个系统用户账户登陆到Linux系统上)。
       Linux为系统账户预留了500一下的UID值,为普通用户创建账户时,UID一般都是500以上。
    2、/etc/shadow:保存用户密码
    3、添加新的用户工具是useradd:一些发行版本的Linux会把用户和用户组工具放到/usr/sbin/目录下,但是可能不在path路径下,只需要将这个路径加到path路径下就可以了。
       useradd -D:查看Linux系统默认值(表示如果在创建新用户的时候如果不在命令行指定参数的话,useradd就用如下默认值)。例如:
         [root@localhost ~]# useradd -D
         GROUP=100                  //表示新加的用户将会加到GID为100的公共组下
         HOME=/home                 //新用户的HOME目录将会放到/home下
         INACTIVE=-1                //新用户的密码过期后不会被禁用
         EXPIRE=                    //新用户未被设置密码过期
         SHELL=/bin/bash            //新用户账户的bash shell作为默认shell
         SKEL=/etc/skel             //系统会将/etc/skel目录下的内容复制到用户的home目录下
         CREATE_MAIL_SPOOL=yes      //系统为该用户账户在mail目录下创建一个用户接收邮件的文件
         /etc/skel/是管理员创建的一份默认的HOME目录配置,
       useradd -m test :表示创建一个test用户。默认useradd不会自动创建home目录,加上-m的参数就会创建新的home目录。例如:
         [root@localhost ~]# useradd -m test
         [root@localhost ~]# ls -al /home/test
         总用量 12
         drwx------. 2 test test  62 11月  6 18:09 .
         drwxr-xr-x. 3 root root  18 11月  6 18:09 ..
         -rw-r--r--. 1 test test  18 8月   3 2016 .bash_logout
         -rw-r--r--. 1 test test 193 8月   3 2016 .bash_profile
         -rw-r--r--. 1 test test 231 8月   3 2016 .bashrc
       比较有用的useradd参数:
       -c comment:为用户添加备注
       -d home_dir:为用户主目录指定一个目录名字
       -g initial_group:指定用户登陆租的GID或是组名
       -m:创建用户的HOME目录
       -p passwd:为账户指定密码
       -u UID:为账户指定一个唯一的UID
      useradd -D -s /bin/tsch:更改默认的登陆shell
      比较有用的参数:
       -b default_home:更改默认的创建用户HOME目录的位置
       -e expiaration_date:默认创建的新账户过期日期
       -f inaction:更改新用户从密码过期到账户禁用的天数
       -g group:更改默认的组名或是GID
       -s shell:默认的登陆shell
    4、删除用户的工具是userdel.默认情况下,userdel会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该用户的的任何文件。
       如果加上-r参数,会删除该用户的HOME目录和mail目录,其他目录的文件还是存在。
    5、修改用户的工具是usermod:
      -l:用来修改账户的登录名
      -L:用来锁定用户
      -p:用来修改用户密码
      -U:用来解锁用户
    6、修改密码工具passwd或chpasswd:改变自己的密码
-------------------使用Linux组---------------
  Linux用另外一个概念(组),Linux运行一组用户共享资源。组权限允许多个用户共享一组共有的权限来访问系统上的对象,比如文件、目录或是设备。每个组也有一个唯一的GID。
  /etc/group:存放系统上每个组的信息。
  创建新组的工具是groupadd,例如:
    [root@localhost ~]# groupadd shared     //创建shared这个组。
    [root@localhost ~]# useradd -m test1
    [root@localhost ~]# usermod -G shared test1
    [root@localhost ~]# tailf /etc/group
      ssh_keys:x:996:
      dip:x:40:
      tss:x:59:
      sshd:x:74:
      postdrop:x:90:
      postfix:x:89:
      chrony:x:995:
      test:x:1000:
      shared:x:1001:test,test1        //test和test1用户属于shared组
      test1:x:1002:
   修改组工具是groupmod:
   -g:修改已有组的GID
   -n:修改已有租的名字
   例如:[root@localhost ~]# groupmod -n sharing shared
    [root@localhost ~]# tail /etc/group
    ssh_keys:x:996:
    dip:x:40:
    tss:x:59:
    sshd:x:74:
    postdrop:x:90:
    postfix:x:89:
    chrony:x:995:
    test:x:1000:
    test1:x:1002:
    sharing:x:1001:test,test1
    [root@localhost ~]# groupmod -g 1005 sharing
    [root@localhost ~]# tail -3 /etc/group
    test:x:1000:
    test1:x:1002:
    sharing:x:1005:test,test1
------------------理解文件权限---------------------
   命令ls -l的输出中,例如:
   [root@localhost /]# cd dev
   [root@localhost dev]# ls -l
   总用量 0
   crw-rw----. 1 root video    10, 175 11月  3 17:48 agpgart
   crw-------. 1 root root     10, 235 11月  3 17:48 autofs
   drwxr-xr-x. 2 root root         180 11月  3 17:48 block
   drwxr-xr-x. 2 root root          80 11月  3 17:48 bsg
   crw-------. 1 root root     10, 234 11月  3 17:48 btrfs-control
   drwxr-xr-x. 3 root root          60 11月  3 17:48 bus
   第一个字段描述的是文件和目录权限的码:
   -:代表是文件
   d:代表是目录
   l:代表是链接
   c:代表字符型设备
   n:代表网络设备
   之后有三组字符码,标识三重访问权限,分别有对象的属主、属组、系统其他用户的权限:
   r:代表文件可读
   w:代表文件可写
   x:代表未见可执行
   -:表示没有某种权限
   例如倒数第一条记录标识:d表示是一个目录,rwx表示属主的权限是rwx,r-x表示属组的权限是r-x,r-x标识其他用户权限是r-x
  
   umask工具用来显示和设置权限,umask用8进制来标识
   ---:0
   --x:1
   -w-:2
   -wx:3
   r--:4
   r-x:5
   rw-:6
   rwx:7
   例如:
   [root@localhost 小潘的学习]# cd umask命令/
   [root@localhost umask命令]# umask
   0022
   [root@localhost umask命令]# touch file.txt
   [root@localhost umask命令]# ls -l
   总用量 0
   -rw-r--r--. 1 root root 0 11月  6 19:05 file.txt
   [root@localhost umask命令]# umask 026
   [root@localhost umask命令]# touch file1.txt
   [root@localhost umask命令]# ls -l
   总用量 0
   -rw-r-----. 1 root root 0 11月  6 19:06 file1.txt
   -rw-r--r--. 1 root root 0 11月  6 19:05 file.txt
   umadk是一个掩码,创建文件的时候会用全权限减去umask的值,对于文件的全权限是666,对于目录的全权限是777.上面例子中666-026=640.所以创建出来的file1的权限是rw-r-----
------------------------改变安全性设置-----------------
   改变权限:chmod options mode file,直接赋值的是八进制数,例如:
   [root@localhost umask命令]# chmod 666 file1.txt
   [root@localhost umask命令]# ls -l
   总用量 0
   -rw-rw-rw-. 1 root root 0 11月  6 19:06 file1.txt
   -rw-r--r--. 1 root root 0 11月  6 19:05 file.txt
   改变所属关系: chown options owner[.group] file,例如:
   [root@localhost umask命令]# chown test.sharing file1.txt
   [root@localhost umask命令]# ls -l
   总用量 0
   -rw-rw-rw-. 1 test sharing 0 11月  6 19:06 file1.txt
   -rw-r--r--. 1 root root    0 11月  6 19:05 file.txt
--------------------共享文件-----------------------
   Linux为每个文件和目录存储了3个额外的信息位:
   设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。
   设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对于目录来说,目录中创建的新文件会以目录的默认属组作为默认属组。
   粘着位:进程结束后文件还会在内存中。
   0:所有为都清0
   1:粘着位置位
   2:SGID位置位
   3:SGID位和粘着位置位
   4:SUID位置位
   5:SUID为和粘着位置位
   6:SUID和SGID置位
   7:所有位置位
   要创建一个共享目录,使用目录的新文件都沿用目录属组,例如:
    [root@localhost umask命令]# mkdir testdir                //创建目录
    [root@localhost umask命令]# ls -l
    总用量 0
    drwxr-xr-x. 2 root root 6 11月  6 19:42 testdir
    [root@localhost umask命令]# chgrp sharing testdir       //改变目录的组属性,将目录的默认属组改为含有所有需要共享文件用户的组
    [root@localhost umask命令]# ls -l
    总用量 0
    drwxr-xr-x. 2 root sharing 6 11月  6 19:42 testdir
    [root@localhost umask命令]# chmod g+s testdir         //将目录的SGID位置位
    [root@localhost umask命令]# ls -l
    总用量 0
    drwxr-sr-x. 2 root sharing 6 11月  6 19:42 testdir
    [root@localhost umask命令]# umask 002
    [root@localhost umask命令]# cd testdir
    [root@localhost testdir]# touch test.txt
    [root@localhost testdir]# ls -l
    总用量 0
    -rw-rw-r--. 1 root sharing 0 11月  6 19:44 test.txt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值