栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux常用命令及知识点汇总(二)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux常用命令及知识点汇总(二)

目录

1.Linux文件系统 

1.1存储结构

1.2挂载点

1.3查看磁盘使用情况

1.4硬连接和符号连接

2.磁盘操作

2.1查看磁盘分区情况

2.2磁盘分区

3.压缩与打包

3.1gzip

3.2bzip2

3.3xz

3.4tar打包

4.账号管理和ACL权限设置

4.1用户管理

4.2组管理

4.3ACL权限管理        

4.4用户身份切换

4.5用户信息传递


1.Linux文件系统 

1.1存储结构

linux文件的存储方式为

 inode:记录文件的属性(权限,大小,拥有者,时间),并且记录该文件在数据区分配的数据区的区块号数据区块:记录真正的数据,大文件占用多个区块超级区块:记录文件系统整体信息,inode与数据区的总量、使用量

目录也是一样的也有inode,但是目录数据区的内容如下

所以文件的名字是存在目录中的,inode本生不记录文件名。

使用ls命令时加上-i可查看文件和目录对应的inode

1.2挂载点

每个文件系统都有独立的inode、区块、超级区块等信息,把文件系统与目录树结合称为【挂载】,挂载点是个目录,通过该目录即可访问该文件系统。

输出ls -lid / /root /home命令,因为他们都是独立的文件系统挂载点,所以inode可以一样,且xfs文件最顶层的目录一般为64和128号,所以这三个挂载点的inode相同。

建立硬连接(cp -l)时,两个文件的inode是一样的,所以改动任意一处硬连接的数据,所有的内容都改动

1.3查看磁盘使用情况

df [文件或目录]:列出文件系统的整体磁盘使用量

df -h:以GB、MB、KB等格式进行显示df -i:不同磁盘容量显示,而是显示inode的数量df -h test:显示test文件所在文件系统的使用情况du:查看文件系统的磁盘使用量(查看目录下文件的使用情况)

-h:同上du -s:仅列出所用容量,我们可以用来统计当前目录下所占用情况,使用ls是显示的指定该目录所占容量,而不包括下面的所有文件。du -a:列出所有的文件与目录容量,因为默认只统计目录下面的文件量

1.4硬连接和符号连接

硬连接的本质就是一个数据区对应了多个文件,这多个文件的inode都指向该数据区的内容。

所以你删除一个硬连接,真正的内容不会被删除,另外一个硬连接还是可以正常访问的,但是硬连接不能跨文件系统,这点很好理解。

符号链接就是个快捷方式,当源文件被删除了符号链接就打不开了。由符号链接建立的文件会创建它独有的inode和数据区。

ln:源文件 目标文件:创建一个硬连接

ln -s:建立符号连接

2.磁盘操作

2.1查看磁盘分区情况

lsblk [磁盘文件]:列出系统上所有的磁盘列表

lsblk -f:同时列出对应的文件系统和uuidparted [磁盘文件] print:列出磁盘的分区表类型和分区信息
 

2.2磁盘分区

MBR分区表使用fdisk命令分区,GPT使用gdisk命令。使用步骤mkfs.[文件系统]  设备名称:创建文件系统

mkfs.xfs /dev/sdb1 :格式化/dev/sdb1为xfs文件系统mount [设备] [挂载的目录] :挂载文件系统

永久挂载需要修改/etc/fstab

/etc/fstab中的条目为:

[设备/UUID等] [挂载点] [文件系统] [文件系统参数] [dump?] [fsck?]

后面4个直接写默认的即可。

3.压缩与打包

tar打包文件(无压缩),压缩只能针对文件不能是目录,所以需要使用tar命令把多个文件打包为一个文件进行压缩;为了方便一般使用打包+压缩的方式,后缀为 *.tar.gz等等,Linux压缩方式有很多种,通过规范后缀名来识别文件是用的哪种压缩方式。

3.1gzip

gzip应用最广,后缀为*.gz。

gzip [参数] 文件名

-d:解压缩,也可以单纯使用gzip的解压缩命令gunzip命令进行解压缩-v:显示压缩的详细信息-#:#为1-9的数字,表示压缩等级,1速度快,但是压缩比最差,9最慢,但是压缩比最好。默认6

压缩后原始文件不保留,生成一个.gz的文件。

