Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4736|回复: 12
打印 上一主题 下一主题

Linux学习笔记

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2017-6-16 16:21:18 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 java 于 2017-6-16 16:25 编辑

https://www.w3cschool.cn/linux/linux-intro.html
Linux 英文解释为 Linux is not Unix。
Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX)
POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
POSIX 并不局限于 UNIX。
电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)

UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。

Linux的发行版
Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE、TurboLinux、BluePoint、RedFlag、Xterm、SlackWare等。



回复

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
13#
 楼主| 发表于 2017-6-20 12:05:14 | 只看该作者
关于Ubuntu下apt的一些用法及和yum的比较

Fedora和Red Hat有yum安装软件,Ubuntu有apt工具。

apt简单的来说,就是给Ubuntu安装软件的一种命令方式。

一、apt的相关文件
/etc/apt/sources.list设置软件包的获取来源
/etc/apt/apt.confapt配置文件
/etc/apt/apt.conf.d/apt的零碎配置文件
/etc/apt/preferences版本参数
/var/cache/apt/archives/存放已经下载的软件包
/var/cache/apt/archives/partial存放正在下载的软件包
/var/lib/apt/lists/存放已经下载的软件包详细信息
/var/lib/apt/lists/partial/存放正在下载的软件包详细信息
二、apt-get命令的子命令
update更新软件包列表
upgrade升级系统中的所有软件包
install安装软件包
remove卸载软件包
autoremove仅删除不需要再次下载的软件包
purge彻底删除软件包(包括配置文件)
source下载源代码
build-dep自动下载安装编译某个软件所需要的软件包
dist-upgrade升级整个发行版
dselect-upgrade安装dselect的选择进行升级
clean删除本地缓存的所有升级包
autoclean删除本地缓存中无用的软件包
check检查是否存在有问题的依赖关系
: $ sudo apt-get install php5-mysql apache2

$ sudo apt-get update && sudo apt-get upgrade

三、apt-get命令选项
-d,--download-only仅下载,不安装
-f,--fix-broken修复依赖问题(用于installremove子命令)
-m,--ignore-missing,--fix-missing忽略缺失的软件包。遇到无法下载的软件包,自动忽略
--no-download禁止下载软件包。与-m配合,可以使apt只使用已经下载的软件包
-q,--quiet静默模式,输出的信息适合做日志
-s,--simulate,--just-print模拟测试,不做出实际操作,不改变系统
-y,--yes,--assume-yes在系统提问时,自动应答yes
-u,--show-upgraded显示已升级的软件包
-V,--verbose-versions显示已安装和已升级的软件包的完整版本号
-b,--compile,--build在源码包下载完成后进行编译
--ignore-hold忽略被保留的软件包
--no-upgrade不要升级软件包
--force-yes强制回答yes
--print-uris仅答应软件包地址,不安装
--purge彻底删除,包括配置文件
--reinstall重新安装软件包

四、apt-cache命令

功能 : 搜索某个软件包的名字或显示某个软件包的详细信息
搜索mysql的软件包$ apt-cache search mysql
查看ssh软件包的详细版本号$ apt-cache show ssh
五、Red HatFedoraUbuntu软件包操作对比
任务Red HatFedoraUbuntu
基本信息
软件包后缀*.rpm*.deb
软件源配置文件/etc/yum.conf/etc/apt/sources.list
安装、删除、升级软件包
更新软件包列表每次运行yum时自动执行apt-get update
从软件仓库软件安装软件yum install packageapt-get install package
安装一个已下载的软件包yum install pkg.rpm

rpm -i pkg.rpm

dpkg -i pkg.deb

pkg --install pkg.deb

删除软件包rpm -e packageapt-get remove package
软件包升级检查/测试yum check-updateapt-get -s upgrade

apt-get -s dist-upgrade

升级软件包yum update

rpm -Uvh [args]

apt-get upgrade
升级整个系统yum upgradeapt-get dist-upgrade
软件包信息
获取某软件包的信息yum search packageapt-cache show package
获取所有软件包的信息yum list availableapt-cache dumpavail
显示所有已安装的软件yum list installed

rpm -qa

dpkg -l

dpkg --list

获取某个已安装软件包的信息yum info package

rpm -qi package

dpkg --status package
列出某个已安装软件包所包含的文件列表rpm -ql package
列出某个已安装软件包所包含的文档rpm -qd package
列出某个已安装软件包所包含的配置文件rpm -qc package
显示某个软件包所依赖的软件包列表rpm -qR packageapt-cache depends package
显示某个软件包的反向依赖关系rpm -q -whatrequires [args]apt-cache rdepends package
软件包文件信息
获取某个软件包文件的信息rpm -qpi pkg.rpmdpkg --info pkg.deb
获取某个软件包文件所包含的文件列表rpm -qpl pkg.rpmdpkg --contents pkg.deb
获取某个软件包文件所包含的文档rpm -qpd pkg.rpm
获取某个软件包文件所包含的配置文件rpm -qpc pkg.rpm
软件包解压rpm2cpio pkg.rpm | cpio -viddpkg-deb --extract pkg.deb
搜索某个文件是由哪个软件包安装的rpm -qf /file/namedpkg -S /file/name

dpkg --search /file/name

搜索所有提供某个文件的软件包yum provides /file/nameapt-file search /file/name
杂项
显示本地软件包缓存的状态apt-cache stats
校验所有已安装的软件包rpm -Vadebsums
删除本地缓存的所有软件包yum clean packagesapt-get clean
仅删除本地缓存中过时的软件包apt-get autoclean
删除所有软件包信息yum clean headersapt-file purge

回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
12#
 楼主| 发表于 2017-6-20 11:52:38 | 只看该作者
linux yum 命令
https://www.w3cschool.cn/linux/linux-yum.html
linux yum 命令

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 语法

yum [options] [command] [package ...]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package操作的对象。
yum常用命令

1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
实例 1

安装 pam-devel
[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies  <==先检查软件的属性相依问题 --> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz          100% |=========================| 1.6 MB    00:05
filelists.xml.gz          100% |=========================| 138 kB    00:00
-> Finished Dependency Resolution
……(省略)
实例 2

移除 pam-devel
[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies  <==同样的,先解决属性相依的问题 --> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
pam-devel               i386       0.99.6.2-4.el5   installed         495 k

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件  Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction   Erasing   : pam-devel                    ######################### [1/1]  Removed: pam-devel.i386 0:0.99.6.2-4.el5 Complete!
实例 3

利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?
[root@www ~]# yum list pam*
Installed Packages
pam.i386                  0.99.6.2-3.27.el5      installed
pam_ccreds.i386           3-5                    installed
pam_krb5.i386             2.2.14-1               installed
pam_passwdqc.i386         1.0.2-1.2.2            installed
pam_pkcs11.i386           0.5.3-23               installed
pam_smb.i386              1.1.7-7.2.1            installed
Available Packages <==底下则是『可升级』的或『未安装』的 pam.i386                  0.99.6.2-4.el5         base pam-devel.i386            0.99.6.2-4.el5         base pam_krb5.i386             2.2.14-10              base
国内 yum 源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。
安装步骤

首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份)
CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
运行以下命令生成缓存
yum clean all
yum makecache
除了网易之外,国内还有其他不错的yum源,比如中科大和搜狐。
中科大的yum源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos
sohu的yum源安装方法查看: http://mirrors.sohu.com/help/centos.html

回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
11#
 楼主| 发表于 2017-6-20 10:38:59 | 只看该作者

Linux vi/vim
https://www.w3cschool.cn/linux/linux-vim.html

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。 连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
vim 键盘图:



vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:
一般模式:
以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
编辑模式:
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
指令列命令模式:
在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!
简单的说,我们可以将这三个模式想成底下的图标来表示:




vi/vim 使用实例

使用 vi/vim 进入一般模式

如果你想要使用 vi 来建立一个名为 test.txt 的文件时,你可以这样做:
[root@www ~]# vi test.txt
直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

按下 i 进入编辑模式,开始编辑文字

在一般模式之中,只要按下 i, o, a 等字符就可以进入编辑模式了!
在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。
这个时候,键盘上除了 [Esc] 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

按下 [ESC] 按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 [Esc] 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!
在一般模式中按下 :wq 储存后离开 vi

OK,我们要存档了,存盘并离开的指令很简单,输入『:wq』即可保存离开!

OK! 这样我们就成功创建了一个 test.txt 的文件。是不是很简单。
vi/vim 按键说明

除了上面简易范例的 i, [Esc], :wq 之外,其实 vim 还有非常多的按键可以使用。
第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等


移动光标的方法
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + 屏幕『向上』移动半页
+光标移动到非空格符的下一列
-光标移动到非空格符的上一列
n那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
nn 为数字。光标向下移动 n 行(常用)
搜寻与取代
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
:n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
删除、复制与贴上
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd删除游标所在的那一整列(常用)
nddn 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
y1G复制游标所在列到第一列的所有数据
yG复制游标所在列到最后一列的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J将光标所在列与下一列的数据结合成同一列
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
.不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
第二部份:一般模式切换到编辑模式的可用的按钮说明
进入插入或取代的编辑模式
i, I进入插入模式(Insert mode):
i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
a, A进入插入模式(Insert mode):
a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
o, O进入插入模式(Insert mode):
这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)
r, R进入取代模式(Replace mode):
r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!
[Esc]退出编辑模式,回到一般模式中(常用)
第三部份:一般模式切换到指令列模式的可用的按钮说明
指令列的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!
特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。



