Linux
1 用户管理
Linux系统是一个支持多用户管理的操作系统,多个用户可以同时管理操作系统。
1.1 用户分类
超级管理员用户 root uid=0 属于最高级的存在,几乎不受任何限制
普通用户 uid=1000+ 只在家目录中不受限制,其它目录中默认只能查看
虚拟用户 nobody uid=1~999 没有家目录,不能登录系统,用于管理系统服务进程
1.2 用户相关的文件和目录
文件
/etc/passwd --- 记录所有用户信息
/etc/shadow --- 记录所有用户密码信息,其中密码信息是密文的
/etc/group --- 记录所有用户组信息
/etc/gshadow --- 记录所有用户组密码信息
目录
/etc/skel/ --- 普通用户家目录的样板房
cat /etc/passwd
用户名:uid:组id:用户介绍别名:/用户家目录:是否能登录
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
test01:x:1000:1000:test01:/home/test01:/bin/bash
1.3 用户管理相关命令
useradd --- 创建新用户
-u --- 创建用户时设置id
-M --- 不创建家目录
-s --- 设置用户登录系统方式,即是否能登陆系统 /bin/bash /sbin/nologin
-g --- 设置用户所属主要组
-G --- 设置用户所属附属组
-c --- 给用户添加注释信息
eg1:创建一个用户,uid为666,所属主要组是oldboy,附属组是oldgirl,用户名为pyuser1。
1. 判断用户是否存在
id pyuser1
2. 新建用户
useradd -u 666 -g oldboy -G oldgirl pyuser1
eg2:创建一个虚拟用户,uid为888,用户名为pyuser2。
1. 判断用户是否存在
grep 888 /etc/passwd
2. 新建用户,虚拟用户不能有家目录,不能登陆系统
useradd -u 888 -M -s /sbin/nologin pyuser2 -c 虚拟用户
usermod --- 修改用户信息
-u --- 修改用户id
-s --- 修改用户登录系统的方式 /bin/bash /sbin/nologin
-g --- 修改用户所属主要组
-G --- 修改用户所属附属组
-c --- 修改注释信息
userdel --- 删除用户
-r --- 将用户所有信息彻底删除
groupadd --- 创建用户组
groupdel --- 删除用户组
passwd --- 设置或修改用户密码信息
交互方式设置密码:passwd oldboy
免交互方式设置密码:echo 123456|passwd --stdin oldboy
chown --- 修改属主和属组
-R --- 以递归的方式修改目录及其子目录下所有数据的属主和属组信息
eg01:修改目录或文件的属主和属组信息
chown oldboy.oldboy 目录名/文件名
.或:前面为属主信息,后面为属组信息。
eg02:修改目录内所有数据的属主和属组信息
chown -R oldboy.oldboy 目录名
id --- 查看用户属组和id
su --- 切换用户
su - 用户名
2 系统权限设置
2.1 权限介绍
- 对于数据文件:
r:可以查看文件
w:可以编辑文件
x:可以运行脚本文件
对于普通用户,文件的读权限r是最重要的,其它权限如果想正常使用,必须结合读权限r进行设置:rw / rx;
对于root用户,只需要设置文件的执行权限x,其它权限的有无不影响查看/编辑/执行文件。
- 对于目录
r:可以查看目录下的文件和子目录
w:可以在目录中进行创建、删除、重命名操作
x:是否可以切换进入这个目录
对于普通用户,访问权限x是最重要的,其它权限如果想正常使用,必须结合访问权限x进行设置:rx / wx;
对于root用户,即使没有任何权限,也可以进行操作。
2.2 权限设置命令使用
给指定用户设置权限
chmod u+/-/=r|w|x --- 给属主用户添加/删除/设置指定权限
chmod g+/-/=r|w|x --- 给属组用户添加/删除/设置指定权限
chmod o+/-/=r|w|x --- 给其他用户添加/删除/设置指定权限
实现批量全局设置权限
chmod a+/-/=r|w|x --- 对属主、属组、其他用户统一设置权限
chmod 750 目录或文件名 --- 更灵活地设置目录或文件权限,属主7、属组5、其他用户0
以递归方式对目录下所有权限进行设置
chmod -R 750 目录名
2.3 系统权限计算方式
文件
666 - umask数值 = 文件权限
666 - 022 = 644(文件默认权限)
666 - 033 = 633,对于奇数,对应奇数位需要加1
= 6(3+1)(3+1) = 644
目录
777 - umask数值 = 目录权限
777 - 022 = 755(目录默认权限)
777 - 033 = 744
umask数值是来自系统配置文件。
cat -n /etc/profile
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002
61 else
62 umask 022
63 fi
2.4 系统用户提权操作
提权操作可以让指定用户具有root用户的部分能力。
提权操作
- 编写用户提权配置文件
visudo
oldboy ALL=(ALL) /bin/cat /etc/shadow --- 对指定命令进行提权配置
oldboy ALL=(ALL) /bin/cat /etc/shadow, /usr/sbin/useradd --- 对多个命令进行提权配置
oldboy ALL=(ALL) /bin/*, /usr/sbin/*, !/user/sbin/userdel --- 使用感叹号!对指定权限userdel进行回收
oldboy ALL=(ALL) NOPASSWD: /bin/*, /usr/sbin/* --- 进行免密码提权操作
vim|vi 快捷操作
gg --- 将光标移动到文件第一行
G --- 将光标移动到文件最后一行
66gg/66G --- 将光标快速移动到指定行
0|^ --- 将光标快速移动到所在行的行首
$ --- 将光标快速移动到所在行的行尾
yy --- 复制指定行内容 nyy 复制多行
p --- 粘贴指定行内容 np 粘贴多行
dd --- 删除指定行内容 ndd 删除多行
- 检查是否提权成功
sudo -l
- 进行提权操作测试
sudo cat /etc/shadow
sudo表示以提权的方式执行后面的命令。
2.5 系统特殊权限
问:系统中有哪些权限?
答:系统总共有12个权限位,分别对应 r w x setuid setgid 粘滞位。
- setuid
让普通用户可以像命令文件的属主用户那样去操作命令。
chmod u+s(2) 命令文件
chmod u+s /bin/cat
ll /bin/cat
-rwsr-xr-x. 1 root root 54080 Apr 11 2018 /bin/cat
- setgid
让普通用户可以像命令文件的属组用户那样去操作命令。
chmod g+s(2) 命令文件
- 粘滞位
粘滞位用于创建共享目录,并且共享目录中数据只能被数据属主用户进行管理,其他用户只能查看。
chmod o+t /dev_share/
ll /dev_share/ -d
drwxrwxrwt 2 root root 43 Aug 12 11:01 /dev_share/
3 总结
当用户在系统中的操作受到制约,可以从以下几个方面进行调整。
- 可以切换用户 su - root
- 可以修改文件或目录的权限 chmod chown
- 可以对用户进行提权操作 sudo
- 可以设置命令特殊权限 setuid 粘滞位
- 需要关注服务里面的配置,例如用户上传数据被拒绝。