文件目录管理

一.认识Linux文件系统的架构

在Linux中是没有盘符这个概念的,即Linux中没有C盘和D盘的分盘。那么我们直接通过对目录的操作实现对磁盘的读写,因为已经建立的文件系统分区被挂载到一个目录下。

我们可以注意到Linux表示目录是使用"/"而不是像Windows那样的"\"。

那么我们列出Linux文件系统中主要的目录并了解她们的含义:

在我的阿里云上在/目录下输入ls命令得到:

/bin    构建最小的系统所需要的命令

/boot  内核和启动文件

/dev   各种设备文件

/etc    系统软件的启动和配置文件

/home   用户的主目录

/lib      C编译器的库

/media   可移动介质的安装点

/proc      进程的映像

/root      超级用户root的主目录

/sbin     和系统操作有关的命令

/tmp      临时文件存放点

/usr       非系统的程序和命令

/var       系统专用的数据和配置文件

二.创建一个工作组和共享文件

虽然在团队开发中我们可以使用git和远程版本控制库但是我们创建一个共享的文件在本地开发时是有极大帮助的。

首先我们要知道怎么去创建一个新的用户:

以下部分转载来自@信则成我对内容进行了图片填充和代码实验,原文地址:https://www.cnblogs.com/clicli/p/5943788.html

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号使用 useradd命令,其语法如下:
代码:
useradd 选项 用户名
其中各选项含义如下:
代码:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名 指定新账号的登录名。
例1:
代码:
# useradd –d /usr/sam -m sam
此命令创建了一个用户sam
其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。

在我们去输入这条命令之前,我们先进入user文件夹下查看所有的文件:

输入命令后查看usr文件夹:

在usr文件夹下就出现了一个新的文件夹名叫cjm和我们的用户名相同。

那么下载cjm这个用户的主目录就是在usr文件夹下的cjm文件夹
例2:
代码:
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem该用户的登录Shell是/bin/sh它属于group用户组,同时又属于adm和root用户组(附加组),其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm 
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

如果我们直接输入这一条命令:

他会报出这样的错误提示你group工作组不存在,那么我们首先来创建一个工作组group(root是已经存在的超级用户不用添加,adm也是存在的)。

添加用户组

然后在输入添加用户语句,就没有问题了。
2、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:
代码:
userdel 选项 用户名
常用的选项是-r它的作用是把用户的主目录一起删除
例如:
代码:
# userdel sam
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

我们删除我们刚刚创建的cjm用户,并且去usr目录下发现我们创建的用户主目录已经删除
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
代码:
usermod 选项 用户名
常用的选项包括

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用如下选项:
代码:
-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

例如:

我们先创建一个用户名为cjm,主目录在usr文件夹下的cjm文件夹,shell登录在bin目录下的sh,然后我们将shell改为在bin目录下的ksh,将主目录改为usr下的cjm1,名字也改为cjm1      

创建: 

更改后去查看文件夹:

不难发现这个cjm文件夹已经更改cjm1
4、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd超级用户可以为自己和其他用户指定口令普通用户只能用它修改自己的口令。命令的格式为:
代码:
passwd 选项 用户名
可使用的选项:
代码:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令,删除密码
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。

如果是超级用户,可以用下列形式指定任何用户的口令:
代码:
# passwd sam (注意开头提示符号为井号)
New password:*******
Re-enter new password:*******

操作:

现在我就已经给我的cjm1用户创建了一个密码。

我们登录cjm1用户:

例如,假设当前用户是cjm1,则下面的命令修改该用户自己的口令:
代码:
$ passwd(注意开头提示符为美元符号,表示非超级用户)
Old password:******
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

操作截图:


为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
代码:
# passwd -d sam

此命令将用户sam的密码删除,但是下一次登录还是会询问密码

我们再去登录cjm1这个用户,是登录不进去的,即使密码为空。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
代码:
# passwd -l sam

修改后再去登录:

是登陆不上的
新建用户异常:
useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop
1 Creating mailbox file: 文件已存在
删除即可 rm -rf /var/spool/mail/用户名
2 useradd: invalid numeric argument 'hadoop'
这是由于hadoop组不存在 请先建hadoop组
通过cat /etc/passwd 可以查看用户的pass
cat /etc/shadow 可以查看用户名
cat /etc/group 可以查看 组