回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
10#
 楼主| 发表于 2017-6-19 18:09:10 | 只看该作者
本帖最后由 java 于 2017-6-20 09:22 编辑

Linux 磁盘管理
https://www.w3cschool.cn/linux/linux-filesystem.html

Linux磁盘管理好坏管理直接关系到整个系统的性能问题。
Linux磁盘管理常用三个命令为df、du和fdisk。
df:列出文件系统的整体磁盘使用量   df -aTh  挂载及容量
du:检查磁盘空间使用量
fdisk:用于磁盘分区   fdisk -l 查看系统分区情况

其它相关命令
lsblk -l
sudo pvdisplay
sudo lvdisplay




df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
实例 1


将系统内所有的文件系统列出来!
[root@www ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm
在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
实例 2


将容量结果以易读的容量格式显示出来
[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm
实例 3


将系统内的所有特殊文件格式及名称都列出来
[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs
实例 4


将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[root@www ~]# df -h /etc
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
du


inux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法:
du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
实例 1


列出目前目录下的所有文件容量
[root@www ~]# du
8       ./test4     <==每个目录都会列出来 8       ./test2 ....中间省略.... 12      ./.gconfd   <==包括隐藏文件的目录 220     .           <==这个目录(.)所占用的总量
直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。
实例 2


将文件的容量也列出来
[root@www ~]# du -a
12      ./install.log.syslog   <==有文件的列表了 8       ./.bash_logout 8       ./test4 8       ./test2 ....中间省略.... 12      ./.gconfd 220     .
实例 3


检查根目录底下每个目录所占用的容量
[root@www ~]# du -sm /*
7       /bin
6       /boot
.....中间省略....
0       /proc
.....中间省略....
1       /tmp
3859    /usr     <==系统初期最大就是他了啦! 77      /var
通配符 * 来代表每个目录。
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。
fdisk


fdisk 是 Linux 的磁盘分区表操作工具。
语法:
fdisk [-l] 装置名称
选项与参数:
-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
实例 1


列出所有分区信息
[root@AY120919111755c246621 tmp]# fdisk -l


Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1        2550    20480000   83  Linux
/dev/xvda2            2550        2611      490496   82  Linux swap / Solaris


Disk /dev/xvdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x56f40944


    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb2               1        2610    20964793+  83  Linux
实例 2


找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
[root@www ~]# df /            <==注意:重点在找出磁盘文件名而已
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc2              9920624   3823168   5585388  41% /  
[root@www ~]# fdisk /dev/hdc  <==仔细看,不要加上数字喔!
The number of cylinders for this disk is set to 5005.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs   
    (e.g., DOS FDISK, OS/2 FDISK)  


Command (m for help):     <==等待你的输入!
输入 m 后,就会看到底下这些命令介绍
Command (m for help): m   <== 输入 m 后,就会看到底下这些命令介绍
Command action   
   a   toggle a bootable flag   
   b   edit bsd disklabel   
   c   toggle the dos compatibility flag   
   d   delete a partition            <==删除一个partition   
   l   list known partition types   
   m   print this menu   
   n   add a new partition           <==新增一个partition   
   o   create a new empty DOS partition table   
   p   print the partition table     <==在屏幕上显示分割表   
   q   quit without saving changes   <==不储存离开fdisk程序   
   s   create a new empty Sun disklabel   
   t   change a partition's system id   
   u   change display/entry units   
   v   verify the partition table   
   w   write table to disk and exit  <==将刚刚的动作写入分割表   
   x   extra functionality (experts only)
离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。
Command (m for help): p  <== 这里可以输出目前磁盘的状态  


Disk /dev/hdc: 41.1 GB, 41174138880 bytes        <==这个磁盘的文件名与容量
255 heads, 63 sectors/track, 5005 cylinders      <==磁头、扇区与磁柱大小
Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小   
   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1   *           1          13      104391   83  Linux
/dev/hdc2              14        1288    10241437+  83  Linux
/dev/hdc3            1289        1925     5116702+  83  Linux
/dev/hdc4            1926        5005    24740100    5  Extended
/dev/hdc5            1926        2052     1020096   82  Linux swap / Solaris
# 装置文件名 启动区否 开始磁柱    结束磁柱  1K大小容量 磁盘分区槽内的系统  


Command (m for help): q
想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!
使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。
磁盘格式化


磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。
语法:
mkfs [-t 文件系统格式] 装置文件名
选项与参数:
-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
实例 1


查看 mkfs 支持的文件格式
[root@www ~]# mkfs[tab][tab]
mkfs         mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.msdos   mkfs.vfat
按下两个[tab],会发现 mkfs 支持的文件格式如上所示。
实例 2


将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:
[root@www ~]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Filesystem label=                <==这里指的是分割槽的名称(label)
OS type: Linux Block size=4096 (log=2)          <==block 的大小配置为 4K  
Fragment size=4096 (log=2)
251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量
25101 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=515899392
16 block groups 32768 blocks per group,
32768 fragments per group
15712 inodes per group
Superblock backups stored on blocks:         
        32768, 98304, 163840, 229376, 294912  


Writing inode tables: done
Creating journal (8192 blocks): done <==有日志记录
Writing superblocks and filesystem accounting information: done  


This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!
磁盘检验


fsck(file system check)用来检查和维护不一致的文件系统。
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
语法:
fsck [-t 文件系统] [-ACay] 装置名称
选项与参数:
-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
-C : 显示完整的检查进度
-d : 打印出 e2fsck 的 debug 结果
-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V : 详细显示模式
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复
-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。
实例 1


查看系统有多少文件系统支持的 fsck 命令:
[root@www ~]# fsck[tab][tab]
fsck         fsck.cramfs  fsck.ext2    fsck.ext3    fsck.msdos   fsck.vfat
实例 2


强制检测 /dev/hdc6 分区:
[root@www ~]# fsck -C -f -t ext3 /dev/hdc6
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。



磁盘挂载与卸除
Liunx采用树形的文件管理系统,也就是在Linux系统中,可以说已经没有分区的概念了。分区在Linux和其他设备一样都只是一个文件。要使用一个分区必须把它加载到文件系统中。这可能难于理解,继续往下看。
Linux中树形的文件结构,最顶层是/ 目录。在安装系统时,你必须选择把一个主分区挂载在/ 目录下,因为系统需要安装在/挂载的主分区下。否则系统会提示你。这里又一次提到了挂载。所以挂载就是把目录和分区连接起来,和上面说的WINDOWS下的映射关系是一样的。不同的是WINDOWS是把分区映射到一个盘符,而LINUX下是映射到一个目录。 这是理解他们不同最重要的地方,而导致不同的是因为文件系统结构不同。
上面说了Linux的文件系统是树形的,安装的系统必须是在/ 目录下,因为/目录下挂载了一个主分区。/目录是树形的根,其他所有目录都是他的子节点。 我们安装系统的时候已经把分区1挂载到 / 目录下了. 而这个时候没有挂载其他任何分区,所以/ 目录下的所有其他目录都在这个分区下,也就是说,我在任何目录下读写操作实际都是操作的这个1号分区。如果我们想使用其他分区,就必须把这个分区挂载到一个目录下,这个目录可以是已经存在的目录,比如/home,也可以是我们自己建立的目录,比如/oracle。当然有些目录比如/lib, /dev, /etc, /usr这些都不能挂载其他分区,因为他们都存放着系统需要的文件,一旦被挂载其他分区,那没OS就无法找到所需的文件,系统就会崩溃。比如我们把分区2挂载到/usr/X11目录下时,系统就无法通过X11目录找到分区1上的文件,这个时候系统图形界面就无法使用了. 虽然文件还在硬盘上。前面说过,目录 --- 分区 是通过挂载吧他们联系起来。你更换了分区,也就破坏了联系,就无法在找到之前的文件了。我们在看分区5和分区6,我们把它挂载到/home/ftp 和 /oracle目录下,这个时候我们在操作这2个目录是,就是操作对用的分区了.
而WINDOWS就没这么复杂,她不是采用树形的结构,每个分区对应一个盘符,一旦建立映射关系就无法在修改。实际上,LINUX的每个挂载了分区的目录就相当于WINDOWS系统中的盘符,比如上面的,/home/ftp 和 /oracle目录我们就可以把她看做一个盘符和一个分区关联,只是因为LINUX文件系统,使得她更加灵活,所以也更复杂和难以理解。
df 命令可以查看分区挂载情况, fdisk 命令可以查看系统分区情况。
LINUX下所有设备都被认为是文件,而/dev目录存放所有系统设备文件的,而一个分区就是一个文件,名字就是分区的名字.


Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。
磁盘挂载语法:
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点
实例 1


用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!
[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中间省略.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6
磁盘卸载命令 umount 语法:
umount [-fn] 装置文件名或挂载点
选项与参数:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-n :不升级 /etc/mtab 情况下卸除。
卸载/dev/hdc6
[root@www ~]# umount /dev/hdc6     



回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
9#
 楼主| 发表于 2017-6-19 17:23:22 | 只看该作者
本帖最后由 java 于 2017-6-19 17:24 编辑

Linux 用户和用户组管理

https://www.w3cschool.cn/linux/linux-user-manage.html
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。
  1. 一、Linux系统用户账号的管理

  2. 用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
  3. 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
  4. 1、添加新的用户账号使用useradd命令,其语法如下:

  5. useradd 选项 用户名
  6. 参数说明:
  7. 选项:
  8. -c comment 指定一段注释性描述。
  9. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  10. -g 用户组 指定用户所属的用户组。
  11. -G 用户组,用户组 指定用户所属的附加组。
  12. -s Shell文件 指定用户的登录Shell。
  13. -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  14. 用户名:
  15. 指定新账号的登录名。
  16. 实例1

  17. # useradd –d /usr/sam -m sam
  18. 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
  19. 实例2

  20. # useradd -s /bin/sh -g group –G adm,root gem
  21. 此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
  22. 这里可能新建组:#groupadd group及groupadd adm
  23. 增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
  24. Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
  25. 3、删除帐号

  26. 如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
  27. 删除一个已有的用户账号使用userdel命令,其格式如下:
  28. userdel 选项 用户名
  29. 常用的选项是-r,它的作用是把用户的主目录一起删除。
  30. 例如:
  31. # userdel sam
  32. 此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
  33. 4、修改帐号

  34. 修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
  35. 修改已有用户的信息使用usermod命令,其格式如下:
  36. usermod 选项 用户名
  37. 常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
  38. 另外,有些系统可以使用选项:-l 新用户名
  39. 这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
  40. 例如:
  41. # usermod -s /bin/ksh -d /home/z –g developer sam
  42. 此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
  43. 5、用户口令的管理

  44. 用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
  45. 指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
  46. passwd 选项 用户名
  47. 可使用的选项:
  48. -l 锁定口令,即禁用账号。
  49. -u 口令解锁。
  50. -d 使账号无口令。
  51. -f 强迫用户下次登录时修改口令。
  52. 如果默认用户名,则修改当前用户的口令。
  53. 例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
  54. $ passwd
  55. Old password:******
  56. New password:*******
  57. Re-enter new password:*******
  58. 如果是超级用户,可以用下列形式指定任何用户的口令:
  59. # passwd sam
  60. New password:*******
  61. Re-enter new password:*******
  62. 普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
  63. 为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
  64. 为用户指定空口令时,执行下列形式的命令:
  65. # passwd -d sam
  66. 此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
  67. passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
  68. # passwd -l sam
  69. 二、Linux系统用户组的管理

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

  73. groupadd 选项 用户组
  74. 可以使用的选项有:
  75. -g GID 指定新用户组的组标识号(GID)。
  76. -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
  77. 实例1:

  78. # groupadd group1
  79. 此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
  80. 实例2:

  81. # groupadd -g 101 group2
  82. 此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
  83. 2、如果要删除一个已有的用户组,使用groupdel命令,其格式如下:

  84. groupdel 用户组
  85. 例如:

  86. # groupdel group1
  87. 此命令从系统中删除组group1。
  88. 3、修改用户组的属性使用groupmod命令。其语法如下:

  89. groupmod 选项 用户组
  90. 常用的选项有:
  91. -g GID 为用户组指定新的组标识号。
  92. -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  93. -n新用户组 将用户组的名字改为新名字
  94. 实例1:

  95. # groupmod -g 102 group2
  96. 此命令将组group2的组标识号修改为102。
  97. 实例2:

  98. # groupmod –g 10000 -n group3 group2
  99. 此命令将组group2的标识号改为10000,组名修改为group3。
  100. 4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

  101. 用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
  102. $ newgrp root
  103. 这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
  104. 三、与用户账号有关的系统文件

  105. 完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
  106. 与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。
  107. 下面分别介绍这些文件的内容。
  108. 1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

  109. Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
  110. 这个文件对所有用户都是可读的。它的内容类似下面的例子:
  111. # cat /etc/passwd

  112. root:x:0:0:Superuser:/:
  113. daemon:x:1:1:System daemons:/etc:
  114. bin:x:2:2:Owner of system commands:/bin:
  115. sys:x:3:3:Owner of system files:/usr/sys:
  116. adm:x:4:4:System accounting:/usr/adm:
  117. uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
  118. auth:x:7:21:Authentication administrator:/tcb/files/auth:
  119. cron:x:9:16:Cron daemon:/usr/spool/cron:
  120. listen:x:37:4:Network daemon:/usr/net/nls:
  121. lp:x:71:18:Printer administrator:/usr/spool/lp:
  122. sam:x:200:50:Sam san:/usr/sam:/bin/sh
  123. 从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
  124. 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  125. 1)"用户名"是代表用户账号的字符串。

  126. 通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。
  127. 为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  128. 2)“口令”一些系统中,存放着加密后的用户口令字。

  129. 虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
  130. 3)“用户标识号”是一个整数,系统内部用它来标识用户。

  131. 一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
  132. 通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  133. 4)“组标识号”字段记录的是用户所属的用户组。

  134. 它对应着/etc/group文件中的一条记录。
  135. 5)“注释性描述”字段记录着用户的一些个人情况。

  136. 例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
  137. 6)“主目录”,也就是用户的起始工作目录。

  138. 它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  139. 7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

  140. Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
  141. 系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
  142. 用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
  143. 利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
  144. 8)系统中有一类用户称为伪用户(psuedo users)。

  145. 这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
  146. 常见的伪用户如下所示:
  147. 伪 用 户 含 义
  148. bin 拥有可执行的用户命令文件
  149. sys 拥有系统文件
  150. adm 拥有帐户文件
  151. uucp UUCP使用
  152. lp lp或lpd子系统使用
  153. nobody NFS使用
  154. 拥有帐户文件

  155. 1、除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。

  156. 由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
  157. 2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

  158. 它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:
  159. 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  160. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
  161. "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  162. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  163. "最小时间间隔"指的是两次修改口令之间所需的最小天数。
  164. "最大时间间隔"指的是口令保持有效的最大天数。
  165. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  166. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  167. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
  168. 下面是/etc/shadow的一个例子:
  169. # cat /etc/shadow

  170. root:Dnakfw28zf38w:8764:0:168:7:::
  171. daemon:*::0:0::::
  172. bin:*::0:0::::
  173. sys:*::0:0::::
  174. adm:*::0:0::::
  175. uucp:*::0:0::::
  176. nuucp:*::0:0::::
  177. auth:*::0:0::::
  178. cron:*::0:0::::
  179. listen:*::0:0::::
  180. lp:*::0:0::::
  181. sam:EkdiSECLWPdSa:9740:0:0::::
  182. 3、用户组的所有信息都存放在/etc/group文件中。

  183. 将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
  184. 每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
  185. 当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
  186. 用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
  187. 用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
  188. 组名:口令:组标识号:组内用户列表
  189. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  190. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  191. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
  192. "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
  193. /etc/group文件的一个例子如下:
  194. root::0:root
  195. bin::2:root,bin
  196. sys::3:root,uucp
  197. adm::4:root,adm
  198. daemon::5:root,daemon
  199. lp::7:root,lp
  200. users::20:root,sam
  201. 四、添加量用户批

  202. 添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:
  203. (1)先编辑一个文本用户文件。

  204. 每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:
  205. user001::600:100:user:/home/user001:/bin/bash
  206. user002::601:100:user:/home/user002:/bin/bash
  207. user003::602:100:user:/home/user003:/bin/bash
  208. user004::603:100:user:/home/user004:/bin/bash
  209. user005::604:100:user:/home/user005:/bin/bash
  210. user006::605:100:user:/home/user006:/bin/bash
  211. (2)以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:

  212. # newusers < user.txt
  213. 然后可以执行命令 vipw 或 vi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。
  214. (3)执行命令/usr/sbin/pwunconv。

  215. 将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password 功能。
  216. # pwunconv
  217. (4)编辑每个用户的密码对照文件。

  218. 范例文件 passwd.txt 内容如下:
  219. user001:密码
  220. user002:密码
  221. user003:密码
  222. user004:密码
  223. user005:密码
  224. user006:密码
  225. (5)以root身份执行命令 /usr/sbin/chpasswd。

  226. 创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏。
  227. # chpasswd < passwd.txt
  228. (6)确定密码经编码写入/etc/passwd的密码栏后。

  229. 执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow。
  230. # pwconv
  231. 这样就完成了大量用户的创建了,之后您可以到/home下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确。
