搜索查找类
find命令:
find指令 将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
-name <查询方式> 按照指定的文件名查找模式查找文件
-user <用户名> 查找属于指定用户名所有文件
-size <文件大小> 按照指定的文件大小查找文件
按文件名,根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
按拥有者,查找/opt目录下,用户名称为root的文件
find /opt -user root
查找整个linux系统下大于20M的文件(+n 大于 -n 小于 n 等于)
find / -size +20M
查询根目录下,所有后缀为.txt的文件
find / -name *.txt
locate命令
locate指令:可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须顶起更新locate时刻。
locate 搜索文件:
由于locate指令基于数据库进行查询,所以第一次运行前。必须
使用updatedb指令创建locate数据库
使用locate指令快速定位hello.txt文件所在目录
updatedb
locate hello.txt
grep & 管道符号 |
grep过滤查找
管道符 "|" ,表示将前一个命令的处理结果,输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
-n 显示匹配行及行号
-i 忽略字母大小写
例 : 请在hello.txt文件中,查找 "yes" 所在行,并且显示行号
cat hello.txt | grep -ni yes
cat hello.txt 将hello.txt的内容浏览出来
| 是将cat浏览出来的内容交给后面的命令处理
grep yes 是将 | 交过来的内容进行过滤查找
压缩和解压缩类
gzip & gunzip 命令##
gzip用于压缩
gunzip用于解压
gzip 文件 :压缩文件,只能将文件压缩为 *.gz 文件
gunzip 文件.gz:解压缩文件命令
zip & unzip命令
zip用于压缩
unzip用于解压
打包发布
zip [选项] xxx.zip 将要压缩的内容 #压缩文件和目录的命令
-r 递归压缩,即压缩目录
unzip [选项] xxx.zip #解压缩文件
-d <目录> 指定解压后文件的存放目
tar命令
打包指令 最后打包后的文件是.tar.gz的文件
tar [选择] xxx.tar.gz 打包的内容 #打包目录,压缩后的文件格式是.tar.gz
-c :产生.tar打包文件
-v :显示详细信息
-f :指定压缩后的文件名
-z :打包同时压缩
-x :解包.tar文件
例:
1、压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz
tar -zcvf /home/a.tar.gz /home/a1.txt /home/a2.txt
2、将/home的文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
3、将a.tar.gz解压到当前目录下
tar -zxvf a.tar.gz
4、将myhome.tar.gz解压到/opt目录下(指定的目录必须是存在的)
tar -zxvf myhome.tar.gz -C /opt/
组管理和权限管理(重点)
1.在Linux中的每个用户必须属于一个组,不能独立于组外。
2.在linux中每个文件有所有者、所在组、其他组的概念。
文件:
一般为文件的创建者,谁创建了这个文件,就自然的成为这个文件的所有者。
1.所有者,2.所在组,3.其他组
查看文件的所有者
ls -ahl: 查看所有者
实例:创建一个组police,
-----root用户下
groupadd police
useradd -g police root
------root用户 创建zj.txt
touch zj.txt
ls -ahl查看所有者
-rw-r--r-- 1 root(这里就是zj.txt文件的所有者:root) root 0 5月 17 13:27 zj.txt
useradd命令:创建用户
useradd[选项] 登录名
-u, --uid UID:指定UID;
cat /etc/passwd |grep 用户名 查询信息
-g, --gid GROUP:指定基本ID,此组得事先存在;
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个人组之间用逗号分割;
-c, --comment COMMENT:指明注释信息;
-d, --home-dir HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境变量配置文件;
-s, --shellSHELL:指定用户的默认shell,可用的所有shell列表储存在/etc/shells文件中;
-r, --system:创建一个系统账户
** 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs **
usermod -D :显示创建用户的默认配置
usermod -D 选项:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中
usermod命令: 修改用户属性
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组,原来的附加组会被覆盖;
-c, --comment COMMENT:修改注释信息;
-d, --home-dir HOME_DIR:修改用户的家目录,用户原有的文件不会被转移至新的位置
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-s, --shellSHELL:修改用户默认shell,
-r, --system:创建一个系统账户
-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”
-U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”。
usermod -g 组名 用户名:改变该用户所在的组
usermod -d 目录名 用户名 :改变该用户登录的初始目录
例:创建一个bandit,将ml这个用户从原来所在的police组,修改到bandit组。
groupadd bandit
usermod -g bandit ml
uid=4005(ml) gid=5004(bandit) 组=5004(bandit)
userdel命令:删除用户
userdel[选项] 登录
-r, --remove 删除用户时一并删除其家目录;
passwd命令:
passwd:修改用户自己的密码
passwd USERNAME:修改指定用户的密码,但仅root有此权限;
-l, -u:锁定和解锁用户
-d:“清除用户密码串
-e DATE:过期期限,日期
-i DATE:非活动期限
-n DATE:密码的最短使用期限
-x DATE:密码的最长使用期限;
-w DATE:警告期限
--stdin:
enho “passwd(密码) | passswd --stdin USERNAME(用户名)
gpasswd命令:
组密码文件:/etc/group
gpasswd [选项] group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
newgrp [-] [group]
-:会模拟用户重新登录以实现重新初始化其工作环境;
chage命令:更改用户密码过期信息
chage [选项] 登录名
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”`
#cat /etc/shadow //
test:!!:18077:5:8:8:3:18012:
第一个字段为:用户名;
第二个字段为:加密的密码
第三个字段为:密码最后一次修改的时间 (chage -d)
第四个字段为:密码最小修改间隔时间 (chage -m)
第五个字段为:密码的有效期 (chage -M)
第六个字段为:密码需要变更前的警告天数 (chage -W)
第七个字段为:密码过期后的宽限天数 (chage -I)
第八个字段为:账号失效时间 (chage -E)
第九个字段为:保留
id命令:显示真实和有效的 UID 和 GID
id [OPTION]... [USERNAME]
-g或--group 显示用户的基本ID。
-G或--groups 显示用户所属的所有组的ID
-n或--name 显示用户,所属群组或附加群组的名称。而非ID
-r或--real 显示实际ID。
-u或--user 显示用户有效ID。
-help 显示帮助。
-version 显示版本信息
su命令:switch user
登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户
-c, --commmand=COMMAND:仅以指定用户的身份运行此处指定的命令:
其他几个命令:chsh,chfn,finger,whoami,pwck,
回顾grpckgroupadd,groupmod,groupdel,useradd,usermod,userdel,id,su,passwd,gpasswd,chage,chsh,chfn,finger,whoami,pwck,grpck
权限管理
进程安全上下文:
进程对文件的访问权限应用模型:
进程的属主(进程的发起者)与文件的属主是否相同,如果相同,则应用属主权限
否则,则检查进程的属主是否属于文件的属组:如果是,则应用属组权限
否则,就只能应用other的权限
权限
r:readable,读
w,writeable,写
x,excuteable,执行
文件:
r:可获取文件的数据
w,可修改文件的数据
x,可将此文件运行为进程
目录:
r:可使用ls命令获取其下的所有文件列表
w:可修改此目录下的文件列表:即创建或删除文件
x:可cd至此目录中,且可使用ls -l来获取所有
mode:rwxrwxrwx
ownership:user,group
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
规则
r=4 #二进制 100
w=2 #二进制 010
x=1 #二进制 001
rwx=4+2+1=7
练习:rw-rw-r--, rwxrwxr-x, rwxr-x---, rw------, rwxr-xr-x,
664 640 600 775 750 755
-rw------- (600) – 只有属主有读写权限。
-rw-r–r-- (644) – 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) – 只有属主有读、写、执行权限。
-rwxr-xr-x (755) – 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx–x–x (711) – 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) – 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) – 所有用户都有读、写、执行权限。更不可取的做法。
例:- rw- r-- r-- 1 tom root 0 Jun 20 00:02 zj.txt
1 2 3 4 5 6 7 8 9 10
1 文件的类型
[-:普通文件]
[d:目录]
[l:软链接]
[c:字符设备(键盘,鼠标)]
[b:快文件,硬盘]
2 表示文件/目录所有者权限
3 文件/目录所在组的用户的权限
4 文件/目录其它组的用户的权限
-----[r:可读]
-----[w:可写]
-----[x:]
-----[-:没有权限]
5 如果是文件,表示硬链接的数
如果是目录,表示目录的子目录的个数
6 文件/目录所在用户
7 文件/用户所在组
8 文件的大小,单位:字节,,,如果是目录,显示4096
9 文件/目录最后的修改时间
10 文件/目录名
权限管理命令:
chmod [options]...mode file...
chmod [options]... OCTAL -MODE FILE...
chmod [options]... --reference=RFILE FILE...
三类用户:
u:属主
g:属组
o:其他
a:所有
(1)chmod [options]...mode file...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限为rwx
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+ ,u-
g+ ,g-
o+ ,o-
a+ ,a-
(2)chmod [options]... OCTAL -MODE FILE...(00:30:26)(参考性修改 )
(3)chmod [options]... --reference = RFILE FILE...
[选项]
-R ,----reference:递归修改
注意:注意:用户仅能修改属主为自己的那些文件权限;
chmod u=rwx,g=rx,o=x 文件目录名:表示给所有者读、写、执行权限 ,给所有组读和执行权限,给其他人执行权限
chmod o+w 文件目录名:表示给其他人添加写的权限
chmod a-x 文件目录名:表示给所有人去除执行的权限
例
1、给abc文件的所有者读写执行的权限,给所有组读执行权限,给其他组读执行权限
chmod u=rwx,g=rx,o=rx abc
2、给abc文件的所有者除去执行的权限,增加所有组写的权限
chmod u-x,g+w abc
3、给abc文件的所有用户添加读的权限
chmod a+r abc
从属关系管理命令: chown,chgrp##
chown命令: - 修改文件所有者和组别
chown [options] user [:group] file...
chown [options] --reference=RFILE FILE...
选项:
-R :递归修改
案例:使用root创建一个文件zj.txt,然后将其修改成zzl
------使用root用户 创建zj.txt
touch /home/zj.txt
查看所有者 zj.txt是属于root的
ls -ahl
未修改:-rw-r--r-- 1 root root 0 5月 17 13:27 zj.txt
修改后:-rw-r--r-- 1 zzl root 0 5月 17 13:37 zj.txt
注意:文件所有者所在的组,不一定是文件所在组。
例
1、请将/home/abc.txt文件的所有者修改成tom
chown tom abc.txt
2、请将/home/kkk目录下所有的文件和目录的所有者都修改成tom
chown -R tom kkk/
chgrp命令: chgrp - 改变文件的组所有权
chgrp [OPTION] GROUP FILE...
chgrp [OPTION]... --REFERENCE = RFILE FILE...
例:使用root用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组。
touch /home/zj.txt
ls -ahl
chgrp police /home/zj.txt
ls -ahl
示例:
未修改:-rw-r--r-- 1 zzl root 0 5月 17 15:47 zj.txt
修改后:-rw-r--r-- 1 zzl police 0 5月 17 13:37 zj.txt
注意:仅管理员可修改文件属主和属组:
思考:用户对某个目录有写权限,但对此目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
模拟:
umask:文件的权限反向掩码,遮罩码:
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减去,表示文件默认认为不能拥有执行权限:如果减得的结果中有执行权限,则需要将其加1
umask:023
666-023=644
777-023=754
umsak命令:
umask:查看当前umaske
umask MASK: 设置umask
注意:此类设定仅对当前shell进程有效:
install命令 复制文件并设置属性##
单源复制:
install [options] [-T] SOURCE DEST
多源复制:
install [options] SOURCE...DIRECTORY
install [options] [-t,DIRECTORY SOURCE...
创建目录:
install [options]... -d DERECTORY...
常用选项:
-m,--mode=mode:设定目标文件权限,默认为755
-o,--owner=owner:设定目标文件属主
-g,--group=group:设定目标文件属主:
mktemp命令:创建临时文件或临时目录
mktemp [-q] [-u] template
常用选项:
-d:创建临时目录
注意:mktemp会将创建临时文件名直接返回,因此,可直接通过命令引用保存起来: