linux常用命令
- root:该目录为系统管理员HOME目录
- bin:这个目录下放着经常使用的命令 linux bin跟我们的jdk的bin目录一样 都是存放我们命令
- boot:这里存放的是启动Linux时的一些核心文件
- etc:存放系统管理所需要的配置文件和子目录
- home:普通用户的HOME目录
- usr:默认安装软件的目录,类似Windows中的Program Files(x86)Program Files目录
- opt:是主机额外安装软件拜访的目录 自定义安装
ls [-ald] [目录名]
# 目录名不填写,默认为当前目录。
# -a:列出的全部的文件,包括隐藏文件
# -l:列举出全部的信息 也可以采用ll
# -d:仅查看目录本身
# 只能删除空目录
rmdir 目录名
# 删除非空目录
rm [-rf] 目录名
# -r:代表递归删除目录下的全部内容
# -f:不询问,直接删除
cp -r 来源目录 目标目录
# -r:递归复制全部内容,必填项
mv 目录名 新目录名 | 路径
# 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动
touch 文件名1 文件名2 ……
vi 文件名 # 查看文件。(查看模式)
i | a | o # 进入编辑模式。(编辑模式)
# i:在当前光标处,进入编辑模式。
# a:在当前光标后一格,进入编辑模式。
# o:在当前光标下一行,进入编辑模式。
esc # 退出编辑模式,回到查看模式。
: # 从查看模式进入到底行命令模式。(底行命名模式)
# 在底行命令模式下,输入wq:保存并退出。输入q!:不保存并退出
# 在查看模式下,摁ZZ,可以快速保存并退出。
# 在vi文件时,在底行命令模式下可以输入以下常用内容
# 行号操作
set nu # 查看文件的行号
to rownum # 快速的跳转到指定行
set nonu # 取消行号
# 搜索操作
/word (重点) # 类似Windows的Ctrl + F搜索文件中的具体内容所在位置,查看下一个可以输入字母n 从光标一下 开始搜索 去掉低行:
# 快速定位
G # 快速跳转到最后一行
gg # 快速跳转到第一行
查看文件
# 查看文件,直接展示到最后一行
cat 文件名(重点)
# 从第一行开始查看文件内容,展示全部
tac 文件名
# 从最后一行开始展示
nl 文件名
大文件
# 显示文件的用时,展示行号
more 文件名
# 查看大文件时,可以一页一页的向下翻
# 嗯space向下翻页,退出时摁q
less 文件名(重点)
# 查看大文件时,可以任意的向上或者向下翻
# 向上或向下翻页摁PageUp和PageDown,一行一行查看,摁光标的↑↓
退出时摁q
# 只查看前几行
head 文件名
# 只查看后几行
tail 文件名(重点)
# tail -f 日志 +行号 监控日志(重点)
linux系统通过uid,gid,groups来标识一个用户。
1.uid
user identification,用户id,也叫用户标识,就像人的身份证号码一样,不可重复。
[0] :超级用户,linux系统默认都自动将root创建为超级用户;
[1-999] :虚拟用户,系统保留的uid范围值(不同的版本,可能有不同的范围,如RHEL8中这个范围是1-999)负责某些服务程序的启动和运行,一般不需要登陆;
[1000-n] :普通用户,当我们创建第一个普通用户时uid默认从1000开始。
2.gid
group identification,默认用户组id,也叫默认用户组标识,可以将不同的用户都加入到同一个用户组中,每个用户也可以加入多个用户组,但只能有1个默认用户组。系统在创建用户时,会自动创建一个与用户同名的默认用户组。
3.groups
用户所加入的用户组集合,linux一个用户可以加入多个用户组,除了一个默认用户组(gid对应的用户组),其他用户组都成为附加用户组。注意groups与gid是包含与被包含的关系。
二、几个重要文件
linux用户信息可以与以下几个文件相关联
1./etc/passwd
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。它的内容部分显示如下:
[root@hollowman ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:密码:用户id:组id:注释性描述:家目录:登录Shell
1) "用户名"是代表用户账号的字符串。
2) “密码”是这里存放着加密后的用户口令字。
虽然这个字段存放的只是用户密码的加密字符串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如RHEL)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”,上面显示的就是使用shadow技术的结果。
通过pwunconv和pwconv命令可以关闭和开启shadow技术
3) “用户id”也就是uid。
4) “组id”也就是gid。它对应着/etc/group文件中的一条记录。
5) “注释性描述”字段记录着用户的一些个人情况。
6) “家目录”,也就是用户的起始工作目录。
7) 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell),``csh(C Shell), ksh(Korn Shell),tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统会指定一个默认的登陆Shell,如RHEL默认指定bash(/bin/bash)。
2./etc/shadow
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
[root@hollowman ~]# cat /etc/shadow
root:$6$..中间字符串省略..g1F0::0:99999:7:::
bin:*:17784:0:99999:7:::
daemon:*:17784:0:99999:7:::
adm:*:17784:0:99999:7:::
lp:*:17784:0:99999:7:::
sync:*:17784:0:99999:7:::
shutdown:*:17784:0:99999:7:::
halt:*:17784:0:99999:7:::
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。
登录名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
1)"登录名"是与/etc/passwd文件中的登录名相一致的用户账号
2)"密码"字段存放的是加密后的用户密码。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
3)"最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。
4)"最小时间间隔"指的是两次修改口令之间所需的最小天数。
5)"最大时间间隔"指的是口令保持有效的最大天数。
6)"警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)"不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)"失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
3./etc/group
用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个用户组中可以有多个用户,一个用户也可以属于不同的用户组。但是
当一个用户同时是多个用户组的成员时,在/etc/passwd文件中只记录该用户的默认用户组,也就是gid。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
[root@hollowman ~]# cat /etc/group
root:x:0:hollowman,hollow
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
/etc/group文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段:
用户组名:密码:用户组id:组内用户列表
1)"用户组名"是用户组的名称,由字母或数字构成。
2)"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
3)"用户组id",用户组唯一的标识号。
4)"组内用户列表"是属于将该用户组名作为附加用户组的的所有用户的集合,不同用户之间用逗号(,)分隔,如果将该用户组作为默认用户组,则不会体现在该集合中,因为在/etc/passwd中体现了。
三、有关命令
1.id
可以通过id username命令来查看用户的uid,gid和groups
[root@hollowman ~]# id hollowman
uid=1000(hollowman) gid=1000(hollowman) groups=1000(hollowman)
#括号内为分别对应用户名、组名、群组名
2.useradd
可以通过useradd命令来创建一个新的用户,语法:useradd [选项] 用户名
增加用户账号其实就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
有关选项:
-d :指定用户的家目录(默认为/home/username)
-u :指定用户的uid
-g :指定一个默认用户组(必须已经存在)
-G :指定一个或多个附加用户组
-s :指定用户的默认Shell解释器
以下命令为:创建1个用户hollowson,家目录为/home/huyong,组为1000,将-s设置为/sbin/nologin表示该用户不能登陆
[root@hollowman ~]# useradd -d /home/huyong -g 1000 -s /sbin/nologin hollowson
[root@hollowman ~]# id hollowson
uid=1001(hollowman0) gid=1000(hollowman) groups=1000(hollowman)
3.usermod
修改用户属性,语法:usermod [选项] 用户名
usermod的选项和useradd的选项基本相同,只是将创建改为了修改
[root@hollowman home]# usermod -s /bin/bash hollowson
#将hollowson用户修改为可登陆
4.userdel
该命令可以删除linux用户,也就是将系统相关文件中(主要是/etc/passwd, /etc/shadow, /etc/group等文件)该用户的记录删除,必要时还删除用户的主目录。语法:userdel [选项] 用户名
当该用户的用户组被其他用户也设置成用户组时,则只删除用户,不删除用户组,并打印错误提示。
选项:
-f :强制删除用户
-r :将主目录一起删除
[root@hollowman ~]# userdel -r hollowson
5.groupadd
groupadd命令用于创建新的用户组,语法:groupadd [选项] 组名
6.groupdel
groupdel命令用于删除用户组,当用户组还被其他用户也设置成用户组时,则删除不成功。
7.passwd
指定和修改用户的密码。新建用户时由于没有指定密码(即使用-p参数指定的密码也是加过密的密码,谁能知道密码加密后是什么呢?谁又知道加过密的密码解密后是什么呢?),所以用passwd指定或修改密码直接暴力。
超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。语法:passwd [选项] [用户名]
选项:
空 :设置密码
-l :lock,锁定或者说禁用用户。
-u :unlock,解锁用户。
-d :使用户无密码。没有密码的用户也是无法登陆的。
-f :强迫用户下次登录时修改密码。
apt-get:
apt-get 是 Debian 及其派生发行版(如Ubuntu)上的包管理工具。
它使用 .deb 包格式来管理和安装软件包。
apt-get 的命令行工具用于更新软件包列表、安装、升级和卸载软件包。
通常在 Debian 和 Ubuntu 系统中使用。
yum:
yum 是 Red Hat 及其派生发行版(如Fedora、CentOS)上的包管理工具。
它使用 .rpm 包格式来管理和安装软件包。
yum 的命令行工具用于管理软件包的安装、升级和卸载,以及依赖关系解析。
通常在 Red Hat 系列的Linux发行版中使用。
brew:
brew 是 macOS 上的包管理工具,也被称为 Homebrew。
它使用自己的包格式,通常是 .rb 或 .sh 脚本,用于安装软件包。
brew 的目标是为 macOS 用户提供一个简单的方式来安装和管理开源软件包,包括开发工具。
通常在 macOS 系统中使用,但也可用于 Linux。