3.2bzip2

升级版的gzip,压缩比更高了,后缀名为.bz2。

bizp2 [参数] 文件名

-d:解压缩,或者用bunzip2命令代替-v:显示压缩的详细信息,压缩比-k:保留原始文件-#:与gzip相同

3.3xz

压缩比更高了,但是压缩的时间较长,用法一模一样,后缀为.xz。

xz [参数] 文件名

解压缩为unxz

3.4tar打包

打包命令,生成的后缀为.tar文件。

①:这三个参数只能出现一个

-c:打包-x:解包-t:查看打包文件的内容含义哪些文件名

②:打包并且压缩的参数,这三个参数最多只能出现一个

-z:通过gzip的支持进行压缩/解压缩;文件名最好为*.tar.gz-j:通过bzip2的支持进行压缩/解压缩;文件名最好为*.tar.bz2-J:通过xz的支持进行压缩/解压缩;文件名最好为*.tar.xz

其他参数:

-v:压缩/解压缩的过程中显示详细信息-f [filename]:-f后面要立刻接文件名,不能把-f参数放在前面,建议单独分出来-C 目录:用于在特点目录进行解压缩

tar命令不像压缩命令一样;tar需要自行指定文件名,且我们不要乱取名。

 示例:

单纯的打包操作,不压缩:

tar -cv -f  test.tar  aa.txt  bb:将aa.txt文件和bb目录打包为test.tar包

tar -xv -f test.tar:将test.tar包解包出来,解到当前路径下

tar -xv -f test.tar -C /etc:将test.tar解包到/etc下


打包并压缩:

tar -zcvf  t.tar.gz  aa.txt  bb:将aa.txt文件和bb目录打包为一个文件并且使用gzip进行压缩(bzip2使用-j)

tar -zxvf  t.tar.gz  :使用gzip解压缩并且解包。

只有根据包的名称知道是用何种解压缩方式,又或者是没有压缩,所以后缀是十分重要的。

从上述的规律看出,我们只需要记住:

打包使用-cvf,解包使用-xvf即可,如有压缩的情况只需记住常用的-z(gzip)、-j(bzip2)即可

4.账号管理和ACL权限设置

4.1用户管理

/etc/shadow文件示例:bin:*:18353:0:99999:7:::

每一栏的作用分别为:①账号名称、②密码、③最近修改密码日期、④密码不可被修改日期、⑤密码需要重新修改的天数、⑥密码需要修改期限前的警告天数、⑦密码过期后的宽限天数、⑧账号失效日期、⑨保留

上面的日期都是1970.1.1的间隔天数,可以使用下面的查看某日期到1970的天数

echo $(($(date -d "2015/05/04" +%s)/86400+1))

反过来查看相隔天数的日期date -d "1970/01/01 17932 days"

groups:查看当前用户所在的组,第一个显示的是初始用户组,其他的为有效用户组newgrp:切换初始用户组,当前用户必须在该组内useradd:添加新的用户,添加好后需要passwd修改密码

-u:指定uid-d:指定用户的家目录,目录不存在自动创建-g:指定用户的初始用户组,默认组名和用户名同名-G:可以指定该用户的有效用户组-s:指定shell文件-r:创建一个系统账号-D:查看useradd的默认值,该值存在于/etc/default/useradd文件中

文件①/etc/default/useradd

# useradd defaults file
GROUP=100          //默认用户组,已弃用
HOME=/home         //家目录的基准目录
INACTIVE=-1        //密码失效后的宽限日期,-1永不过期,0表示密码过期后立即失效(建议值)
EXPIRE=            //密码失效时间,这些日期都是距离1970年1月1日的天数
SHELL=/bin/bash    //默认shell
SKEL=/etc/skel     //用户家目录的模板
CREATE_MAIL_SPOOL=yes    //建立用户的邮箱,默认在/var/spool/mail下

文件②/etc/login.defs

