Linux笔记 用户组管理

一、用户管理


1.用户
- 特性:
    每个用户都有唯一UID。UID=0为root用户;1-500为系统用户,只是用于运行进程,不需要登陆系统;500+为普通用户。不同Linux版本可能有所不同。
    每个用户都有一个家目录。root用户家目录为/root;普通用户家目录为/home/USERNAME。
    每个用户都有自己的邮箱文件。一般文件路径为/var/spool/mail/USERNAME。邮箱文件与家目录均是在用户创建时默认生成的。
    每个用户都属于一个基本组。如果创建用户时没有指定基本组,则默认属于与用户名同名的基本组中。基本组用于用户在创建文件或目录时所属组的归属。
    用户如果不设置密码不允许登陆。
 
 
- 用户管理
    ①用户创建:
            useradd [OPTION] USERNAME
                -u UID    指定用户UID号
                -g GID|GROUPNAME   指定用户GID号/基本组,如不指定,默认创建与用户名同名的组作为其基本组。
                -G GID|GROUPNAME  指定附加组,用户可以在基本组之外添加多个附加组。
                -s SHELL  指定登陆shell,默认为/bin/bash,如果指定为/sbin/nologin,表示非登陆shell,一般用于系统用户。
                -d DIR   指定家目录,如不指定,默认/home创建用户名同名的家目录。
                -r   创建系统账号,不会自动创建家目录和邮箱文件,不需要登陆shell。
 
    ②用户删除:
            userdel -r USERNAME  
                -r   删除家目录和邮箱文件,如果没有加选项,会保留家目录和邮箱文件,对后续会造成影响。
    
    ③用户删除:
            usermod [OPTIONS] USERNAME
                *选项与useradd基本一致
 
    ④切换用户:
            su -l USERNAME
 
 
 
2.用户组管理
- 创建:groupadd GROUPNAME
- 删除:groupdel GROUPNAME
 
 
 
3.用户密码管理
- 对于root用户,可以修改所有用户的密码:
        passwd USERNAME  交互式修改密码,回车后再输入密码
        echo "PASSWORD" | passwd --stdin USERNAME  无交互式修改密码
    
- 对于普通用户,只可以修改自己的密码:
        passwd   交互式修改密码,回车后需先输入旧密码才可进行修改。
 
 
 
4.相关配置文件
    用户:/etc/passwd
        test1:x:501:501::/home/test1:/bin/bash
        用户名:x:UID:GID:用户描述:家目录:登录shell
 
    用户组:/etc/group
        test4:x:1002:
        组名:x:GID:组成员
 
    密码:/etc/shadow
        test2:xxxxxxxx:17233:0:99999:7:::
        用户名:加密密码:各种时间
 
 
 
 
二、权限管理
1.三种用户访问类型:用户访问资源时,进程携带用户信息(UID和GID)。
- 拥有者:用户UID和资源UID一致,则此用户为该资源拥有者。
- 所属组:用户UID和资源UID不一致,进而比较用户GID和资源GID比较,一致则该用户为资源所属组。
- 其他人:用户与资源的UID和GID都不一致。
 
2.基础权限:
 
 
    <1>root:localhost -->ls -l
total 1012
-rw-------. 1 root  root    1382 Mar 30 08:10 anaconda-ks.cfg
-rw-r--r--. 1 root  root    296 Jul 22 03:18 grade.txt
drwxr-xr-x. 9 alice mary    4096 Apr 15 00:43 nginx-1.14.0
-rw-r--r--. 1 root  root 1016272 Apr 17  2018 nginx-1.14.0.tar.gz
-rwxr-xr-x. 1 root  root    202 Jul 14 07:46 test.py
drwxr-xr-x. 9 alice mary    4096 Apr 15 00:43 nginx-1.14.0
    drwxr-xr-x  第一位为文件类型。后面九位为基本权限(每三位分别为拥有者、所属组、其他人)
    alice  创建该文件的用户,即资源所有者。对该资源的权限为rwx
    mary  文件资源所属组。该组的其他用户对此文件的权限为r-x。mary用户组之外的其他用户对此资源的权限为r-x
 
 
- 三种基本权限
    ① r  可读权限
        对于普通文件,r权限可以读取文件内容。cat、vi、more、less等查看命令。
        对于目录,r权限可以查看目录内容。ls命令。
     
    ②w 可写权限
        对于普通文件,w权限可以修改文件内容。vi、sed、nano等编辑命令。
        对于目录,w权限可以修改目录内容,创建删除重命名文件。对文件内容本身的修改与目录的w权限无关。touch、mv、rm等命令。
 
    ③x 可执行权限
        对于普通文件,x权限可以执行文件内容,一般可执行的文件为二进制文件、脚本文件等。./FILE。
        对于目录,x权限指可以进入到目录中。cd命令。
 
 
- 修改权限
    chmod -R MODE FILE 
        -R  表示递归,对目录下面的文件都进行权限修改
        MODE 指定修改的权限,一般有数字和符号两种表示方法。
            数字:775  -->  rwxrwx-wx
                       644  -->  rw- -w- -w-
            符号:【u 用户|g 组|o 其他人|a 所有】【+ | - | = 】【r | w | x 】  对不同的对象增加/减少/赋予不同的权限
            
            
- 修改资源属者属组
    chown [-R] USER:GROUP FILE 
        chown USER FILE  只改拥有者
        chown :GROUP FILE  只改所属组
        chown [-R] GROUP FILE 递归,对目录中所有文件进行修改。
 
 
3.默认权限:用户创建目录/文件时,实际默认权限为初始权限 - umask权限
        初始权限:文件初始权限为666,目录初始权限为777.
        umask权限:umask命令可以查看设置的umask值。默认为0022。第一位为特殊权限,暂且不提。后三位即控制稳健或目录在创建时的默认权限。
        计算方式:
                文件:初始权限(666)- umask权限(022)=实际权限(644)。注意不要用数字直接相减,如666(rw-rw-rw-)- 033(----wx-wx)= 633(rw-r--r--)
                目录:初始权限(777) - umask(022) = 实际权限(755)。同样不可以用数字直接相减。
 
    
4.特殊权限
- suid  set-UID,让用户临时取得文件拥有者权限。只能对可执行文件设置。如passwd命令,如果不设置suid权限,则普通非root用户对/etc/passwd无拥有者(root)权限,无法更改本地用户密码,加上suid权限才可以。MODE为u + s。
 
- sgit  set-GID,可以对文件或目录进行修改。对于可执行文件,可以让用户临时取得文件所属组的权限。对于目录,目录A下创建的文件的所属组为目录A的所属组。一般用于创建共享文件。即先创建一个含有sgit权限的目录,之后不同用户在此目录创建的文件可以进行共享。MODE为g + s。
 
- sbit  sticky-Bit,粘贴位,只可以对目录进行修改,目录下的用户不可以删除目录所属组其他用户的文件。MODE为o + t。
 
- umask 0022   第一位指特殊权限
    0 --> 000 三个特殊权限都无
    1 --> 001 只含有sbit权限
    2 --> 010 只含有sgit权限
    4 --> 100 只含有suid权限
    以此类推...
 
 
三、配置文件读取过程【拓展】
1.登录过程:/etc/profile --> /etc/profile.d/* -->  ~/.bash_profile  --> ~/.bashrc  --> /etc/bashrc
2.非登录过程:~/.bashrc  --> /etc/bashrc