理解Linux文件权限

来源:互联网 发布:奥地利 知乎 编辑:程序博客网 时间:2024/06/08 05:20

Linux系统会为各种各样的功能创建不同的账户,而这些账户并不是真的用户。这些账户被称作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。

一般,系统账户的UID值都小于500.

Linux的安全性

1. /etc/passwd文件

这里写图片描述
passwd文件里的密码字段值都被设置成了x,这是考虑到了密码的安全性。真正的密码我们会保存在/etc/shadow文件中。

2. /etc/shadow文件

该文件能对Linux系统如何管理密码有更多的控制。只有root用户才能访问该文件,这让它比/etc/passwd文件要安全的多。
这里写图片描述

这里写图片描述

3. 添加新用户

useradd参数:           -D: 该参数显示了在创建新用户时如果你不在命令行指定的话,useradd命令将使用的默认值。(注意:可以在-D后面再加参数和对应的值,来修改系统默认的新用户值)           -m: 创建用户的HOME目录           -d home_dir: 为主目录指定一个名字(如果不想使用默认主目录名的话)           -g: 指定用户登录组的GID或组名           -p: 指定用户账户的密码           -u: 为账户指定一个唯一的UID

4. 删除用户

userdel默认情况下,userdel命令只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。加上**-r**参数:该命令会删除用户的HOME目录以及mail目录;>useradd -r username

5. 修改用户账户信息

  • usermod:可以用来修改/etc/passwd文件中的大部分字段,该命令后面加上对应字段的参数就行。
    大部分参数和useradd的参数一样。还有一些实用的额外参数:
    -l :修改用户账户的登录名
    -L:用来锁定账户,这样用户就无法登录了
    -U:用来解除锁定,用户就可以登录了
    -p:修改账户的密码
  • passwd:修改自己的密码
  • chpasswd:如果需要为系统中的大量用户来修改密码,可使用该命令。该命令能从标准输入自动读取登录名和密码度对(由冒号分隔)列表,给密码加密,然后为用户账户设置,当然也可以用重定向命令来将含有userid:passwd对的文件重定向给命令:

    chpasswd < users.txt

  • chsh、chfn和chage

    chsh -s /bin/csh test #修改test用户的登录shell,注意-s后面必须跟shell的全路径名
    chfn test #该命令会将Unix finger命令用到的信息存进/etc/passwd的备注字段中
    chage #用来帮助管理用户帐号的有效期

6. 使用Linux组

  • /etc/group文件
    这里写图片描述
    使用usermode -G命令:添加用户到该组:# /usr/sbin/usermod -G groupName userName
    注意如果使用:usermode -g命令:则指定的组名会替换掉该账户的默认组(即: /etc/passwd文件中该用户的GID会更新为指定的组名的GID)
  • 修改组(groupmod)
    修改已有组的GID(-g参数)
    修改已有组的组名(-n参数):groupmod -n newGName oldGName

7. 文件权限

  • 默认的文件权限
    在Linux系统中新建一个文件夹或者文件时,会有一个默认的权限,那这个默认的权限是怎么来的呢?
    是由umask决定的。
    umask命令:可用来设置用户创建文件和目录的默认权限。# umask 026 //将umask的值设置为026
    默认权限 = 全权限的值 - umask的值

      a. 对于文件:全权限值=666, 所以文件默认的权限值为644(666-022)  b. 对于文件夹:全权限值=777,所以文件夹默认的权限值为755(777-022) 

    这里写图片描述

8. 更改文件安全性设置

只有root用户才能改变文件的属主。任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员。

  • 改变文件(夹)权限
    chmod options mode file

    mode参数有两种方式:
    1). 八进制模式

      [root@imss elsie]# ll  total 0  -r-xr-xr-x 1 root root 0 Aug 12 20:35 newfile    //555  [root@imss elsie]# chmod 644 newfile  [root@imss elsie]# ll  total 0  -rw-r--r-- 1 root root 0 Aug 12 20:35 newfile    //644```

    2). 符号模式
    格式:[ugoa…] [+-=] [rwxXstugo…]

       [root@imss elsie]# ll   total 4   drwxr--r-- 2 root root 4096 Aug 12 21:10 Folder   -rwxr--r-- 1 root root    0 Aug 12 20:35 newfile      //744   [root@imss elsie]# chmod g+wx newfile     //为对象的属组添加 [写、执行] 权限   [root@imss elsie]# ll   total 4   drwxr--r-- 2 root root 4096 Aug 12 21:10 Folder   -rwxrwxr-- 1 root root    0 Aug 12 20:35 newfile      //774 options参数:可为chmod提供另外一些功能。例如: -R参数:可以让权限的改变递归地作用到文件和子目录。
  • 改变所属关系

    1). chown: 改变文件的属主(也可以用来改变文件的属组)    格式:chown options owner[.group] file    options:     -R: 递归地改变子目录和文件的所属关系。    -h: 可以改变该文件的所有符号链接文件的所属关系。    # chown newOwner Filename   //其中, newOwner 可以是 [登录名 或者 UID]    # chown dan.shared  Filename  //将文件的属主改为 dan, 属组改为 shared    # chown .shared Filename        //将文件属组改为shared2). chgrp: 改变文件的默认属主。    # chgrp shared Filename         //将文件的属组改为shared 

9. 共享文件

可以通过设置组ID位来创建共享目录。Linux为每个目录和文件存储了3个额外的信息位。
  • 设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行
  • 设置组ID(SGID):For 文件,程序会以文件属组的权限运行;For 目录,目录中创建的新文件会以目录的默认属组作为默认属组。
  • 粘着位:进程结束后文件还会在内存中

    可以通过chmod命令来设置这些信息位。
    这里写图片描述

原创粉丝点击