一、 linux用户基础
1. 基础概念
每个用户拥有一个UserID,操作系统实际上使用的是用户id,而非用户名
每一个用户属于一个主组,属于一个或多个附属组
每一个组拥有一个GroupID
每一个进程以一个用户身份运行,并受该用户可访问的资源限制
每一个可登陆用户拥有一个指定的shell
用户id限制在60000以下,分为3种:
-root用户 ID为0的用户
-系统用户 ID为1-499 #没有shell,专门为web服务、打印服务等服务进行使用
-普通用户 ID在500以上
系统中的文件都有一个所属用户及所属组
使用id命令可查看当前用户的信息
passwd可修改当前用户密码
/etc/passwd -用户信息保存文件
!! 表示未设置
mysql : x : 27 : 27 : MySQL Server:/var/lib/mysql:/bin/bash
用户名 : 用户密码 :userid:groupid: 描述信息 : 家目录 :用户登录shell
/bin/nologin: 系统用户,没有shell
/bin/false: 返回假,没有shell
/etc/shadow -保存用户密码(加密的)
/etc/group -保存组信息
whoami -显示当前用户
who -显示有哪些用户已登录系统
w -显示有哪些用户已登录并且在干什么
2. 创建一个用户:
useradd wjb
操作流程:
1. 在/etc/passwd中添加用户信息
2. 如果使用passwd创建密码,则将密码加密保存在/etc/shadow中
3. 为用户建立一个新的家目录 wjb
4. 将/etc/skel文件夹中的文件复制到用户的家目录中
如在/etc/skel中新建一个通用配置文件,新建用户时该文件会复制到新建用户的家目录中
5. 建立一个与用户名相同的组,新建用户默认属于这个同名组
-d 家目录
-s 登录shell
-u userid
-g 主组
-G 附属组,最多31个,用,分开
useradd -G wjb linux 新增用户linux并规定附属组为wjb
3. 修改用户信息:
usermod 参数 username
-l 新用户名
-u 新userid
-d 新用户家目录
-g 用户所属主组
-G 用户所属附属组
-L 锁定用户使其不能登录
-U 解除锁定
4. 删除用户
userdel wjb 保留用户家目录
userdel -r wjb 不保留用户家目录
5. 组:
每个组都有一个组id
组信息保存在/etc/group中
每一个用户拥有一个主组,最多有31个附属组
- 组的创建
groupadd group 创建组group
- 组的修改
groupmod -n newname oldname 修改组名
groupmod -g newGid oldGid 修改组id
- 删除组
groupdel group 删除组group
二、 linux权限机制
1. 修改文件所属用户、组
- chown 用来修改文件的所属用户
```
chown wjb linux.txt
-R 递归修改目录下所有文件的所属用户
```
- chgrp 用来修改文件的所属组
```
chgrp wjb linux.txt
-R 递归修改目录下所有文件的所属组
```
2. 修改权限命令 chmod
- u、g、o分别代表用户,组,其他
- a可以代指全部
- +、-代表加入或删除对应权限
r、w、x代表三种权限
模式示例
- chmod u+rw wjb.txt
- chmod g-x wjb.txt
- chmod go+x wjb.txt
- chmod a-x wjb.txt
以数字方式修改权限
- r=4,w=2,x=1
- rw- = 6,r-x = 5,rwx = 7
- chmod 760 wjb.txt
三、Linux扩展权限
- 每一个终端都有一个umask属性,来确定新文件、文件夹的默认权限
- umask使用数字权限方式表示,如:022(实际是4位)
- 目录的默认权限是:777-umask = 755
- 文件的默认权限是:666-umask = 644
- 一般,普通用户的默认umask是002,root用户的默认权限是022
- umask可查看,设置umask值
三个特殊权限
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
suid | 以文件的所属用户身份执行,而非执行文件的用户 | 无 |
sgid | 以文件的所属组身份执行 | 在该目录中创建的任意新文件的所属组与该目录的所属组系统 |
suid | 无 | 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件 |
设置特殊权限
设置suid
chmod u+s wjb.txt
设置sgid
chmod g+s wjb.txt
设置sticky
chmod o+t wjb.txt
与普通权限一样,特殊权限也可以用数字方式表示
SUID = 4 SGID = 2 Sticky = 1 所以,可以通过以下命令设置 chmod 6755 wjb.txt chmod 4666 wjb.txt