目录管理
Linux的mkdir命令相当于我们在Windows中通过鼠标或者快捷键新建文件夹
1 .创建
mkdir [-p] dirName
mkdir ccc
mkdir -p aaa/bbb //我们发现,aaa目录被强制创建,里面包含了bbb文件。
在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)
2 复制
cp –r aaa/* ccc //我们将aaa下面的所有文件、目录复制到了目录c下面
3.rm(删除目录)
rm -r ccc //要删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r"
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除
4 mv(移动文件)
1、创建aaa目录、
mkdir aaa
2、开始重命名
mv aaa bbb
mv [options] source dest
mv [options] source... directory
5 更改属主和属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
chmod -R 770 档案或目录
chmod -R 777 as.txt //由之前的【-rw-rw-r--】变成【-rwxrwxrwx】
chmod u=rwx,g=rx,o=r as.txt
要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则
chmod a-r as.txt
综合案例
在前面的章节中我们讲解了用户、用户组、文件属主、属组以及权限,知识点比较零散,下面,我们就通过一个简单小案例把这些知识点串联起来
需求:
比如一个公司的开发团队有三个用户:java、erlang、golang有一个文件目录tmp/work供他们开发,如何实现让这三个用户都对其具有写权限
1、首先,我们创建三个账户(切换到root)
adduser java
adduser erlang
adduser golang
2、增加用户组
groupadd -g 8888 dev-group
3、创建公共文件并设置权限
给文件/tmp/project2019/设置属组为dev-group
mkdir /tmp/project2019
chown -R :dev-group /tmp/project2019/
或者
chgrp -R dev-group /tmp/project2019/
4、将用户添加到组
gpasswd -a java dev-group
gpasswd -a erlang dev-group
gpasswd -a golang dev-group
查询dev-group组下所有用户
grep 'dev-group' /etc/group
5、切换到java用户
切换到java用户看看是否有写入权限
su java
新建文件
在我们上面创建的目录tmp/project2019/下面创建文件
mkdir java-files-new
由此发现,我们在tmp/project2019/下面创建文件发生了权限不足,我们去查看下tmp/project2019/的文件属性,如下图
我们在/tmp目录下执行
ls -l
我们发现目录project2019的文件属性为【drwxr-xr-x】
根据前面学的知识,我们拆分如下
【d】:文件类型
【rwx】:属主
【r-x】:属组
【r-x】:其他
现在答案就出来了,也就是说我们的属组权限是【r-x】,只有读和执行权限,没有写入权限,那么下面我们就给project2019目录增加写入权限。
6、增加写入权限
给project2019目录增加写入权限,执行下面的命令(前面已经学习过了)
记得切换到root下执行
chmod -R 770 project2019
此时我们发现project2019目录的属组权限变成了【rwx】即可读、可写、可执行
7、切换用户,继续写入
su java
mkdir java-files-new
ls -l
由此发现,这个时候我们有了写入权限,java-files-new文件被成功写入
那么,其他两个用户golang、erlang也是和java一个组的,他们能不能正常写入呢,我们试试(从root切换过去)
su
su erlang
mkdir erlang-files-new
==============================
su
su golang
mkdir golang-files-new
ls -l
我们组的三个用户都成功创建了文件(拥有了写入权限)
防火墙:
systemctl status firewalld查看当前防火墙状态
systemctl stop firewalld关闭当前防火墙。
systemctl disable firewalld开机防火墙不启动。