Linux
一、 Linux账号管理
1.添加用户
使用者权限:管理员用户 root
useradd 选项 用户名
参数说明:
-
选项:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
用户名:
指定新账号的用户名(后续我们可以使用这个用户名进行系统登录)。
添加用户xiaohei执行
useradd xiaohei
我们使用useradd命令创建了一个用户xinzhi
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。
执行如下
以下是useradd常用选项
2.用户口令:
使用者权限:管理员用户
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
设置当前用户的口令
passwd xiaohei
此处我们设置密码 xiaohei666 (注意密码必须高于8位,不能简单的都是数字,不然报错)
修改用户
usermod 命令通过修改系统帐户文件来修改用户账户信息
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
使用者权限:管理员用户
修改已有用户的信息使用usermod
命令,其格式如下:
usermod 选项 用户名
下面命令将用户xiaohei用户名修改成xiaobai
usermod -l 新用户名 旧用户名
usermod -l xiaobai xiaohei
以下是usermod常用选项
删除用户
假如我们其中一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
使用者权限:管理员用户
删除一个已有的用户账号使用userdel
命令,其格式如下:
userdel 选项 用户名
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件
此命令删除用户xiaobai(建议加上-rf)
userdel xiaobai
成功删除用户 xiaobai
以下是userdel常用选项
Linux用户组
增加用户组
新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中
使用者权限:管理员用户
groupadd 选项 用户组
使用的选项有:
-
-g GID 指定新用户组的组标识号(GID)。
-
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
新增用户组heibaizu
groupadd heibaizu
以下是groupadd常用选项
修改用户组
使用者权限:管理员用户‘
groupmod 选项 用户组
常用的选项有:
-
-g GID 为用户组指定新的组标识号。
-
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-
-n新用户组 将用户组的名字改为新名字
-
groupmod -n 新组名 旧组名
groupmod -n honglanzu heibaizu
上面的命令将组heibaizu的组名改为honglanzu
以下是groupmod常用选项
要查询一个用户属于哪个用户组,使用groups命令,其格式如下
groups 用户名
这里先增加一个用户xiaohong
查询用户xiaohong属于某个用户组,执行groups命令
由此可见,xiaohong用户属于用户组xiaohong(用户组默认与用户名一样)
删除用户组
使用者权限:管理员用户
要删除一个已有的用户组,使用groupdel命令,其格式如下
groupdel 用户组
删除honglanzu用户组,注意不能删除xiaohong的用户组
groupdel honglanzu
以下是groupdel常用选项
将用户添加到组
1.已经存在的用户添加到组中 usermod -a -G 组名 用户名
usermod -a -G honglan xiaohong
执行效果如下
这里增加一个组 honglan
2 新用户添加到指定组 useradd -g 组名 新用户名
useradd -g honglan xiaolan
系统管理
- 日期管理
date 可以用来显示或设定系统的日期与时间
使用者权限:所有用户
语法如下:
date [参数选项]
参数
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
–help:在线帮助;
–version:显示版本信息
1、设置时间
用 -s选项可以设置系统时间,如下:
世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
2 查看时间
date
显示用户
logname命令用于显示用户名称。
执行logname指令,它会显示目前用户的名称
语法为如下:
logname [--help][--version]
参数:
- –help 在线帮助。
- –vesion 显示版本信息。
显示登录账号的信息
logname
su切换账户
引子:
比如我们在新增用户、修改用户或者操作用户组的时候常常需要切换到管理员账户,这个时候,我们就可以使用su进行快速切换
su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
使用权限:所有使用者。
语法如下:
su
从root管理员权限切换到其他用户,直接 su 用户名
su xiaohong
切换到root
exit
如果你最初登录的不是管理员则用
su root ,然后输入密码
这样的话,我们就进入到了root用户下。
sudo执行
sudo执行
yum install lrzsz -y
上传,直接拖拽
下载 sz 文件名
提高普通用户的操作权限
比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的
sudo:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限
使用者权限:普通用户
语法如下:
sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
sudo command
参数说明:
- -V 显示版本编号
- -h 会显示版本编号及指令的使用方式说明
- -l 显示出自己(执行 sudo 的使用者)的权限
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
- -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
- -b 将要执行的指令放在背景执行
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
- -H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
top命令
在企业级开发中,开发人员(运维人员也会经常使用)常常为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行
top命令用于实时显示 process 的动态。
使用权限:所有使用者。
显示进程信息
top
执行效果如下
各进程(任务)的状态监控属性解释说明:
PID:进程ID
USER:进程的所有者
PR:进程的优先级
NI:
VIRT:占用的虚拟内存
RES:占用的物理内存
SHR:使用的共享内存
S:进行状态 S:休眠 R运行 Z僵尸进程 N nice值为负
%CPU:占用的CPU
%MEM:占用内存
TIME+: 占用CPU的时间的累加值
COMMAND:启动命令
显示指定的进程信息,以下显示进程号为6972的进程信息,CPU、内存占用率等
top -p 1
执行效果如下
top命令的用法很多
但是常用的就是top(不带参数),有的时候,在进程比较多的时候,我们常常记住进程的pid,然后通过top -p pid进行查看
也就是说,top+ top -p是经常被用到的
ps命令
ps命令类似于我们在Windows中通过任务管理器查看进程信息
Linux ps命令用于显示当前进程 (process) 的状态信息
使用者权限:所有用户
常用语法如下:
ps -ef | grep 进程名称
kill命令
Linux kill命令用于删除执行中的程序或工作(可强制中断)
使用者权限:所有用户
语法如下:
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
- -l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
杀死一个进程
kill - 9 进程号
一般配合ps使用,ps 可以查到进程的pid
clear命令
clear命令用于清除屏幕
使用者权限:所有使用者都可使用。
语法
clear
执行clear前
执行clear后
通过执行clear命令,就可以把缓冲区的命令全部清理干净了
系统管理的常用命令都是在开发过程中经常使用到的
Linux 文件与目录管理
在Linux系统中,所有的的目录结构为树状结构,最顶级的目录为根目录 /。
在实际开发过程中,文件的操作是非常频繁也是非常重要的
下面的章节我们将学习下Linux系统所有的系统目录和文件通过命令是如何进行管理的
目录常用命令
- ls: 列出目录
- cd: 切换目录
- pwd: 显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录或修改文件与目录的名称
1. ls语法如下:
ls [选项] 目录名称
选项与参数:
- -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
ls -l
执行效果如下
ls -l
可以查看文件夹下文件的详细信息, 从左到右 依次是:
- 权限(A区域), 第一个字符如果是
d
表示目录 - 硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件
- 属主(C区域), 文件是所有者、或是叫做属主
- 属组(D区域), 文件属于哪个组
- 大小(E区域):文件大小
- 时间(F区域):最后一次访问时间
- 名称(G区域):文件的名称
ls
总结
以上三种是经常被使用到的命令
它们之间的区别是
ls 显示不隐藏的文件与文件夹
ls -l 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息
2. pwd显示当前目录
查看当前所在目录
pwd -P
执行效果如下
3.cd (切换目录)
语法如下:
cd [相对路径或绝对路径]
4.mkdir(创建目录)
语法
mkdir [-p] dirName
参数说明:
- -p 确保目录名称存在,不存在的就建一个
建立一个名为jinyanlong 的子目录
mkdir video
执行效果如下
在工作目录下的 aaa目录中,建立一个名为 bbb的子目录。 若 aaa目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 aaa目录不存在,则产生错误。)
mkdir -p aaa/bbb
5. rmdir(删空目录)
rmdir命令删除空的目录
使用权限:于目前目录有适当权限的所有使用者。
语法
rmdir [-p] dirName
参数:
- -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
将工作目录下,名为 jinyanlong 的子目录删除 :
rmdir video
在工作目录下的 aaa目录中,删除名为 bbb的子目录。若 bbb删除后,aaa目录成为空目录,则 aaa同时也会被删除
rmdir -p aaa/bbb
总结:
rmdir -p aaa/bbb也就是说
在删除bbb目录完成后,发现aaa目录也是空目录了,在删除完bbb后aaa也同时被删除了。
6.cp(文件复制)
cp命令主要用于复制文件或目录。
使用权限:于目前目录有适当权限的所有使用者
语法
cp [options] source dest
或
cp [options] source... directory
参数说明:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
我们将当前目录"aaa/"下的所有目录以及文件复制到新目录"ccc"下,输入如下命令:
1、数据准备
创建aaa目录并且aaa下包含bbb目录
mkdir -p aaa/bbb
mkdir -p ccc
执行效果如下
aaa目录下有bbb
ccc下面没有目录和文件
2、执行复制
cp –r aaa/* ccc
执行效果如下
我们将aaa下面的所有文件、目录复制到了目录c下面
总结:
用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
如果不加参数"-r"或者"-R",只复制文件,而略过目录
scp root@82.157.173.221:/usr/local/elasticsearch-7.12.1-linux-x86_64.tar.gz /home
7.rm(删除目录)
rm命令用于删除一个文件或者目录。
使用权限:于目前目录有适当权限的所有使用者
语法
rm [options] name...
参数:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
常用 rm -rf 文件 (删除命令慎重使用)
8) mv(移动文件)
mv 命令用来为文件或目录改名、或将文件或目录移入其它位置
语法
mv [options] source dest
mv [options] source... directory
参数说明:
- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
- -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
9.touch 文件名 创建文件
Linux 文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
下面我们就一起学习下Linux系统不同权限的文件和目录在怎么表示的
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
ls -l
在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文件属主和属组
chown更改属主和属组
我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限(属主)
我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组(属组),然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的
Linux是多任务操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限
使用权限 : 管理员账户
语法如下
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chown han a.txt
效果如下
我们通过下面的命令查询文件aaa的属主是否发生了变化,执行
ls -l
chmod权限命令
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。
使用权限 : 所有使用者
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下
[ugoa...][[+-=][rwxX]...][,...]
解释:
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
1 数字权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下
各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0
每种身份(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)的持续变更,亦即连同次目录下的所有文件都会变更
上面的 可以表示如下
chmod -R 770 档案或目录
上面说了这么多,我们举例说明一下:
chmod -R 777 a.txt
由此可见,as.txt的属主权限、属组权限、其他权限都发生了改变
根据前面的换算我们已经知道如何将一个文件的属主、属组、其他权限换算成数字了,换算成数字后,我们只需要通过chmod命令即可更改文件的权限
2 符号权限
还有一个改变权限的方法,就是 符号权限,我们先回顾下之前提到的9个权限
- (1)user 属主权限
- (2)group 属组权限
- (3)others 其他权限
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看
如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
chmod u=rx,g=rw,o=r a.txt
由上图我们发现,as.txt的权限变成了-rwxr-xr–
假如我们要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则
chmod o-r a.txt
执行如下