D21-操作系统用户管理

2019-08-04  本文已影响0人  荆俊玮

一、补充

1.在其他用户登陆时,目录只有只读权限时,可以查看目录内容,但无法正常全部读取,只限于读取目录内文件名称。

2.在其他用户登陆时,需要修改或编辑文件信息,根上级目录的执行权限有关,上级目录有执行权限,该文件有写的权限,自然就可以修改文件内容。

3. 在其他用户登陆时,想要改动文件,包括创建新的文件、重命名文件和删除文件,必须保证上级目录的权限中有写的权限。

二、系统用户重要文件

a. /etc/passwd ==>系统用户记录文件

1.作用:系统每创建一个用户,该文件就会记录一个用户信息文件
2.查看:tail -1(最后一行) /etc/passwd
3.内容:
1)root 2):x3):0 4):0 5):root 6):/root 7):/bin/bash
1)nobody 2):x3):99 4) 5):99 6):Nobody:/ 7) :/sbin/nologin
1)oldbaby(自行创建的其他用户)2):x3):1013 4):10135): 6):/home/oldbaby7):/bin/bash
1)列:用户名称信息
2)列:用户密码信息(出于安全考虑第二列的x只是密码填充位 ,而真正的密码信息存放在指定000权限的系统用户密码文件)
3)列:用户uid数值信息
4)列:用户gid数值信息(useradd命令创建用户,默认生成用户组,用户组名称及id号和用户名称及id号一般是一致的)
5)列:用户注释信息(可以通过usermod -c命令来添加注释信息)
6)列:指定用户家目录(root用户的家目录就是/root本身,其他用户家目录一般是/home/其他用户名称,而类似于Nobody这种虚拟用户的家目录可以在任意目录下,但该目录下并不是真正存在其家目录,而是虚拟的状态)
7)列:用户登陆系统方式(其中一般登陆方式为bash或者shell,而bash=shel。l nologin的登陆方式就是不能登陆的方式)

扩展:

当我们查看/etc/shells目录时,该目录下的所有文件为/bin/sh;/bin/bash;/usr/bin/sh;/usr/bin/bash,它们本质上其实就是一个文件,sh时bash的软链接,而/bin时usr/bin的软链接,所以他们四个文件最终均是指向bash(仅限CentOS7)

b./etc/shadow ==>系统用户密码(密文形式)记录文件

内容:
1)alex 2):!! 3):18103 4):0 5):99999 6):7 7): 8) :9):
1)oldbaby 2):!! 3):18106 4):0 5):99999 6):7 7): 8): 9):
1)old01 2):!! 3):18106 4):0 5):99999 6):7 7): 8) :9):
只先了解前俩列信息
1)列:用户名称信息
2)列:用户密码信息(当密码信息显示为!!时说明该用户暂未设置密码)

image.png
image.png

注:即使是密文形势下的密码信息也不要轻易给别人查看

扩展:生成用户登陆密码密文

利用python模块功能
1.安装 python-pip软件:yum install python-pip -y
2.安装 passlib软件:pip install passlib
优化pip源 ==>如第二步骤安装不顺利时执行优化操作
~/.pip/pip.conf
中添加或修改:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
3.执行命令:python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
4.命令执行后显示passwd:输入想要设置的密码,自动生成改密码的密文信息
5.将密文信息复制后进入用户系统密码记录文件,找到该要生成密文信息的用户信息,将密文粘贴到2)列位置。

c./etc/group ==>系统用户组记录文件

1.内容:
1)oldbaby 2):x 3):1013 4):


image.png

2.作用:
当将一个其他用户加入到属组用户的用户组中,则该其他用户也会具备这个属组用户的权限,但是一般情况下属组用户和其他用户的权限是一致的。
3.创建用户组:
usermod 添加的用户组成员 -G 要添加到的用户信息
例如:usermod alex -G oldbaby;将alex添加到oldbaby其他用户下,成为他的用户组成员。

d./etc/gshadow ==>系统用户组密码记录文件

image.png

生产环境注意事项

一般情况下,用户记录文件/etc/passwd和用户密码记录文件/etc/shadow的行数是相同的,但当/etc/passwd文件突然多出一行信息,证明root用户创建一个新的用户,此时就要注意该用户是否为正常渠道下创建的用户,以防危险发生。

三、 系统重要目录

a./etc/skel ==>各用户家目录的参考目录

1.创建用户,系统执行过程

01.将用户信息填充到用户文件中

  1. 在/home目录下创建家目录,默认权限为700
    03.复制/etc/skel下所有文件到家目录下,包括隐藏文件。

2.作用:

当用户家目录被删除后,用于恢复数据信息。

练习

家目录所有文件包括隐藏文件均被删除,导致命令提示符无法正常显示,如何修改
方法一:vim /etc/profile
export PS1='[\u@\h \W]$'
方法二:cp /etc/skel/.bash* /home/用户名称

四、进行用户提权操作

普通用户获得更多权限

1.切换用户为root用户:

su -

2.修改文件或目录权限

chmod:修改权限信息

单独修改属主权限( u--user )

chmod u+r/w/x:添加权限
chmod u-r/w/x:删除权限
chmod u=r/w/x:赋予权限

单独修改属组权限(g--group)

chmod g+r/w/x:添加权限
chmod g-r/w/x:删除权限
chmod g=r/w/x:赋予权限

单独修改其他用户权限(o--other)