MAIL_DIR	/var/spool/mail         //默认邮箱的放置目录
PASS_MAX_DAYS	99999               //多久需要修改密码的天数,/etc/shadow的第5栏
PASS_MIN_DAYS	0                   //多久不可重新设置密码,0随时修改,/etc/shadow的第4栏
PASS_MIN_LEN	5                   //密码最短的字符长度,已经废弃
PASS_WARN_AGE	7                   //密码失效前多少天提示用户,/etc/shadow的第6栏
UID_MIN                  1000       //使用者最小uid
UID_MAX                 60000       //最大uid
SYS_UID_MIN               201       //系统账号的最小uid
SYS_UID_MAX               999       //系统账号最大uid
GID_MIN                  1000       //用户自定义用户组的最小gid
GID_MAX                 60000       //最大gid
SYS_GID_MIN               201       //同上
SYS_GID_MAX               999    
CREATE_HOME	yes                     //是否主动建立用户家目录
UMASK           077                 //家目录的权限
USERGROUPS_ENAB yes                 //userdel删除用户时,是否删除初始用户组,前提是改组没有其他人
ENCRYPT_METHOD SHA512               //密码的加密

passwd:修改密码,root可以修改所有人的密码,使用 passwd 用户名

--stdin:通过管道的数据作为密码-l:lock该用户,即将/etc/shadow的第二栏前面加上!使密码失效u:unlock-S:列出密码相关参数-n:后面接天数,shadow的第4栏,多久不可修改密码的天数-x::shadow的第5栏,多久内必须修改密码-w:shadow第6栏,密码过期的警告天数-i:密码失效日期,shadow第7栏-e:使用户的密码失效,下次登录时必须修改密码-d:是账号无口令chage:同passwd功能差不多,修改shadow文件

-l:查看详细密码参数-d:修改shadow第3栏,最近一次修改密码的日期,设置为0可强制使用户下次登录重设密码-m:第4栏,密码最短保留天数-M:第5栏,密码多久需要重新修改-W:第6栏,密码过期前警告天数-I:第7栏,密码失效日期inactive-E:第8栏,账号失效日userdel:删除用户

-r:连同家目录一起删除,删除前最好find / -username查出该用户的文件,将其手动删除usermod:修改用户账号,就是根据实际情况更改用户的有关属性,修改文件

-c:账号的说明,即paswd第5栏-d:修改家目录,passwd第6栏-e:shadow第8栏,账号失效日-g:修改初始用户组,passwd的第4栏,同newgrp-G:修改用户支持的用户组,即修改/etc/group-a:与-G合用,添加用户组,而不是-G默认的替换,如usermod -a -G wheel  lxc-l:修改账号名称,passwd的第1栏-s:修改shell-u:设置uid,passwd第3栏-L:锁定-U:解锁

前面的useradd、usermod、userdel只能root使用

id:查看本用户的相关的uid/gid等信息,root用户可以查看别的用户信息chsh:修改当前用户的shell文件

4.2组管理

主要是管理/etc/group和/etc/gshadow两个文件。

/etc/group文件示例:lxc:x:1001:      ①组名、②密码、③gid、④组内的成员,用逗号分隔

/etc/gshadow文件示例:lxc:!::   ①组名、②密码,!表示没有密码,也表示没有用户组管理员、③用户组管理员的账号、④组内的成员,和group文件相同

groupadd:添加组

-g:特定的gid-r:建立系统用户组groupmod:修改group相关参数

-g:修改gid-n:修改名称groupdel:删除组,不能删除用户的初始用户组,如果能删也要确认一下gpasswd:用户组管理员功能,组管理员的功能是管理一个组的成员,可以管理用户加入/移除该用户组

①root做的操作有:gpasswd groupname:设置组的密码gpasswd -A user1,user2……  groupname:将-A后面参数的用户变为group的组管理员gpasswd -r groupname:删除该组的密码gpasswd -R:让组密码栏失效gpasswd -M user1,user2……  groupname:将用户加入到这个组中②组管理员可以执行的操作有:gpasswd -a user  groupname:将用户加入到这个组gpasswd -d user  groupname:将用户从这个组删除

4.3ACL权限管理        

setfacl  选项  文件名:设定ACL权限

-m:添加后面的acl参数给文件/目录,不可与-x合用-x:删除后面的acl参数-b:删除所有acl设置参数-k:删除默认的acl参数-R:递归设置子目录-d:设置默认acl参数,只对目录有效,在该目录新建的数据会引用此默认值

①针对特定用户使用【u:用户账号:权限】:setfacl -m u:lxcc:rx aa.txt。特别的如果用户账号为空代表文件拥有者。

