Linux

Linux

基本操作命令

首先先来几个热键,非常方便,一定要记住

  • Tab:按键—命令补齐功能。没有歧义,系统自动补全。有歧义,再按一下 Tab ,系统会提示可能存在的命令。

  • Ctrl+c:按键—停掉正在运行的程序

  • Ctrl+d:按键—相当于exit,退出

  • Ctrl+l:按键—清屏

  • Ctrl + Shift + :放大终端窗口的字体显示

  • Ctrl + -: 缩小终端窗口的字体显示

关机和重启

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

正确的关机流程为:sync > shutdown > reboot > halt

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

注意:不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

目录操作命令

树状目录结构

Linux的一切资源都挂载在这个 / 根节点下。

img

以下是对这些目录的解释:

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin: 系统用户使用的应用程序。
  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src: 内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。

绝对路径与相对路径

绝对路径:由根目录 / 写起,例如: /usr/share/doc 这个目录。

相对路径:不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man

目录的常用命令

命令对应英文作用
lslist查看当前目录下的内容
pwdprint work directory查看当前所在目录
cd[目录名]changge directory切换目录
mkdir[目录名]make directory创建目录
rmdir[目录名]remove directory删除空的目录
rm[文件名]remove删除指定文件
cp [来源档] [目标档]copy复制
mv [来源档] [目标档]move移动文件与目录,或修改名称
find [路径] -name “*.py”find查找指定路径下扩展名是 .py 的文件,包括子目录。可搭配通配符使用
touch[文件名]touch如果文件不存在,新建文件

ls :查看当前目录下的内容

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
选项与参数:
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
ccc  li  redis  www
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls -a
.  ..  ccc  li  redis  www
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls -l
total 0
drwxr-xr-x 2 root  root  17 May 27 17:10 ccc
drwxr-xr-x 3 root  root  27 May 28 17:07 li
drwx------ 2 redis redis 62 May  8 20:57 redis
drwx------ 3 www   www   87 May  8 20:58 www

pwd :查看当前所在目录

[root@kuangshen kuangstudy]#pwd [-P]
选项与参数:
--P :显示出确实的路径,而非使用连接(link) 路径。

测试:

[root@kuangshen ~]# pwd
/root
# 如果是链接,要显示真实地址,可以使用 -P参数
[root@kuangshen /]# cd bin
[root@kuangshen bin]# pwd -P
/usr/bin

cd :切换目录

cd [相对路径或绝对路径]

mkdir :创建新目录

mkdir [-mp] 目录名称
选项与参数:
- -m :配置文件的权限!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

测试:

# 进入我们用户目录下
[root@kuangshen /]# cd /home

# 创建一个 test 文件夹
[root@kuangshen home]# mkdir test