chmod o+r/w/x:添加权限
chmod o-r/w/x:删除权限
chmod o=r/w/x:赋予权限

利用数值进行批量修改权限信息

chmod 需要修改成的权限数值 文件信息

利用字符进行批量修改权限信息

chmod a +/-/=r/w/x 文件信息
a=all 等价于全部用户加入需要的权限

递归修改目录及目录以下所有的文件权限

chmod -R 要修改成的权限数值 文件信息
--- 利用-R参数实现递归修改

chown:修改属主属组信息

只修改属主信息

chown 要修改成的属主名称 目录/文件信息

只修改属组信息

chown .要修改成的属组名称 目录/文件信息

全部信息修改

chown 要修改成的属主名称.要修改成的属组名称 目录/文件信息
当属主和属组修改名称一致时可以用.代替后一个名称,即chown 要修改成的属主名称. 目录/文件信息

修改目录及目录下所有文件的属主属组权限一致

chown -R 要修改的属主信息.要修改的属组信息 目录/文件信息
--- 利用-R参数实现递归修改

3.利用sudo方式对指定用户提权

第一里程:root用户指定目标用户下放权限
a.visudo
b.进入编辑模式到101行编辑
c.指定用户的用户名称 ALL=(ALL) 赋予指定用户的权限
当赋予指定用户多个权限时需用,空格将俩个或多个权限命令分开。
注:赋予用户指定权限时赋予的权限一定是一个命令,而且这个命令要以绝对路径的形式表现出来,格式即/bin/cat /etc/shadow, /bin/touch /etc/
visudo
oldboy ALL=(ALL) /sbin/
, /bin/, vi
oldboy ALL=(ALL) /bin/
, !/bin/vim, !/usr/sbin/visudo --- 对有些危险命令进行取反配置
oldboy ALL=(ALL) NOPASSWD: /bin/*, !/bin/vim, !/usr/sbin/visudo --- 忽略sudo密码信息

01: 将root权力赋予哪个用户
02: ??? 权限集中管理服务器 --- 跳板机
03: 赋予什么特殊权力

echo 123456|passwd --stdin oldboy
第二个里程: 测试赋予权力
普通用户测试执行
sudo -l --- 查看特殊权限
/bin/cat /etc/shadow, /bin/touch /etc/*
sudo cat /etc/shadow --- 操作命令

sudo -l --- 查看sudo权力
sudo -k --- 清除sudo密码缓存
visudo(语法检查功能) == vim /etc/sudoers
visudo -c --- 检查/etc/sudoers文件合法性

五、系统特殊权限位 12位权限

setuid (4-s):     可以让普通用户获得一个命令文件属主能力 (root)
修改命令权限:
chmod u+s /usr/bin/cat
chmod 4755 /usr/bin/cat
补充: s权限位会覆盖执行权限位:
执行权限位有x  setuid符号为小写 
[root@oldboyedu ~]# ll `which cat`
-rwxr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@oldboyedu ~]# chmod 4755 /usr/bin/cat
[root@oldboyedu ~]# ll `which cat`
-rwsr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat 
执行权限位无x  setuid符号为大写
[root@oldboyedu ~]# ll `which cat`
-rw-r-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@oldboyedu ~]# chmod 4655 /usr/bin/cat
[root@oldboyedu ~]# ll `which cat`
-rwSr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat

setgid (2-s):           可以让普通用户获得一个命令文件属组能力 (root)
修改命令权限:
chmod g+s /usr/bin/cat
chmod 2755 /usr/bin/cat

sticky bit:  t=1  对目录设置
创建一个共享目录, 目录中文件数据只能属主用户操作
其他用户只能看不能改, 也不能删除
[root@oldboyedu ~]# chmod o+t /share/
[root@oldboyedu ~]# chmod 1777 /share/
[root@oldboyedu ~]# ll /share/ -d
drwxrwxrwt 2 root root 43 Jul 29 19:45 /share/

六、用户管理相关命令:

useradd: 创建用户
-u : 指定uid信息
-g : 指定用户所属主要组
-G : 指定用户所属附属组
-M : 不创建用户家目录
-s : 指定用户shell登录方式 /sbin/nologin
useradd rsync -M -s /sbin/nologin --- 创建虚拟用户
-c : 给用户添加注释信息

userdel: 删除用户
userdel -r 彻底删除用户,以及家目录

usermod:
-u : 指定uid信息
-g : 指定用户所属主要组
-G : 指定用户所属附属组
-s : 指定用户shell登录方式 /sbin/nologin
useradd rsync -M -s /sbin/nologin --- 创建虚拟用户
-c : 给用户添加注释信息

groupadd: -g
groupdel:
groupmod: -g
chmod:
chown:
passwd: --stdin
id: uid gid 用户组成员信息
w:
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 15:22 4:48m 0.18s 0.18s -bash
root pts/1 10.0.0.1 18:21 4.00s 0.54s 0.00s w
01: 登录系统用户信息
02: 登录方式 tty本地登录 pts/1远程登录
echo "请其他用户最近2天不要修改/home/oldboy/oldboy.txt" >/dev/pts/0
03: 显示登录的源IP地址
04: 登录时间
05: 登录之后空闲时间
06-07: 执行命令耗费CPU时长
08: 执行了什么操作

last: 显示用户曾经登录历史记录
lastlog: 显示系统所有用户登录信息

上一篇下一篇

猜你喜欢

热点阅读