三.下面是去创建一个用户组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、增加一个新的用户组使用groupadd命令。 其格式如下:

代码:
groupadd 选项 用户组

可以使用的选项有:
代码:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例1:

代码:
# groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

例2:

代码:
#groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

2、如果要删除一个已有的用户组,使用groupdel命令, 其格式如下:

代码:
groupdel 用户组

例如:

代码:
#groupdel group1

此命令从系统中删除组group1。

3、修改用户组的属性使用groupmod命令。 其语法如下:

代码:
groupmod 选项 用户组

常用的选项有:
代码:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

例1:

代码:
# groupmod -g 102 group2

此命令将组group2的组标识号修改为102。

例2:

代码:
# groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。 例如:

代码:
$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

四.创建一个文件夹和目录

使用命令mkdir创建一个或多个文件夹

创建一个cjmuser文件夹在根目录下:mkdir 文件夹名

一次创建两个文件夹cjmuser1、cjmuser2 :mkdir 文件夹1  文件夹2

在指定目录etc下面创建文件夹cjmuser3  :mkdir  /.../.../文件名

使用mkdir命令可以创建文件夹但是创建文件就需要使用touch命令

在根目录下的test文件夹下创建一个hello.txt文件,并使用vim去修改他:

在vim下我们首先进入输入模式,输入hello然后进入可视模式进行复制和粘贴。最后使用cat来查看我们的hello.txt得到hello文件的内容。

使用mv移动文件夹,mv 文件名 指定路径 我们将根目录下test文件夹下的hello文件移动到的根目录下:

在这里有一个非常重要的地方,就是说如果你的目标文件夹下有一个同名的文件,那么他会询问你是否覆盖文件

我们先在根目录下的test文件夹中创建一个空的hello.txt文件,然后移动到到我们刚才已经有了两个hello字符串的hello.txt文件的根目录下。

如果不同意覆盖就会创建一个名字相同但是在后面会有一个 ~号的文件

使用cp命令符复制文件和目录  cp  文件名   指定复制到的路径

我们又将根目录下的hello.txx文件复制到test文件夹下:

使用rmdirrm删除文件和目录

rmdirrm的区别就是rmdir只能删除空文件夹,但是rm可以删除含有文件的文件夹。

rmdir无法删除这个非空文件夹

但是rm就可以。,参数 -rf 就是表示扫描文件夹下的全部子目录并且强制删除不做任何的提示

五.linux的文件权限

1.查看权限

当一个用户去创建一个文件或者文件夹时,那么他就是这个文件或者文件夹的属主,那么和属主在一个group中的就是属组,除去这两个就是其他人了。

对于一个文件来讲就是有三个权限可读(r)可写(w)可执行(x),那么我们来查看一个文件的三个权限通过ls -l命令查看详细信息来查看

第一列是 - 表明他是一个普通文件

我们可以看到这个hello.txt文件的详细信息的第二列,这一列就表明了这个文件的权限我们这么去读他:

rw- (属主权限) r--(属组权限) r--(其他人权限)

属主可以去读和写但是不能运行,txt文件当然不能运行。然后就是其他两个都是只能去读,所有被隔绝的权限都用 - 给代替了

数字 1 代表着他有多少个文件链接数

然后我们可以看到两个root表明了他的属主和属组,0代表为文件大小(字节),后面是上一次修改的时间

2.改变权限

1.使用chown改变文件的所有权 ,chown  新的属主:新的属组 文件名

我们将hello.txt文件改为cjm1用户和group属组,如下:

修改成功。

当然你也可以省略:group只修改属主,但是你想要只修改属组就必须保留:或者你直接使用chgrp来修改属组 chgrp  组名  文件名

2.使用chmod修改文件读写执行权限 chmod 用户组+/-权限  

用户组有   u文件属主     g文件属组      a所有

权限有      r写入             w写入           x执行

我们对hello.txt这个文件来做一次修改,现在他的权限如下:

那么我们现在让他对属组和其他人都是可写入的,那么我们就要使用+来添加权限(-是减少权限)操作如下:

发现现在hello这个文本文件对所有人都是可写可读的。

处理+/-还有 用户1=用户2那么用户1的权限就和用户2相同

六.文件类型

除了在上面看到的 - 表示的普通文件以外,Linux还有以下几种:

 d  目录      s  本地套接口    c  字符设备文件     b   块设备文件    l   符号链接    p   有名管道

