用户管理及权限
Posted lbzyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户管理及权限相关的知识,希望对你有一定的参考价值。
目录
1.系统的启动流程
2.系统的用户管理及权限
3.系统的用户(组)命令
1.系统的启动流程
centos6 |
|
centos7 |
|
步骤 |
作用 |
步骤 |
作用 |
01. 加电自检 |
检查服务器硬件是否正常 |
01. 加电自检 |
检查服务器硬件是否正常 |
02. MBR引导 |
读取磁盘的MBR存储记录信息,引导系统启动 |
02. MBR引导 |
读取磁盘的MBR存储记录信息,引导系统启动 |
03. grup菜单 |
选择启动的内核/进行单用户模式重置密码 |
03. grup菜单 |
选择启动的内核/进行单用户模式重置密码 |
04. 加载系统内核信息 |
可以更好的使用内核控制硬件 |
04. 加载系统内核信息 |
可以更好的使用内核控制硬件 |
05. 系统的第一个进程运行起来 init (串行) |
init进程控制后续各种服务的启动: 启动顺序 网络服务 sshd |
05. 系统的第一个进程运行起来 systemd (并行) |
服务启动的时候,同时一起启动 |
06. 加载系统运行级别文件 |
/etc/inittab |
06. 读取系统启动文件 |
/etc/systemd/system/default.target |
07. 初始化脚本运行 |
初始化系统主机名称 和 网卡信息 |
07. 读取系统初始化文件 |
/usr/lib/systemd/system/sysinit.target |
08. 运行系统特殊的脚本 |
服务运行的脚本 |
08. 使服务可以开机自启动 |
/etc/systemd/system 加载此目录中的信息,实现服务开机自动启动 |
09. 运行mingetty进程 |
显示开机登录信息界面 |
09. 运行mingetty进程 |
显示开机登录信息界面 |
2.系统的用户管理及权限
1.用户分类
用户分类 |
用户示例 |
uid号 |
权限 |
管理员用户 |
root |
0 |
权利至高无上 |
虚拟用户 |
nobody |
1-999 |
管理进程 没家目录,不能登录系统 |
普通用户 |
lbz |
1000+ |
权利有限 |
2.文件信息
简写 |
全写 |
作用 |
r |
read |
可以读文件的内容 |
w |
write |
可以编辑文件的内容 |
x |
execute |
执行这个文件(脚本文件) |
3.目录信息
简写 |
全写 |
作用 |
r |
read |
读目录中的文件属性信息 |
w |
write |
可以在目录中添加或删除文件数据信息 |
x |
execute |
是否可以进入到目录中 |
4.代码说明
//用户管理 1.文件权限 1)修改属主 2)修改权限 2.目录权限 3.文件权限修改 1)根据用户信息进行设定 (属主 属组 其他用户) 2)根据用户进行批量设定 a) 数值设定 b) 字符设定 4.文件默认权限 5.特殊目录 6.特殊文件 1.文件权限 01. root用户对所有文件有绝对的权限,只要有了执行权限,root用户可以无敌存在 02. 对于文件来说,写的权限和执行的权限,都需要有读权限配合 03. 如何想对文件进行操作,必须对文件赋予读的权限 一个普通文件默认权限: 644 保证属主用户对文件可以编辑 保证其他用户可以读取文件内容 [root@lbz01 ~]# touch lbz.txt //创建环境 [root@lbz01 ~]# ll lbz.txt -rw-r--r--. 1 root root 6 Jan 22 21:36 lbz.txt [root@lbz01 ~]# chown lbz lbz.txt 1)修改属主为lbz [root@lbz01 ~]# ll lbz.txt -rw-r--r--. 1 lbz root 6 Jan 22 21:36 lbz.txt [root@lbz01 ~]# chmod 000 lbz.txt 2)修改权限 [root@lbz01 ~]# ll lbz.txt ----------. 1 lbz root 6 Jan 22 21:36 lbz.txt 2.目录权限 01. root用户对目录信息有绝对权限 02. 对于目录来说,写的权限和读的权限,都需要有执行权限配合 03. 如何想对目录进行操作,必须对目录赋予执行的权限 一个目录文件默认权限: 755 保证属主用户对目录进行编辑 保证其他用户可以读取目录中的信息,可以进入到目录中 3.文件权限修改 1)根据用户信息进行设定 (属主 属组 其他用户) 属主 -user u 属组 -group g 其他用户 -other o [root@lbz01 ~]# touch lsn.txt //创建环境 [root@lbz01 ~]# ll lsn.txt -rw-r--r--. 1 root root 0 Jan 22 21:54 lsn.txt [root@lbz01 ~]# chmod u-w lsn.txt //修改属主权限 [root@lbz01 ~]# ll lsn.txt -r--r--r--. 1 root root 0 Jan 22 21:54 lsn.txt [root@lbz01 ~]# chmod g+w lsn.txt //修改属组权限 [root@lbz01 ~]# ll lsn.txt -r--rw-r--. 1 root root 0 Jan 22 21:54 lsn.txt 2)根据用户进行批量设定 [root@lbz01 ~]# chmod 761 lsn.txt a) 数值设定 [root@lbz01 ~]# ll lsn.txt -rwxrw---x. 1 root root 0 Jan 22 21:54 lsn.txt [root@lbz01 ~]# chmod a=x lsn.txt b) 字符设定 [root@lbz01 ~]# ll lsn.txt ---x--x--x. 1 root root 0 Jan 22 21:54 lsn.txt 4.文件默认权限 [root@lbz01 ~]# umask 0022 默认文件权限: 666 - 022 = 644 umask数值是奇数 666 - 033 = 633 + 11 = 644 umask数值是偶数 666 - 022 = 644 默认目录权限: 777 - 022 = 755 umask数值是奇数 777 - 033 = 744 umask数值是偶数 777 - 022 = 755 [root@lbz01 ~]# vim /etc/profile if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 //可以永久修改umask数值 fi #$UID: 显示当前登录系统用户id数值 判断比较符号 -gt greater than > -lt less than < -eq equal == -ge greater && equal >= -le less && equal <= -ne not equal <> 5.特殊目录 [root@lbz01 ~]# ll /etc/skel -a 01. 目录中可以存储运维操作规范说明文件 02. 调整命令提示符信息 目录中的数据内容会参考/etc/skel目录中的信息 total 24 drwxr-xr-x. 2 root root 62 Apr 11 2018 . drwxr-xr-x. 80 root root 8192 Jan 22 22:06 .. -rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout //当系统退出登录状态会执行的命令 -rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile //别名和环境变量(只针对某个用户) -rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc //别名和环境变量(只针对某个用户) [root@lbz01 ~]# useradd lbz02 [root@lbz01 ~]# ll /home/lbz02/ -a total 12 drwx------. 2 lbz02 lbz02 62 Jan 22 22:10 . drwxr-xr-x. 6 root root 54 Jan 22 22:10 .. -rw-r--r--. 1 lbz02 lbz02 18 Apr 11 2018 .bash_logout -rw-r--r--. 1 lbz02 lbz02 193 Apr 11 2018 .bash_profile -rw-r--r--. 1 lbz02 lbz02 231 Apr 11 2018 .bashrc [root@lbz01 ~]# cd /etc/skel //应用 [root@lbz01 skel]# touch readme.txrt [root@lbz01 skel]# touch readme.txt [root@lbz01 skel]# vim readme.txt #运维操作规范 [root@lbz01 skel]# useradd test01 [root@lbz01 skel]# su - test01 [root@lbz01 skel]# su - test01 [test01@lbz01 ~]$ cat readme.txt #运维操作规范 [root@lbz01 ~]# ll /home/test01/ -a //创建环境 total 16 drwx------. 2 test01 test01 83 Jan 22 22:18 . drwxr-xr-x. 7 root root 68 Jan 22 22:15 .. -rw-------. 1 test01 test01 22 Jan 22 22:16 .bash_history -rw-r--r--. 1 test01 test01 18 Apr 11 2018 .bash_logout -rw-r--r--. 1 test01 test01 193 Apr 11 2018 .bash_profile -rw-r--r--. 1 test01 test01 231 Apr 11 2018 .bashrc [root@lbz01 ~]# rm -fr /home/test01/.b* [root@lbz01 ~]# ll /home/test01/ -a total 0 drwx------. 2 test01 test01 6 Jan 22 22:20 . drwxr-xr-x. 7 root root 68 Jan 22 22:15 .. [root@lbz01 ~]# su - test01 Last login: Wed Jan 22 22:15:32 CST 2020 on pts/0 -bash-4.2$ //出现问题 -bash-4.2$ cp /etc/skel/.b* /home/test01/ //解决问题 -bash-4.2$ exit [root@lbz01 ~]# su - test01 //问题解决 Last login: Wed Jan 22 22:21:07 CST 2020 on pts/0 [test01@lbz01 ~]$ 6.特殊文件 [test01@lbz01 ~]$ ll .bash_history -rw-------. 1 test01 test01 36 Jan 22 22:24 .bash_history //历史命令记录文件 #曾经输入的历史命令保存位置: 01. 保存在内存中 histroy history -c 02. 保存在磁盘文件中: .bash_history 补充: [root@lbz01 ~]# su - test01 Last login: Wed Jan 22 22:24:11 CST 2020 on pts/0 [test01@lbz01 ~]$ /usr/bin/id -gn //显示当前用户的组名 test01 [test01@lbz01 ~]$ /usr/bin/id -un //显示当前用户名称 test01
3.系统的用户(组)命令
//系统的用户(组)命令 1.用户(组)相关命令 1)相关文件 2)用户参数说明 3)修改用户信息 4)用户组命令 2.用户属主属组命令 3.用户信息查看 4.用户权限说明 1)su 2)sudo 3)数据文件权限 5.特殊权限位 6.粘滞位 1.用户(组)相关命令 1)相关文件 a)/etc/passwd --- 记录系统用户信息文件 b)/etc/shadow --- 系统用户密码文件 c)/etc/group --- 组用户记录文件 d)/etc/gshadow --- 组用户密码信息 [root@lbz01 ~]# head /etc/passwd //记录系统用户信息文件 root:x:0:0:root:/root:/bin/bash ///bin/bash --- 通用的解释器 bin:x:1:1:bin:/bin:/sbin/nologin ///sbin/nologin --- 无法登录系统 daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin #第一列: 用户名 第二列: 用户密码信息 第三列: 用户的uid信息 第四列: 用户的gid信息 第五列: 用户的注释信息 第六列: 用户家目录信息 第七列: 用户登录系统方式 2)用户参数说明 #-s 修改用户的登录方式 -g 修改用户的主要的组信息 -G 修改用户的附属组信息 -c 修改用户的注释信息 [root@lbz01 ~]# useradd lbz03 -M -s /sbin/nologin //创建虚拟用户 #-M 不创建家目录 -s 指定使用的shell方式 [root@lbz01 ~]# id lbz03 uid=1005(lbz03) gid=1005(lbz03) groups=1005(lbz03) [root@lbz01 ~]# grep lbz03 /etc/passwd lbz03:x:1005:1005::/home/lbz03:/sbin/nologin [root@lbz01 ~]# ll /home/lbz03 -d ls: cannot access /home/lbz03: No such file or directory [root@lbz01 ~]# useradd lbz07 -u 2005 -g lbz02 -G lbz03 //创建用户 #-u 指定用户uid数值信息 -g 指定用户所属的主要组信息 -G 指定用户所属的附属组信息 [root@lbz01 ~]# id lbz07 uid=2005(lbz07) gid=1003(lbz02) groups=1003(lbz02),1005(lbz03) [root@lbz01 ~]# useradd mysql -s /sbin/nologin -M -c "manager database" //创建用户 #-c 添加指定用户注释说明信息 [root@lbz01 ~]# grep mysql /etc/passwd mysql:x:2006:2006:manager database:/home/mysql:/sbin/nologin 3)修改用户信息 [root@lbz01 ~]# usermod lbz02 -s /sbin/nologin a)修改用户shell信息 [root@lbz01 ~]# grep lbz02 /etc/passwd lbz02:x:1003:1003::/home/lbz02:/sbin/nologin [root@lbz01 ~]# usermod lbz02 -u 3000 b)修改用户uid信息 [root@lbz01 ~]# id lbz02 uid=3000(lbz02) gid=1003(lbz02) groups=1003(lbz02) [root@lbz01 ~]# userdel -r lbz04 c)删除用户信息 #-r 彻底删除用户以及用户的家目录 userdel: group lbz04 is the primary group of another user and is not removed. [root@lbz01 ~]# ll /home/lbz04 -d ls: cannot access /home/lbz04: No such file or directory [root@lbz01 ~]# echo 123456|passwd --stdin lbz d)非交互式用户密码设置方法 Changing password for user lbz. passwd: all authentication tokens updated successfully. [root@lbz01 ~]# passwd lbz01 d)交互式设置密码 补充:企业中设置密码和管理密码的方式 01. 密码要复杂12位以上字母数字及特殊符号 02. 保存好密码信息 keepass 密码保险柜,本地存储密码 lastpass 密码保险柜,在线存储密码 03. 大企业用户和密码统一管理(相当于活动目录AD) openldap域 用户信息统一保存在一个用户管理服务器中 用户的家目录中的文件 用户密码 用户名称 04. 动态密码:动态口令,第三方提供自己开发也很简单。 4)用户组相关命令 root@lbz01 ~]# groupadd python //创建用户组 #groupadd 创建用户组 groupmod 修改用户组信息 groupdel 删除用户组信息 [root@lbz01 ~]# useradd python -g python [root@lbz01 ~]# id python uid=3001(python) gid=2007(python) groups=2007(python) 2.用户属主属组命令 [root@lbz01 ~]# chown lbz.lbz lbz_dir //修改属主和属组信息 [root@lbz01 ~]# ll lbz_dir -d drwxr-xr-x. 2 lbz lbz 40 Jan 23 12:23 lbz_dir [root@lbz01 ~]# ll lbz_dir/ total 0 -rw-r--r--. 1 root root 0 Jan 23 12:23 lbz_dir.txt -rw-r--r--. 1 root root 0 Jan 23 12:23 lbz.txt [root@lbz01 ~]# chown -R lbz.lbz lbz_dir //递归修改目录属主和属组信息 [root@lbz01 ~]# ll lbz_dir -d drwxr-xr-x. 2 lbz lbz 40 Jan 23 12:23 lbz_dir [root@lbz01 ~]# ll lbz_dir/ total 0 -rw-r--r--. 1 lbz lbz 0 Jan 23 12:23 lbz_dir.txt -rw-r--r--. 1 lbz lbz 0 Jan 23 12:23 lbz.txt 3.用户信息查看 [root@lbz01 ~]# id lbz 1)id 显示用户信息命令 uid=1000(lbz) gid=1000(lbz) groups=1000(lbz) [root@lbz01 ~]# w 2)w显示正在登陆系统的用户信息 12:29:06 up 4:03, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 08:26 2.00s 0.47s 0.02s w #01. 什么用户登录到了系统中 02. 登录的方式 pts/x 远程登录系统 tty1 本地登录 [root@lbz01 ~]# echo "请不要修改恢复hosts文件配置" >/dev/pts/1 03. 从哪连接的服务器 04. 登录时间 05. IDLE 空闲时间 06. 用户操作系统 消耗的CPU资源时间 07. 用户在干什么 4.用户权限说明 普通用户如何像root用户一些操作管理系统: 01. 直接切换到root账户下管理系统 02. 直接修改要做的数据文件权限 03. root用户赋予了普通用户权利 sudo-- root用户授权一个能力给普通用户 1)第一种方法:su #直接切换用户为root su 部分环境变量切换用户有变化 su - 全部环境变量切换用户有变化 [lbz@lbz01 ~]$ env|grep lbz #默认当前登录系统用户为lbz时,环境变量中会体现出lbz用户信息 HOSTNAME=lbz01 USER=lbz MAIL=/var/spool/mail/lbz PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/lbz/.local/bin:/home/lbz/bin PWD=/home/lbz HOME=/home/lbz LOGNAME=lbz [lbz@lbz01 ~]$ su root a)su 当用户su命令切换用户,系统中环境变量信息部分会变为root,但更多信息为原有lbz用户信息 Password: [root@lbz01 lbz]# env|grep lbz HOSTNAME=lbz01 USER=lbz PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/lbz/.local/bin:/home/lbz/bin MAIL=/var/spool/mail/lbz PWD=/home/lbz LOGNAME=lbz [root@lbz01 lbz]# env|grep root HOME=/root [lbz@lbz01 ~]$ su - root b)su - #当用户su -命令切换用户,系统中环境变量信息会全部切换为root Password: Last login: Thu Jan 23 12:45:15 CST 2020 on pts/0 [root@lbz01 ~]# env|grep lbz HOSTNAME=lbz01 [root@lbz01 ~]# env|grep root USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root HOME=/root LOGNAME=root 2)第二种方法:sudo [root@lbz01 ~]# visudo a)进行授权 #visudo相当于vi /etc/sudoers(需要排除部分特权命令,如/usr/sbin/*,!/usr/sbin/visudo,/usr/bin/*) 93 lbz ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm [root@lbz01 ~]# visudo -c //配置好的文件语法检查 [lbz@lbz01 ~]$sudo -l b)验证lbz已经获取了root用户能力 [lbz@lbz01 ~]$sudo useradd lbz08 c)执行root用户可以执行的命令 #sudo 授权的命令 [lbz@lbz01 ~]$sudo rm -f /etc/hosts 3)第三种方法:修改数据文件权限 总结: 01. 直接切换用户 su - (*) 优势: 简单快捷 劣势: 风险太高(root权限泛滥) 02. 采用sudo提权方式 优势: 可以利用文件编辑指定用户有哪些指定权限 sa运维部门 dev开发人员 劣势: 配置规划复杂 02. 修改数据文件权限 9位权限位 属主信息 优势: 只针对某个数据文件进行修改 只针对某个用户进行授权 劣势: 需要了解权限位功能 3位权限位 优势: 设置权限简单方便 劣势: 设置好的权限所有用户都拥有 5.特殊权限位 [root@lbz01 ~]# ll /bin/cat -rwxr-xr-x. 1 root root 54080 Apr 11 2018 /bin/cat [root@lbz01 ~]# chmod u+s /bin/cat //设置特殊权限位 #setuid权限位设置,将文件属主拥有的能力,分配给所有人 说明:系统文件数据的9个权限位 系统中实际应该有12个权限位 [root@lbz01 ~]# chmod 4755 /bin/cat [root@lbz01 ~]# ll /bin/cat -rwsr-xr-x. 1 root root 54080 Apr 11 2018 /bin/cat [root@lbz01 ~]# chmod g+s /bin/cat //设置特殊权限位 #setgid权限位设置,将文件属组拥有的能力,分配给所有用户组 [root@lbz01 ~]# chmod 6755 /bin/cat [root@lbz01 ~]# ll /bin/cat -rwsr-sr-x. 1 root root 54080 Apr 11 2018 /bin/cat 6.粘滞位 #sticky bit:粘滞位: (创建一个共享目录) 作用: 可以将不同用户信息放置到共享目录中,实现不同用户数据可以互相查看,但是不可以互相随意修改 语法:chmod o+t 目录信息 chmod 1777 目录信息 [root@lbz01 ~]# ll -d /tmp/ #系统中已经准备好了一个共享目录,权限位1777 drwxrwxrwt. 18 root root 4096 Jan 23 09:39 /tmp/
问题及反思:
如何防范系统中的重要文件不被修改(root用户也不能修改)
解决方法:给文件加上锁头
目的: 使root用户也不能直接修改相应文件
[root@lbz01 ~]# chattr +i /etc/passwd //设置方法 [root@lbz01 ~]# lsattr /etc/passwd //检查 ----i----------- /etc/passwd [root@lbz01 ~]# chattr -i /etc/passwd //解锁方法 [root@lbz01 ~]# lsattr /etc/passwd //检查 ---------------- /etc/passwd
版权属于:木丫头
转载必须声明
以上是关于用户管理及权限的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段