Bootstrap

用户管理、文件查找

一、用户权限管理
系统根据账户来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境。对用户组的管理主要包括:添加、修改、删除以及配置访问系统的资源。
1.给普通用户提权
sudo 命令用于给普通用户提供额外的权限来完成原本 root 管理员才能完成的任务,格式为“sudo [参数] 命令名称”。
sudo 命令具有如下功能:
Ø 限制用户执行指定的命令:
Ø 记录用户执行的每一条命令;
Ø 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机
等参数;
Ø 验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。
例:给alice用户临时提权可以查看root的信息
1)visudo
2)将第 93 行(大约)填写上指定的信息:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

在这里插入图片描述
3)切换到alice用户 sudo -l发现alice有了权限,直接查看root失败,在前面加上sudo 即可成功查看
在这里插入图片描述
2. 练习题:
1)增加两个用户并设置好密码(写 2 行):John、Lucy
useradd -p 123456 john
useradd -p 123 lucy
2)查看各用户的基本信息(相关文件在/etc 中)
cat /etc/passwd | grep ‘john’
cat /etc/passwd | grep ‘lucy’
查看各用户的密码信息(相关文件在/etc 中)
cat /etc/shadow | grep ‘john’
在这里插入图片描述
cat /etc/shadow | grep ‘lucy’
在这里插入图片描述
3)查找用户 summer 并显示其相关信息
useradd summer
cat /etc/passwd | grep ‘summer’
在这里插入图片描述
4)将当前用户切换到 John(进入其主目录),显示当前登录用户名
在这里插入图片描述
5)将 John 的登录密码改为:mima1234
echo mima1234 | passwd --stdin john
在这里插入图片描述
6)将 John 的帐号有效期设为 2017 年 12 月 31 号
usermod -e 2018-12-31 john /chage -E
在这里插入图片描述
7)将 John 加入到 summer 组中
usermod -G john summer
将用户名 John 改为 Jack
usermod –l jack john
在这里插入图片描述
8)将 Jack 的用户全名改为:Jack.Willianmus
usermod –l jack.Willianmus john

9)用户切换到 Lucy,删除 Lucy 的密码,删除用户 Lucy
su lucy
vi /etc/passwd 中去掉lucy 的x权限,userdel lucy
例:
组管理命令练习
1)增加以一个 student 组
groupadd student
2)查看所有组的基本信息(相关文件在 etc 中)
cat /etc/group
在这里插入图片描述
3)查看 summer 组中包含哪些用户名?
cat /etc/group | grep ‘summer’
在这里插入图片描述
3)将 student 组名改为 teacher
groupmod –n teacher student
删除 teacher 组
groupdel teacher
在这里插入图片描述
二、文件查找
which找不到的而whereis可以找到是因为系统真癿有 ifconfig 这个文件,但是使用者的 PATH 幵没有加入/sbin;which是找可执行文件,whereis,locate在数据库中查找数据
在这里插入图片描述
1.which
查找可执行文件的路径
which 是通过 PATH 环境变量到该路径内查找可执行文件
[root@wq ~]# which [-a] command
在这里插入图片描述
2.whereis
[root@wq ~]# whereis [-bmsu] 文件或者目录名称
参数说明:
-b : 只找二进制文件
-m: 只找在说明文件 manual 路径下的文件
-s : 只找 source 源文件
-u : 没有说明文档的文件
在这里插入图片描述
只找出二进制文件
whereis -b ifconfig
在这里插入图片描述
locate
语法:
[root@wq ~]# locate 文件或者目录名称
选项或参数:
-i :忽略大小写的差异;
-r :后面可接正则表示法的显示方式
locate 寻找的数据是由『已建立的数据库 /var/lib/mlocate/』里面的数据所搜寻到的,不用直接在去硬盘中存取数据。
更新 locate 数据库直接输入 updatedb 就可以了! updatedb 指令会
去读取 /etc/updatedb.conf 这个配置文件的设定,然后再去硬盘
里面迚行搜寻文件名的动作, 最后就更新整个数据库文件!
3.find
[root@wq ~]# find 路径 参数
参数说明:
时间查找参数:
-atime n :将 n24 小时内存取过的的文件列出来
-ctime n :将 n
24 小时内改变、新增的文件或者目录列出来
-mtime n :将 n24 小时内修改过的文件或者目录列出来
-newer file :把比 file 还要新的文件列出来
在这里插入图片描述
1)find ./ -mtime 0 0代表当前时间,从现在开始的24小时
2)找出/root中,即后缀为 sh的文件
[root@wq~]# find /root -type f -name "
.sh"
在这里插入图片描述

额外操作:
-exec command :command 为其他挃令,-exec 后面可再接额
外的指令来处理搜寻到癿结果。
-print :将结果打印到屏幕上,这个动作是预设!
3)找出/root中,即后缀为 sh的文件,用ls -l列出来
在这里插入图片描述
[root@wq~]# find /root -type f -name “.sh" | xargs ls -l
在这里插入图片描述
那么他们有什么区
#{} 代表癿是『由 find 找到癿内容』,find 癿结果会被放置到 {} 位置中;
#-exec 一直到 ; 是关键词,代表 find 额外动作癿开始 (-exec) 到结束 ( \ ; ) ,在这中间的就是 find 命令内的额外动作。
**exec与xargs的区别:
-exec
1.参数是一个一个传递的,传递一个参数执行一次 rm
2.文件名有空格等特殊字符也能处理
-xargs
1.一次将参数传给命令,可以使用-n 控制参数个数
2.处理特殊文件名需要采用如下方式:
find . -name "
.txt” print0 |xargs -0 rm {}**
练习:
1、查找/var 目录下属主为 root,且属组为 mail 的所有文件或目录;
~]# find /var -user root -a -group mail -ls

2、查找/usr 目录下不属于 root, bin 或 student 的所有文件或目录;
用两种方法;
~]# find /usr -not -user root -a -not -user bin -a -not -user
student
在这里插入图片描述
~]# find /usr -not ( -user root -o -user bin -o -user student )
-ls
在这里插入图片描述
3、查找/etc 目录下最近一周内其内容修改过,且属主不是 root 用
户也不是 student 用户的文件或目录;
~]# find /etc -mtime -7 -a -not ( -user root -o -user student
) -ls
~]# find /etc -mtime -7 -a -not -user root -a -not -user
student -ls
4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件
或目录;
~]# find / ( -nouser -o -nogroup ) -atime -7 -ls
5、查找/etc 目录下大于 1M 且类型为普通文件的所有文件;
~]# find /etc -size +1M -type f -exec ls -lh {} ;
在这里插入图片描述
6、查找/etc 目录下所有用户都没有写权限的文件;
~]# find /etc -not -perm /222 -type f -ls
在这里插入图片描述
7、查找/etc 目录至少有一类用户没有执行权限的文件;
~]# find /etc -not -perm -111 -type f -ls
/必须三个(属主、属组、其他人)都满足,-至少有一个满足
8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户
有写权限的所有文件;
~]# find /etc -perm -113 -type f -ls

;