复制代码
回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
8#
 楼主| 发表于 2017-6-19 16:39:23 | 只看该作者
Linux 文件与目录管理
Linux 文件与目录管理

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法啦!
处理目录的常用命令

接下来我们就来看几个常见的处理目录的命令吧:
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的。
语法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
选项与参数:
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等https://www.w3cschool.cn/linux/linux-file-content-manage.html等数据;(常用)
将家目录下的所有文件列出来(含属性与隐藏档)
[root@www ~]# ls -al ~
cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
#使用 mkdir 命令创建w3cschool.cn目录
[root@www ~]# mkdir w3cschool.cn

#使用绝对路径切换到w3cschool.cn目录
[root@www ~]# cd /root/w3cschool.cn/

#使用相对路径切换到w3cschool.cn目录
[root@www ~]# cd ./w3cschool.cn/

# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www w3cschool.cn]# cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
接下来大家多操作几次应该就可以很好的理解 cd 命令的。
pwd (显示目前所在的目录)

pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。
[root@www ~]# pwd [-P]
选项与参数:
-P  :显示出确实的路径,而非使用连结 (link) 路径。

范例:单纯显示出目前的工作目录:
[root@www ~]# pwd
/root   <== 显示出目录啦~  

范例:显示出实际的工作目录,而非连结档本身的目录名而已
[root@www ~]# cd /var/mail   <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail         <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
语法:
mkdir [-mp] 目录名称
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
范例:请到/tmp底下尝试创建数个新目录看看:
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test    <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':  
No such file or directory       <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4
加了这个 -p 的选项,可以自行帮你创建多层目录!
范例:创建权限为rwx--x--x的目录
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。
rmdir (删除空的目录)

