zoukankan      html  css  js  c++  java
  • Linux账号和权限管理

    一. 用户和组的管理  - Linux中用户种类

    种类 特点
    root 是管理员,拥有至高无上的权限,不受限制,UID为0
    普通用户 管理员创建的用户,受权限限制,UID一般从500开始,可以登录系统
    程序用户 安装应用程序,系统创建的,一般UID小于500,一般不可以登录系统,shell一般是/sbin/nologin
    • Linux中组的种类:
    种类 特点
    基本组(私有组) 一个用户只有一个私有组,当用户创建目录和文件的时候,目录和文件默认的属组是基本组
    附加组(公共组) 用户可以有多个附加组
    1. 用户的管理:
    /etc/passwd   #存放了用户的信息
    /etc/shadow   #存放了用户的密码信息等
    • 添加用户账号

      useradd命令

    useradd  [选项]...  用户名   
        -u:指定 UID 标记号
        -d:指定宿主目录,缺省为 /home/用户名
        -e:指定帐号失效时间
        -g:指定用户的基本组名(或UID号)
        -G:指定用户的附加组名(或GID号)
        -M:不为用户建立并初始化宿主目录
        -s:指定用户的登录Shell
    • 设置/更改用户口令

      passwd命令

    passwd  [选项]...  用户名
        -d:清空用户的密码,使之无需密码即可登录
        -l:锁定用户帐号
        -S:查看用户帐号的状态(是否被锁定) 
        -u:解锁用户帐号
    • 修改用户账号的属性  usermod命令
    usermod  [选项]...  用户名
        -l:更改用户帐号的登录名称
        -L:锁定用户账户
        -U:解锁用户账户
        以下选项与useradd命令中的含义相同
        -u、-d、-e、-g、-G、-s
    • 删除用户账号  userdel命令
    userdel  [-r]  用户名  #添加 -r 选项时,表示连用户的宿主目录一并删除
    • 用户第一次登陆必须更改密码
    chage  -d  0  用户名   

    2.组的管理:

    /etc/group   #保存组账号基本信息
    /etc/gshadow  #保存组账号的加密密码信息,很少用
    • 添加组账号

    groupadd命令

    groupadd  [-g GID]  组帐号名
    • 添加删除组成员  gpasswd命令  用途:设置组帐号密码(极少用)、添加/删除组成员
    gpasswd  [选项]...  组帐号名
        -a:向组内添加一个用户
        -d:从组内删除一个用户成员
        -M:定义组成员列表,以逗号分隔
    • 删除组账号  groupdel命令
    groupdel  组帐号名
    • 查询账号信息:

    id命令

        用途:查询用户身份标识
        格式:id  [用户名]

    groups命令

        用途:查询用户所属的组
        格式:groups  [用户名]

    finger命令

        用途:查询用户帐号的详细信息
        格式:finger  [用户名]

    users、w 、who命令

        用途:查询已登录到主机的用户信息

    二. 文件和目录的属性:属主、属组、权限

    • 文件/目录的权限和归属
    A.  访问权限
            读取r:允许查看文件内容、显示目录列表
            写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
            可执行x:允许运行程序、切换目录
    B.  归属(所有权)
            属主:拥有该文件或目录的用户帐号
            属组:拥有该文件或目录的组帐号
    • ls -l 执行命令后得结果分析
    第一个字符:表示文件或目录的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件),减号“-”(普通文件)、字母“l”(链接文件)等。
    第2-4个字符:表示属主的权限
    第5-7个字符:表示属组的权限
    第8-10个字符:表示其它人的权限
    • Linux中基本权限分为r(4)、w(2)、x(1)
    查看文件/目录的权限和归属
    ---------------------------------------------------------------------------------
    | 权限项 |  读  |   写  |  执行 |   读  |   写  |  执行 |   读  |   写  |  执行 |
    ---------------------------------------------------------------------------------
    |字符表示|  r   |   w   |   x   |   r   |   w   |   x   |   r   |   w   |   x   |
    ---------------------------------------------------------------------------------
    |数字表示|  4   |   2   |   1   |   4   |   2   |   1   |   4   |   2   |   1   |
    ---------------------------------------------------------------------------------
    |权限分配|  文件所有者   |   文件所属组   |   其他用户    |%2
    
    • 设置文件和目录的权限

        chmod命令

             格式1:chmod   [ugoa]  [+-=] [rwx]  文件或目录... 
    
             格式2:chmod nnn 文件或目录...
    
             常用命令选项
    
             -R:递归修改指定目录下所有子项的全新
    • 设置文件和目录的归属

    chown命令

            格式:chown  属主  文件或目录

            chown  :属组  文件或目录

            chown  属主:属组  文件或目录

            常用命令选项

            -R:递归修改指定目录下所有文件、子目录的归属

     

    • 用户账号的初始配置文件

      文件来源

          新建用户帐号时,从/etc/skel 目录中复制而来

          主要的用户初始配置文件

          ~/.bash_profile:用户每次登录时执行

          ~/.bashrc:每次进入新的Bash环境时执行

          ~/.bash_logout:用户每次退出登录时执行

    A.Umask  可以设置新建文件、目录时的默认权限,(默认权限 = 现有默认权限 - 权限掩码)

    Umask [权限掩码]

     

    B.附加权限

    a)Set位权限:给可执行的程序或脚本文件设置。 SUID----4, SGID----2
    
    执行文件设置了set后,任何用户在执行该文件时,获得该文件属主、属组账号对应的身份。
    
    比如普通用户无法修改/etc/shadow文件,但是却可以修改自己的密码,因为/usr/bin/passwd设置了set权限。
    
    ll  /usr/bin/passwd
    
    例: cp /bin/mkdir  /tmp/mymkdir
    
         Chmod u+s /tmp/mymkdir
    
         ll /tmp/mkdir
    
         切换到其他用户,/tmp/mymkdir  创建文件(宿主目录下),发现属主为root。而mkdir属主为自己
    
    b)粘滞位:用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限以后,即便用户对该目录写入权限,也不能删除该目录中其他用户的文件数据。例 /tmp  , /var/tmp
    
    例: 在/tmp中,使用用户aa创建文件,使用用户bb删除不了
    <pre name="code" class="html">[root@localhost ~]# su - vanko
    [vanko@localhost ~]$ cd /tmp/
    [vanko@localhost tmp]$ mkdir vanko
    [vanko@localhost tmp]$ ls -ltr
    total 4
    drwxrwxr-x 2 vanko vanko 4096 Jan  8 10:09 vanko
    [root@localhost ~]# su - xu
    [xu@localhost ~]$ cd /tmp
    [xu@localhost tmp]$ mkdir xu
    [xu@localhost tmp]$ ls -ltr 
    total 8
    drwxrwxr-x 2 vanko vanko 4096 Jan  8 10:09 vanko
    drwxrwxr-x 2 xu    xu    4096 Jan  8 10:09 xu
    [xu@localhost tmp]$ rm -rf vanko
    rm: cannot remove `vanko': Operation not permitted
    [xu@localhost tmp]$ rm -rf xu
  • 相关阅读:
    ThinkPHP 实现数据库事务回滚示例代码
    Java数据结构和算法
    Java数据结构和算法
    Java数据结构和算法
    git push每次提交都要输入用户名的解决方案
    Java数据结构与算法
    Java数据结构和算法
    Java数据结构和算法
    类和接口
    git如何忽略文件
  • 原文地址:https://www.cnblogs.com/webnote/p/5732929.html
Copyright © 2011-2022 走看看