七.建立链接

链接分两种一种是软连接一种是硬连接

软连接就是相当于取了一个别名当你删除这个别名时是没有任何影响的。软连接使用ln -s  文件名 引用名

我问对hello文件建立起一个软链接

那么我们现在打开hello和helloln是一样的效果

硬链接直接使用ln命令没有参数,那么你去修改两个文件中的任何一个另外一个都会去改变。

学习Linux下的文件目录管理的更多相关文章

  1. Linux下的文件目录结构详解

    Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...

  2. .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限

    一.Linux下的文件目录 简介:linux的文件系统是采用级层式的树状目录结构,在此 结构中的最上层是根目录“/”,然后在此目录下再创建 其他的目录.深刻理解linux文件目录是非常重要的,如下图所 ...

  3. 轻松学习Linux之用户账户管理及实例

    Linux用户管理基础 (下载清晰视频:http://down.51cto.com/data/158699) 轻松学习Linux之用户账户管理的实例-跨硬盘移动数据 (此处视频不清楚下按下面地址下载清 ...

  4. Linux 下权限的管理

    Linux 下权限的管理 我们都知道,Linux系统对于用户的权限管理是十分严格的. 那么,我们就来具体了解一下. 一. 用户 在Linux中按照类型用户分为两种:1.超级用户 2.普通用户 那么它们 ...

  5. 【one day one linux】linux下的软件包管理工具

    Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...

  6. Linux下的文件目录树结构

    Linux下的文件目录及文件结构 一.文件和文件夹 在Linux系统下,一切皆是文件.就连Linux本身也是基于文件表示的操作系统. 1.文件:文件在Linux系统之下,一般分为两种:一是一般性文件, ...

  7. 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)

    VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...

  8. 2019-9-12:渗透测试,基础学习,Linux下用户管理笔记

    linus用户管理/etc/passwd 保存用户信息/etc/shadow 保存密码信息,第二部分 !表示密码没有设置 cat /etc/passwd | grep xxx:查看特定账户信息 use ...

  9. linux 下配置文件目录/etc/sysconfig

    /etc/sysconfig/目录详解 2010-06-19 11:12 6693人阅读 评论(1) 收藏 举报 桌面环境debugging防火墙serviceunix语言 /etc/sysconfi ...

随机推荐

  1. IO多路复用版FTP

    需求: 实现文件上传及下载功能 支持多连接并发传文件 使用select or selectors 流程图 import socket import pickle import sys import t ...

  2. 网络传输数据序列化工具Protostuff

    一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就 ...

  3. html5 的存储

    html5提供了很多存储的功能,诸如localStorage,sessionStorage,indexedDB,还有离线缓存等,本次主要介绍离线缓存跟本地存储. 离线缓存  使用离线存储可以缓存部分文 ...

  4. How to find out which version of tensorflow is installed in my pc? - 如何找出我的电脑中安装了哪个版本的 tensorflow?

    I'm using tensorflow and have got some weired issues. I'm told it might be related to the version of ...

  5. 部署你的CRM程序

    教你发布CRM   发布CRM你将使用以下软件 nginx uWSGI CentOS7 CRM项目文件 virtualenv supervisor WSGI.uWSGI python web服务器开发 ...

  6. jquery自定义函数

    /** *jquery 的拓展方法 *//** * 给btn 添加去除disabled */$.fn.disabled = function() { $(this).each(function(ind ...

  7. Java——重写

    重写面向对象编程的三大特征之一 1.子类重写了父类的方法,则使用子类创建的对象调用该方法时,调用的是重写后的方法,即子类中的方法 2.子类重写父类方法需满足以下条件: (1)方法名和参数列表: 子类重 ...

  8. unity重写软键盘for Android NGUI

    一 原因 以为某些原因,需要重写Unity游戏中Android的软键盘的样式,然而unity对android和ios的ios的软键盘都有封装,在Unity中TouchScreenKeyboard.Op ...

  9. c#分布式ID生成器

    c#分布式ID生成器   简介 这个是根据twitter的snowflake来写的.这里有中文的介绍. 如上图所示,一个64位ID,除了最左边的符号位不用(固定为0,以保证生成的ID都是正数),还剩余 ...

  10. reinterpret_cast

    reinterpret_cast强制类型转换符 用法: new_type a = reinterpret_cast <new_type> (value) 将value的值转成new_typ ...