语法:
rmdir [-p] 目录名称
选项与参数:
-p :连同上一级『空的』目录也一起删除
删除 w3cschool.cn 目录
[root@www tmp]# rmdir w3cschool.cn/
范例:将於mkdir范例中创建的目录(/tmp底下)删除掉!
[root@www tmp]# ls -l   <==看看有多少目录存在?
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test   <==可直接删除掉,没问题
[root@www tmp]# rmdir test1  <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l        <==您看看,底下的输出中test与test1不见了!
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。
不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。
cp (复制文件或目录)

cp 即拷贝文件和目录。
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
-a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用於目录的复制行为;(常用)
-s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u :若 destination 比 source 旧才升级 destination !
用root身份,将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashr
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==n不覆盖,y为覆盖
rm (移除文件或目录)

语法:
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
将刚刚在 cp 的范例中创建的 bashrc 删除掉!
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
mv (移动文件与目录,或修改名称)

语法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2
Linux 文件内容查看

Linux系统中使用以下命令来查看文件的内容:
cat  由第一行开始显示文件内容
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl   显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
cat

由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:
[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
tac

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
[root@www ~]# tac /etc/issue

Kernel \r on an \m
CentOS release 6.4 (Final)
nl

显示行号
语法:
nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
范例一:用 nl 列出 /etc/issue 的内容
[root@www ~]# nl /etc/issue
     1  CentOS release 6.4 (Final)
     2  Kernel \r on an \m
more

一页一页翻动
[root@www ~]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%)  <== 重点在这一行喔!你的光标也会在这里等待你的命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter         :代表向下翻『一行』;
/字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f            :立刻显示出档名以及目前显示的行数;
q             :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less

