学习Linux下的文件目录管理
文件目录管理
一.认识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文件夹下:
使用rmdir和rm删除文件和目录
rmdir和rm的区别就是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下的文件目录管理的更多相关文章
- Linux下的文件目录结构详解
Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...
- .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限
一.Linux下的文件目录 简介:linux的文件系统是采用级层式的树状目录结构,在此 结构中的最上层是根目录“/”,然后在此目录下再创建 其他的目录.深刻理解linux文件目录是非常重要的,如下图所 ...
- 轻松学习Linux之用户账户管理及实例
Linux用户管理基础 (下载清晰视频:http://down.51cto.com/data/158699) 轻松学习Linux之用户账户管理的实例-跨硬盘移动数据 (此处视频不清楚下按下面地址下载清 ...
- Linux 下权限的管理
Linux 下权限的管理 我们都知道,Linux系统对于用户的权限管理是十分严格的. 那么,我们就来具体了解一下. 一. 用户 在Linux中按照类型用户分为两种:1.超级用户 2.普通用户 那么它们 ...
- 【one day one linux】linux下的软件包管理工具
Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...
- Linux下的文件目录树结构
Linux下的文件目录及文件结构 一.文件和文件夹 在Linux系统下,一切皆是文件.就连Linux本身也是基于文件表示的操作系统. 1.文件:文件在Linux系统之下,一般分为两种:一是一般性文件, ...
- 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...
- 2019-9-12:渗透测试,基础学习,Linux下用户管理笔记
linus用户管理/etc/passwd 保存用户信息/etc/shadow 保存密码信息,第二部分 !表示密码没有设置 cat /etc/passwd | grep xxx:查看特定账户信息 use ...
- linux 下配置文件目录/etc/sysconfig
/etc/sysconfig/目录详解 2010-06-19 11:12 6693人阅读 评论(1) 收藏 举报 桌面环境debugging防火墙serviceunix语言 /etc/sysconfi ...
随机推荐
- ERP新人防坑指南
本文作为初入ERP行业的新人的防坑指南,讲解了一些常见犯的错,这样也少走一些弯路,如果你是老鸟,请绕过 :-) 本文关联的代码使用kotlin编写,请自行转换为c#.java等你熟悉的语言,表述的坑在 ...
- RS485转USB插电脑上通讯不上
在确定没有其他问题时,基本可以确定是干扰问题,换个24V电源试试,不要用原来的线 485接口确定,好坏通过两个相反对接,发送信息,两边一致,就可以
- hdu第4场j.Let Sudoku Rotate
Problem J. Let Sudoku Rotate Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Su ...
- STL 小白学习(10) map
map的构造函数 map<int, string> mapS; 数据的插入:用insert函数插入pair数据,下面举例说明 mapStudent.insert(pair<, &qu ...
- Gulp 之图片压缩合并
同事需要处理很多的图片,由于UI那边提供图片比较大,为了性能好一点,程序包小一点,因此希望我帮忙做成小程序来完成此工作. 其实之前做过一个grunt写的图片压缩合并工具,当时是为了处理270多个国家/ ...
- NPOI 关于Excel的学习
1.传送门:http://blog.csdn.net/guo_lover/article/details/52399570
- JQuery 方法合集(懒人备记)
原创文章,转载请私信.谢谢~ PS:请将jquery的引用文件放在head的标签内 语法:$(selector).action() $(document).ready(function(){ // 开 ...
- laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题
在Model里面加上下面这句,强制读主(写)库数据库,解决主从延迟问题. public static function boot() { //清空从连接,会自动使用主连接 DB::connection ...
- mybatis源码解析之Configuration加载(一)
概要 上一篇,我们主要搭建了一个简单的环境,这边我们主要来分析下mybatis是如何来加载它的配置文件Configuration.xml的. 分析 public class App { public ...
- HYPERSPACE
Windows中,不管是应用程序还是内核程序,都不能直接访问物理内存,所有非IO指令都只能访问虚拟内存地址,如Mov eax, DWORD PTR[虚拟地址]形式,但是,有时候,我们明明已经知道了某个 ...