②针对特定组使用【g:用户组名:权限】:setfacl -m g:lxc1:rw aa.txt 。同上,如果为空代表本组

③针对有效权限设置使用【m:权限】:即getfacl中的mask,用户或用户组所设置的权限必须在mask范围内存在,否则的话也不能生效。

getfacl  文件名:查看acl等信息

目录的ACL的权限默认不会继承到它的子目录或文件,如果想让子目录/文件都继承的话需要使用默认权限设置:d:[u|g:[user|group]:权限],就是在前面加上一个额外的d,即可实现继承,和-R的区别就是,新建的文件也会自动继承。

4.4用户身份切换

su  [-] [选项] [username]:身份切换命令,省略username就是切换root用户;如果中间加上-的话,就是以login shell进行登录,不加是以nologin shell启动,且当前很多环境是不会变的,所以最好加上-

-c:仅进行一次命令,后面接对应的命令,如su - -c "cat /etc/shadow" root,使用root身份临时查看shadow文件,需要先输入root的密码

sudo:允许一个已授权用户以超级用户或者其它用户的角色运行一个命令,而无需root的密码

-u:后面接预切换的用户,若无此项默认切换身份为root-b:将命令放到后台执行-l:查看当前用户能给sudo的命令

如sudo -u sshd touch /tmp/hi,用系统用户sshd的身份创建一个文件,该文件的拥有者是sshd

只有/etc/sudoers文件中指定的用户才能运行sudo这个命令,只需输入自己的密码即可开始执行

visudo:修改/etc/sudoers文件提供的命令,不建议直接vim修改。

如何修改sudoers文件?基本语法为:  使用者账号  登录者的来源主机=(可切换的身份)  可执行的命令

如root    ALL=(ALL)     ALL         :代表root用户可使用sudo,且来源主机可以是任何主机,可以切换任何人的身份去执行任何命令。

①某个用户可使用root所有命令

增加 lxc  ALL=(ALL)     ALL

②利用组批量设置

centos7默认sudoers里就有这么一行:%wheel    ALL=(ALL)    ALL,其中前面的%,代表是一个组,wheel是组名,表示只要是这个组的用户都能够执行sudo命令切换身份,执行任何操作。

③无需密码的设置

只需在按照lxc  ALL=(ALL)     NOPASSWD:ALL,就表示sudo切换身份时lxc不用输入自己的密码。

④有限制的命令操作

上面的设置可以让用户能做任何事,包括修改root的密码,不太好,我们需要加以限制。

如 lxc  ALL=(root)  /usr/bin/passwd  ,就是让lxc用户仅能够切换root,执行passwd命令,注意这里的可执行命令这一栏一定要填绝对路径,否则报错。

上面的操作并不能解决lxc能够修改root密码的问题,lxc依然能够使用 sudo passwd修改,可以使用 lxc  ALL=(root)  !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root 修改解决该问题,即lxc用户只能sudo切换为root,且不能修改root的密码

其中可以支持正则表达式,!的作用是不允许执行。 多个命令中间必须有空格。

⑤通过变量设置

前面的都是单个用户或组的设置,也可以通过变量方式设置,就是将多个用户一起定义为一个变量,如mywork,然后myworl ALL=(ALL)  xxx,来减少工作量。不一定是多个用户一个变量也可以是多个操作一个变量。

⑥sudo搭配su

可以设置一些用户可以执行的命令为 su - ,即允许他们登入管理员账号。

4.5用户信息传递

w、who:查询目前已登录在系统的用户lastlog:查询每个账号最近登录的日期,调用/var/log/lastlog文件last:查询系统最近登录的信息write:用户对谈,使用  write 对方账号  [使用者所在的终端界面],ctrl+d结束输入mesg:查看当前用户是否接收信息

n:不接受任何信息,如mesg n,当前用户就不会接收任何信息,除了root发送的y:接收信息wall:向系统上的所有在线用户发送信息mail:发送邮件,格式为【mail -s"邮件标题"  用户账号@localhost】,再输入邮件内容,最后以一个 .  结束;除了命令行输入内容外,还可以使用<重定向文件作为内容,如mial -s "hello" root@localhost < /root/a.txt。

接受者使用mail命令查看邮件,输入邮件的编号即可查看,按?显示所有可操作的按键

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号