一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
:   <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
空白键    :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;
head

取出文件前面几行
语法:
head [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
[root@www ~]# head /etc/man.config
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~]# head -n 20 /etc/man.config
tail

取出文件后面几行
语法:
tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config

https://www.w3cschool.cn/linux/linux-file-content-manage.html
回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
7#
 楼主| 发表于 2017-6-19 16:06:34 | 只看该作者
本帖最后由 java 于 2017-6-19 16:13 编辑

Linux 文件基本属性
https://www.w3cschool.cn/linux/linux-file-attr-permission.html.
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
  1. [root@www /]# ls -l
  2. total 64
  3. dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
  4. dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
  5. ……
复制代码

实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。

从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

Linux文件属主和属组

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,bin文件是一个目录文件,属主和属组都为root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
更改文件属性

1、chgrp:更改文件属组

语法:
chgrp [-R] 属组名文件名
参数选项
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件属主,也可以同时更改文件属组

语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
  1. [root@www ~] cd ~
  2. [root@www ~]# chown bin install.log
  3. [root@www ~]# ls -l
  4. -rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log
复制代码
将install.log的拥有者与群组改回为root:
  1. [root@www ~]# chown root:root install.log
  2. [root@www ~]# ls -l
  3. -rw-r--r--  1 root root 68495 Jun 25 08:53 install.log
