一、用户管理
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