# 创建多层级目录
[root@kuangshen home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory  # <== 没办法直接创建此目录啊!

# 加了这个 -p 的选项,可以自行帮你创建多层目录!
[root@kuangshen home]# mkdir -p test1/test2/test3/test4

# 创建权限为 rwx--x--x 的目录。
[root@kuangshen home]# mkdir -m 711 test2
[root@kuangshen home]# ls -l
drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
drwx--x--x 2 root root  4096 Mar 12 21:58 test2

rmdir:删除空的目录

rmdir [-p] 目录名称
选项与参数:
--p :连同上一级『空的』目录也一起删除

测试:

# 可直接删除掉,没问题
[root@kuangshen home]# rmdir test

# 因为尚有内容,所以无法删除!
[root@kuangshen home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty

# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@kuangshen home]# rmdir -p test1/test2/test3/test4

注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

rm :移除文件或目录

rm [-fir] 文件或目录
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

测试:

# home中的bbb删除掉!
[root@kuangshen home]# rm -i bbb
rm: remove regular file ‘bbb’? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

# 尽量不要在服务器上使用 rm -rf /

cp :复制

语法:

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

测试:

# 复制 home目录下的bbb 到 home目录下
[root@iZbp15ifhbdv6ruyp94qeiZ home]# cp ccc/bbb ./
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  ccc  li  redis  www

mv :移动文件与目录,或修改名称

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

测试:

# 将复制过来的文件移动到我们创建的目录,并查看
[root@kuangshen home]# mv install.sh test
[root@kuangshen home]# cd test
[root@kuangshen test]# ls
install.sh

# 将文件夹重命名,然后再次查看!
[root@kuangshen test]# cd ..
[root@kuangshen home]# mv test mvtest
[root@kuangshen home]# ls
mvtest

find:查找文件

find [路径] -name [名字]

测试:

#如果省略路径,表示在当前文件夹下查找,包括子目录。
[root@iZbp15ifhbdv6ruyp94qeiZ home]# find -name bbb
./ccc/bbb
./li/bbb
./bbb
#搜索home目录下,以b结尾的文件
[root@iZbp15ifhbdv6ruyp94qeiZ home]# find -name *b
./ccc/bbb
./li/bbb
./bbb
#搜索home目录下,包含i的文件 这是错误的写法需要双引号
[root@iZbp15ifhbdv6ruyp94qeiZ home]# find -name *i*
find: paths must precede expression: redis
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
#搜索home目录下,包含i的文件 这是错误的写法需要双引号
[root@iZbp15ifhbdv6ruyp94qeiZ home]# find -name '*i*'
./www/.bash_profile
./www/.oracle_jre_usage/aa694b02fe91242e.timestamp
./redis
./redis/.bash_profile
./li

打包和压缩和解压

Windows的压缩文件的扩展名 .zip/.rar

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

tar:打包

[root@localhost ~]#tar [选项] 源文件或目录
选项与参数:
-c	将多个文件或目录进行打包。
-A	追加 tar 文件到归档文件。
-f 包名	指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v	显示打包文件过程;

测试:

# 选项 "-cvf" 一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用 ".tar" 作为扩展名。打包目录也是如此:
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar -cvf test.tar test
test/
test/test1
test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test  test.tar  www

tar:解包

[root@localhost ~]#tar [选项] 压缩包
选项与参数:
-x	对 tar 包做解打包操作。
-f	指定要解压的 tar 包的包名。
-t	只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。
-C 目录	指定解打包位置。
-v	显示解打包的具体过程。

测试:

#解打包到当前目录下
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar -xvf test.tar 
test/
test/test1
test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test  test.tar  www
#把文件包test.tar解打包到test/目录下
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar -xvf test.tar  -C test/
test/
test/test1
test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# cd test/
[root@iZbp15ifhbdv6ruyp94qeiZ test]# ls
test  test1  test2
[root@iZbp15ifhbdv6ruyp94qeiZ test]# cd test/
[root@iZbp15ifhbdv6ruyp94qeiZ test]# ls
test1  test2
# 如果只想查看文件包中有哪些文件,则可以把解打包选项 "-x" 更换为测试选项 "-t"。例如:
[root@iZbp15ifhbdv6ruyp94qeiZ test]# cd /home/
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar -tvf test.tar 
drwxr-xr-x root/root         0 2021-06-17 16:35 test/
-rw-r--r-- root/root         0 2021-06-17 16:35 test/test1
-rw-r--r-- root/root         0 2021-06-17 16:35 test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# 

tar:打包压缩和解包解压

[root@localhost ~]#tar [选项] 压缩包 源文件或目录
选项与参数:
-z:压缩和解压缩 ".tar.gz" 格式;
-j:压缩和解压缩 ".tar.bz2"格式。

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test  www
#打包并压缩,通过"-z"来识别格式,"-cvf"和打包选项一致
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar -zcvf test.tar.gz  test
test/
test/test1
test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test  test.tar.gz  www
#删除test包,让解压产生test包
[root@iZbp15ifhbdv6ruyp94qeiZ home]# rm -rf test
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test.tar.gz  www
#解压并解包
[root@iZbp15ifhbdv6ruyp94qeiZ home]# tar zxvf test.tar.gz 
test/
test/test1
test/test2
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  test  test.tar.gz  www

基本属性

看懂文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@iZbp15ifhbdv6ruyp94qeiZ test1]# ll
total 0
drwxr-xr-x 2 root root 6 Jun 15 22:14 test2
drwx-w-rwx 2 root root 6 Jun 15 22:18 test3

img

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

  • [ d ]则是目录
  • [ - ]则是文件;
  • [ l ]则表示为链接文档 ( link file );
  • [ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
  • [ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

  • [ r ]代表可读(read)
  • [ w ]代表可写(write)
  • [ x ]代表可执行(execute)。
  • [ - ]代表没有权限

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

修改文件属性

**chgrp:**更改文件属组

chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

**chown:**更改文件属主,也可以同时更改文件属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

**chmod:**更改文件9个属性

chmod [-R] xyz 文件或目录
#Linux文件属性有两种设置方法,一种是数字,一种是符号。Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。其中,我们可以使用数字来代表各个权限,r:4   w:2  x:1。chmod 770 filename

文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行

cat :由第一行开始显示文件内容

cat [-AbEnTv]
选项与参数:
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# cat bbb 
nnnnn
dlkjfskjldlkjdfssa
jsdflkjsklfjdlska
jjjjjjjaajjjjjiii
jjjjiii      jjjjjjji

tac:文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

[root@iZbp15ifhbdv6ruyp94qeiZ home]# tac bbb 
jjjjiii      jjjjjjji
jjjjjjjaajjjjjiii
jsdflkjsklfjdlska
dlkjfskjldlkjdfssa
nnnnn

head :取出文件前面几行

head [-n number] 文件
选项与参数:
-n 后面接数字,代表显示几行的意思!默认,显示前10行!

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# head -n 2 bbb 
nnnnn
dlkjfskjldlkjdfssa

tail: 取出文件后面几行

tail [-n number] 文件
选项与参数:
-n 后面接数字,代表显示几行的意思!默认,显示前10行!

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# tail -n 2 bbb 
jjjjjjjaajjjjjiii
jjjjiii      jjjjjjji

拓展:Linux 链接概念

文件软硬链接示意图

img

硬连接

A 是 B 的硬链接(A 和 B 都是文件名),则 A,B两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。只有当最后一个文件名删除时,文件才会被删除。

软连接

软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。如果指向的文件被删除了,它仍然存在,但指向的是一个无效的链接。

#建立文件的链接
ln -s 被链接的源文件 链接文件
选项与参数:
-s 选项建立的是一个软链接文件。没有-s是硬链接。
注意:源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用。

文本编辑器vim

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

三种模式切换

  • 命令模式(Command mode):启动 vim,便进入了命令模式。输入ZZ退出。
  • 输入模式(Insert mode):命令模式下按 i, o, a 等字符就可以进入输入模式了。退出输入模式按ESC,切换到命令模式。
  • 底线命令模式(Last line mode):命令模式下按 :切换到底线命令模式,以在最底一行输入命令。退出底线命令模式按ESC,切换到命令模式。

img

Vim 按键说明

命令模式:搜索替换等

搜索替换说明
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。

输入模式

进入输入或取代的编辑模式
i, I进入输入模式:i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
a, A进入输入模式:a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O进入输入模式:o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R进入取代模式:r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
[Esc]退出编辑模式,回到一般模式中(常用)

底线命令模式

指令行的储存、离开等指令
w保存
w!强制保存。不过,到底能不能保存, 还是跟你对该档案的档案权限有关!
q退出vim
q!强制退出vim。惊叹号 (!) 在 vim当中,常常具有『强制』的意思~
w [filename]将编辑的数据储存成另一个档案(类似另存新档)
r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。

账号管理

  • $:表示普通用户

  • #:表示超级用户,也就是root用户

useradd:添加账号

useradd 选项 用户名
参数与选项 :
 -c comment 指定一段注释性描述。
 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
 -g 用户组 指定用户所属的用户组。
 -G 用户组,用户组 指定用户所属的附加组。
 -m 使用者目录如不存在则自动建立。
 -s Shell文件 指定用户的登录Shell。
 -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

测试:

# 此命令创建了一个用户lijiejie,其中-m选项用来为登录名lijiejie产生一个主目录 /home/lijiejie
[root@iZbp15ifhbdv6ruyp94qeiZ home]# useradd -m lijiejie
[root@iZbp15ifhbdv6ruyp94qeiZ home]# cd /home/
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  lijiejie  redis  www

su:切换用户

su username 【username是你的用户名哦】

2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户。
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# su lijiejie
[lijiejie@iZbp15ifhbdv6ruyp94qeiZ home]$ exit
[root@iZbp15ifhbdv6ruyp94qeiZ home]# 

userdel:删除帐号

userdel 选项 用户名
参数与选项 :
 -r,它的作用是把用户的主目录一起删除。

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ ~]# userdel -r lijiejie
[root@iZbp15ifhbdv6ruyp94qeiZ ~]# cd /home/
[root@iZbp15ifhbdv6ruyp94qeiZ home]# ls
bbb  redis  www

usermod:修改帐号

usermod 选项 用户名
参数与选项 :
-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,

测试:

[root@iZbp15ifhbdv6ruyp94qeiZ home]# usermod -d /home/jie lijiejie

passwd:用户口令的管理

passwd 选项 用户名                           #如果默认用户名,则修改当前用户的口令
参数与选项 :
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。。

测试:

#root用户修改lijiejie密码
[root@iZbp15ifhbdv6ruyp94qeiZ home]# passwd lijiejie
Changing password for user lijiejie.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
#lijiejie用户修改自己密码
[root@iZbp15ifhbdv6ruyp94qeiZ home]# su lijiejie
[lijiejie@iZbp15ifhbdv6ruyp94qeiZ home]$ passwd 
Changing password for user lijiejie.
Current password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

用户组管理

groupadd:添加用户组

groupadd 选项 用户组
参数与选项 :
- -g GID 指定新用户组的组标识号(GID)。
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

实例1:

# groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

实例2:

# groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

groupdel:删除用户组

groupdel 用户组

例如:

# groupdel group1

groupmod:修改用户组

groupmod 选项 用户组
参数与选项 :
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
# 此命令将组group2的组标识号修改为102。
groupmod -g 102 group2

# 将组group2的标识号改为10000,组名修改为group3。
groupmod –g 10000 -n group3 group2

newgrp:切换组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

$ newgrp root

用户相关的系统文件

/etc/passwd:/etc/passwd文件中记录了每个用户的一些基本属性。这个文件对所有用户可读。

下面我们来看一下这个文件的内容

[root@iZbp15ifhbdv6ruyp94qeiZ home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
.........
........
mysql:x:1001:1001::/home/mysql:/sbin/nologin
redis:x:1002:1002::/home/redis:/sbin/nologin
lijiejie:x:1003:1003::/home/lijiejie:/bin/bash

/etc/passwd中每行记录被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  1. 用户名:用户账号。长度不超过8个字符,由大小写字母和/或数字组成。
  2. 口令:“x” 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
  3. 用户标识号:每个用户都有唯一的一个 UID。用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99用于系统自行创建的账号,100~499 分配给有系统账号需求的用户。
  4. 组标识号:记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
  5. 注释性描述:记录着用户的一些个人情况。
  6. 主目录:用户的起始工作目录。root 超级管理员账户的主目录为 /root,普通用户的主目录为 /home/yourIDname
  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,那么系统使用bash(/bin/bash)为默认的登录Shell。

/etc/shadow:存放加密后的用户口令。只有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

所有伪用户的密码都是 “!!” 或 “*”,代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”。

[root@iZbp15ifhbdv6ruyp94qeiZ home]# cat /etc/shadow
root:$6$KgCod2xVhqi.lOLF$wt0lAIYCEchF1v2utw/uxTNDk32M2okrF1QYLL9GMCvtJt0CDmh7BjEjKqSv7ptfp/AtubEHiOlcpKeV06I9o/:18795:0:99999:7:::
bin:*:18397:0:99999:7:::
.........
........
mysql:!!:18755:0:99999:7:::
redis:!!:18755:0:99999:7:::
lijiejie:$6$9bo56.JErvWkSU5v$1aCcnG1p69UjYhUbDDwvKjqLZQs9M3wdvveNDnO9O4nGnVMJB/8Sitw73wrGUP.Y3R2HQVuyksxaYswdUlIBx1:18795:0:99999:7:::
登录名:加密口令:最后一次修改时间:最小时间间隔:密码有效期:警告时间:密码过期后的宽限时间:失效时间:保留字段
  1. 最后一次修改时间:以 1970 年 1 月 1 日作为 1 不断累加得到的时间
  2. 最小时间间隔:指的是两次修改口令之间所需的最小天数。默认值 0,密码可以随时修改;
  3. 密码有效期:密码的有效期天数,密码过期前必须变更密码,否则该密码进行过期阶段。默认值 99999,可认为是永久生效。
  4. 警告时间:当密码有效期快到时,系统会发出警告信息给此账户,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。默认值 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 “修改密码” 的警告信息。
  5. 密码过期后的宽限时间:在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。
  6. 失效时间:自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
  7. 保留字段:这个字段目前没有使用,等待新功能的加入。

/etc/group:存放用户组的所有信息。

[root@iZbp15ifhbdv6ruyp94qeiZ ~]# cat /etc/group
root:x:0:
bin:x:1:
.........
........
mysql:x:1001:
redis:x:1002:
docker:x:985:
cgred:x:984:
lijiejie:x:1003:
组名:口令:组标识号:组内用户列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值