复制代码
3、chmod:更改文件9个属性


Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

  1. [root@www ~]# ls -al .bashrc
  2. -rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
  3. [root@www ~]# chmod 777 .bashrc
  4. [root@www ~]# ls -al .bashrc
  5. -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
复制代码
那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。
符号类型改变文件权限
还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦! 那么我们就可以藉由u, g, o来代表三种身份的权限!
此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

chmodu
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录
如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
  1. [root@www ~]# ls -al .bashrc
  2. -rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
  3. [root@www ~]# chmod  a+w  .bashrc
  4. [root@www ~]# ls -al .bashrc
  5. -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
复制代码
而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
  1. [root@www ~]# chmod  a-x  .bashrc
  2. [root@www ~]# ls -al .bashrc
  3. -rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc
复制代码


回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
6#
 楼主| 发表于 2017-6-19 15:25:17 | 只看该作者
Linux 远程登录https://www.w3cschool.cn/linux/linux-remote-login.html
Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器。
这事我们就需要远程登录到Linux服务器来管理维护系统。
Linux系统中是通过ssh服务实现的远程登录功能,默认ssh服务端口号为 22。
Window系统上 Linux 远程登录客户端有SecureCRT, Putty, SSH Secure Shell等,本文以Putty为例来登录远程服务器。
putty下载地址:http://www.putty.org/
如果你下载了putty,请双击putty.exe 然后弹出如下的窗口。
在Host Name( or IP address) 下面的框中输入你要登录的远程服务器IP(可以通过ifconfig命令查看服务器ip),然后回车。
此时,提示我们输入要登录的用户名。
输入root 然后回车,再输入密码,就能登录到远程的linux系统了。

使用密钥认证机制远程登录linux
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定。
SSH 为建立在应用层和传输层基础上的安全协议。
首先使用工具 PUTTYGEN.EXE 生成密钥对。打开工具PUTTYGEN.EXE后如下图所示:
该工具可以生成三种格式的key :SSH-1(RSA) SSH-2(RSA) SSH-2(DSA) ,我们采用默认的格式即SSH-2(RSA)。Number of bits in a generated key 这个是指生成的key的大小,这个数值越大,生成的key就越复杂,安全性就越高。这里我们写2048.
然后单击Generate 开始生成密钥对:
注意的是,在这个过程中鼠标要来回的动,否则这个进度条是不会动的。
到这里,密钥对已经生成了。你可以给你的密钥输入一个密码,(在Key Passphrase那里)也可以留空。然后点 Save public key 保存公钥,点 Save private Key 保存私钥。笔者建议你放到一个比较安全的地方,一来防止别人偷窥,二来防止误删除。接下来就该到远程linux主机上设置了。
1)创建目录 /root/.ssh 并设置权限
[root@localhost ~]# mkdir /root/.ssh mkdir 命令用来创建目录,以后会详细介绍,暂时只了解即可。
[root@localhost ~]# chmod 700 /root/.ssh chmod 命令是用来修改文件属性权限的,以后会详细介绍。
2)创建文件 / root/.ssh/authorized_keys
[root@localhost ~]# vim /root/.ssh/authorized_keys vim 命令是编辑一个文本文件的命令,同样在后续章节详细介绍。
3)打开刚才生成的public key 文件,建议使用写字板打开,这样看着舒服一些,复制从AAAA开头至 "---- END SSH2 PUBLIC KEY ----" 该行上的所有内容,粘贴到/root/.ssh/authorized_keys 文件中,要保证所有字符在一行。(可以先把复制的内容拷贝至记事本,然后编辑成一行载粘贴到该文件中)。
在这里要简单介绍一下,如何粘贴,用vim打开那个文件后,该文件不存在,所以vim会自动创建。按一下字母"i"然后同时按shift + Insert 进行粘贴(或者单击鼠标邮件即可),前提是已经复制到剪切板中了。粘贴好后,然后把光标移动到该行最前面输入ssh-ras ,然后按空格。再按ESC,然后输入冒号wq 即 :wq 就保存了。格式如下图:
4)再设置putty选项,点窗口左侧的SSh –> Auth ,单击窗口右侧的Browse… 选择刚刚生成的私钥, 再点Open ,此时输入root,就不用输入密码就能登录了。
如果在前面你设置了Key Passphrase ,那么此时就会提示你输入密码的。为了更加安全建议大家要设置一个Key Passphrase。

回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
5#
 楼主| 发表于 2017-6-19 15:13:16 | 只看该作者

Linux 忘记密码解决方法


此时已经进入到单用户模式了,你可以更改root密码了。更密码的命令为 passwd


使用系统安装光盘的救援模式

https://www.w3cschool.cn/linux/linux-forget-password.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-5 22:12 , Processed in 0.087078 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表