Linux常用命令

系统信息

  1. who am i :查看当前使用的终端
  2. uname -m :显示机器的处理器架构(如x86_64)
  3. cat /proc/version :查看linux版本信息(uname --all)
  4. ifconfig :显示或设置网卡(查ip等)(类似windows中ipconfig)
  5. ping -c 3 www.baidu.com :测试百度与本机的连接情况( -c 3表示测试3次)
  6. cat /proc/cpuinfo :显示CPU的信息
  7. top :动态实时显示cpu、内存、进程等使用情况(类似windows下的任务管理器)
  8. top -d 2 -p 7427 :-d为画面更新的秒数,默认5秒,-p为指定进程pid的信息
  9. free -h :查看系统内存及虚拟内存使用情况
  10. df -h :显示磁盘的空间使用情况
  11. kill -9 进程号 :强制杀死进程
  12. systemctl :查看正在运行的服务
  13. mysql -V:查看MySQL版本

系统目录结构

  1. bin:保存可执行文件,即常用操作命令,所有用户都有执行权限
  2. boot:引导目录:引导系统启动,包含操作系统的内核文件,驱动、插件模块
  3. dev:所有的硬件设备:硬盘、显卡和声卡均被抽象为一个文件
  4. etc:几乎所有的配置文件,纯文本、以conf结尾
  5. home:所有用户的家目录,保存用户的私有数据,每个用户都有一个以用户名作为文件夹,保存该用户的所有信息(桌面、音乐、图片等)
  6. root:root用户的家目录
  7. lib:所有Linux运行的相关库文件
  8. media:自动挂载
  9. opt:空文件夹,用于装大型软件
  10. proc:存放实时信息,不存在硬盘上,虚拟文件夹,只存在内存中,以进程号命名的文件夹
  11. sbin:只有root才能执行里面的命令(比如磁盘分区)
  12. tmp:临时目录,隔段时间会自动删除
  13. usr:保存应用软件

文件和目录

1.创建、删除文件

  • 通过touch创建
  • 通过rm命令可以删除文件:①-i交互式,会提示②-r递归的删除包括目录中的所有内容  ③-f强制删除,没有警告提示

  2.创建、删除目录

  • mkdir -p ./dir1/dir2 :递归创建目录(-p:父目录不存在时,同时建立)
  • 通过rmdir命令删除一个空目录
  • 通过rm -r(-f)删除一个非空目录,如:rm -rf * 为删除当前目录下所有文件

  3.复制文件、目录

  • 使用cp命令复制文件或目录:cp 源文件(文件夹) 目标文件名(文件夹)
  • 常用参数:-r:递归复制整个目录树;-v:显示复制的详细信息

 

4.移动、重命名文件或目录

  • mv 文件 目标目录

  • 如果指定文件名,则可以重命名文件

 

  • 在当前目录重命名

 

5.列出目录内容

  • ls -a:显示所有文件
  • ls -l:显示详细信息
  • ls -R:递归显示子目录的结构
  • ls -ld:显示目录和链接信息

6.查看文件的类型

  • 通过file命令可以查看文件的类型

7.绝对路径和相对路径

  • 绝对路径:以“/”开头,递归每级目录知道目标的路径,不受当前所在工作目录限制
  • 相对路径:以当前目录为起点,到底目标的路径,受当前所在目录限制
  • cd命令可以用来切换目录:上一级目录“..”;当前目录“.”;用户家目录“~”;上一个工作目录“-”

8.输出、查看命令

  • echo用以显示输入的内容
  • cat用以显示文件内容,-n显示行号
  • head用以显示文件的头几行(默认10行):-n指定显示的行数
  • more用于翻页显示文件内容(只能向下翻页):可以空格翻页,不能向上翻页
  • less用于翻页显示文件内容(带上下翻页):来回翻,按q退出
  • tail用以显示文件的末尾几行(默认10行):-n指定显示的行数
    • -f动态显示文件末尾内容:一般用于查看日志,命令不会退出,而是持续显示新加入的内容

 

9.归档和压缩

  • zip用以压缩文件:zip linuxcast.zip myfile

 

  • unzip用以解压缩zip文件
  • gzip用以压缩文件
  • tar用以归档文件
    • tar -cvf:c代表创建归档

    • tar -xvf:释放一个归档
    • tar -cvzf:-z参数将归档后的归档文件进行gzip压缩以减少大小

10.查找

  • locate用以快速查找文件和文件夹:locate 关键字,此命令需要预先建立数据库,数据库默认每天更新一次,可update命令手工建立、更新数据库
    • 缺点是数据库没更新就查不到

 

    • 手动更新数据库后便能查到

  • find用以高级查找文件、文件夹
    • find 查找位置 查找参数

 

    • 在当前目录(.)查找包含linuxcast的文件,-name基于文件名查找

    • 在根目录(/)查找包含以.conf结尾的所有文件,即查找所有的配置文件

    • 所有权限是777的文件

    • 返回所有目录类型的文件

    • 返回以a开头的文件,将结果作为参数传递给后面的-exec 命令 {} 中间这个命令执行,-exec 命令 {} 为固定格式 

 

    • find支持多种查找条件
      • -name:文件名
      • -perm:权限
      • -type:类型
      • -ctime:基于修改时间查找
      • -size:基于文件大小查找
      • -group:查找属于某个特定组的文件
      • -user:查找属于某个特定用户的文件

用户与组

1.基本概念:当使用Linux时,需要以一个用户的身份登入,一个进程也需要以一个用户的身份运行,用户限制使用者或者进程可以使用、不可以使用哪些资源

  • 组用来方便组织管理用户
  • 每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名
  • 每个用户属于一个主组,属于一个或多个附属组
  • 每个组拥有一个GroupID
  • 每个进程以一个用户身份运行,并受该用户可访问的资源限制
  • 每个可登陆用户拥有一个指定的shell

2.用户

  • 用户基础:用户ID为32位,从0开始,但是为了和老式系统兼容,用户ID限制在60000以下
    • 用户分为以下三种:系统中的文件都有一个所属用户及所属组
      • -root用户:ID为0的用户为root用户
      • -系统用户:1-499,没有shell,它为某些特定服务创建的用户
      • -普通用户:500以上
    • 使用id命令可以显示当前用户的信息
    • 使用passwd命令可以修改当前用户的密码
  • 相关文件
    • /etc/passwd:保存用户信息
    • /etc/shadow:保存用户密码(加密的),只有管理员可以查看
    • /etc/group:保存组信息
    • 使用cat命令可以查看相关信息
  • 查看登陆的用户
    • 命令whoami显示当前用户
    • 命令who显示有哪些用户已经登陆系统
    • 命令w显示有哪些用户已经登陆并且在干什么
  • 创建用户:useradd 新用户名
    • 这个命令会执行以下操作:
      • 1、在/etc/passwd中添加用户信息
      • 2、如果使用passwd命令创建密码,则将密码加密保存在/etc/shadow中
      • 3、为用户建立一个新的家目录/home/新用户名
      • 4、将/etc/skel中的文件复制到用户的家目录中
      • 5、建立一个与用户用户名相同的组,新建用户默认属于这个同名组
    • 相关参数:
      useradd [-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]
      • -d 家目录
      • -s 登陆shell
      • -u userid
      • -g 主组
      • -G 附属组(最多31个,用逗号分隔)
      • 也可以直接修改/etc/passwd的方式实现,但是不建议
  • 修改用户信息:usermod 参数 username
    • 相关参数:
      • -l 新用户名
      • -u 新userid
      • -d 用户家目录位置
      • -g 用户所属主组:usermod -g 组名 用户名 :修改用户的组;usermod -aG 组名 用户名 :将用户添加到组
      • -G 用户所属附属组
      • -L 锁定用户使其不能登录
      • -U 解除锁定
  • 删除用户
    • userdel 用户名:会保留用户的家目录
    • userdel -r 用户名:同时删除用户的家目录
    • userdel -f 用户名:强制删除,包括用户的一切相关内容,这个参数是危险的参数

3.用户组

  • 组基础:可以使用部门、职能或地理区域的分类方式创建使用组
    • 每个组有一个组ID
    • 组信息保存在/etc/group
    • 每个用户拥有一个主组,同时还可以拥有最多31个附属组
  • 创建、修改、删除组
    • 命令groupadd用以创建组
    • 命令groupmod用以修改组信息
      • 修改组名:groupmod -n 新组名 旧组名
      • 修改组ID:groupmod -g 新ID 旧ID
    • 命令groupdel用以删除组:groupdel 组名
  • 显示用户所属组:groups
    • groups:默认显示当前用户的组
      groups 用户名:显示特指用户的组

4.示例

  • 部门配置

  • 具体操作

 权限管理

1.权限基础

  • 权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所有组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样的操作
  • 每个进程都是以某个用户的身份运行,所有进程的权限与该用户的权限一样,用户的权限大,该进程用户的权限就大
  • 文件的三种权限:

    • 目录必须拥有x权限,否者无法查看其内容

2.UGO模型

  • Linux权限基于UGO模型进行控制:
    • U代表User,G代表Group,O代表Other
    • 每一个文件的权限基于UGO进行设置
    • 权限三个一组(rwx),对应UGO分别设置
    • 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限
  • 命令ls -l可以查看当前目录下文件的详细信息
    • 详细信息

 

    • 相关权限

 3.修改文件所属用户和组

  • 命令chown用以改变文件的所有用户:chown 用户名 文件名,-R参数递归的修改目录下的所有文件的所属用户

  • chown [-R] 用户名:用户组  文件名:变更文件及目录的拥有者和所属组(-R递归处理所有文件和文件夹)
  • 命令chgrp用以改变文件的所属组:chgrp 用户组 文件名,-R参数递归的修改目录下的所有文件的所属组

4.修改权限

  • 命令chmod用以修改文件的权限:chmod 模式 文件名;模式有如下格式:
    • u、g、o分别代表用户、组和其他
    • a可以代指ugo
    • +、-代表加入或删除对应权限
    • r、w、x代表三种权限
    • -R同样是递归修改目录下文件的权限

  • 数字方式修改权限
    • 三个权限分别有三个数字表示:
      • -r = 4
      • -w = 2
      • -x = 1
    • 使用数字表示权限时,每组权限分别为对应数字之和
      • rw=4+2=6
      • rwx=4+2+1=7
      • r-x=4+1=5
    • 示例

5.默认权限

  • 每一个终端都拥有一个umask属性,来确认新建文件、文件夹的默认权限
  • umask使用数字权限方式表示,如:022
  • 目录的默认权限是:777-umask
  • 文件的默认权限是:666-umask
  • 一般,普通用户的默认umask是002,root用户的默认umask是022
  • 对于普通用户来讲:
    • 新建文件的权限是:666-002=664

    • 新建目录的权限是:777-002=775

  • root用户:新建文件:644

  • 命令umask用以查看设置umask值:umask 022,新建文件默认权限变为644

 

 

 6.特殊权限

  • 三个特殊权限

    • suid:目的是让某些用户实现它原本没有权限去做的一些操作,通常用在可执行文件中,命令就是可执行文件
      • 通常是给命令或可执行文件用的,命令或可执行文件都会去以一个用户的身份运行,之所以这样是为了限制命令能够去访问的资源,一般的命令都是谁去运行这个命令,我都是以这个命令的用户去运行,这个用户能够访问的权限都会传递给这个命令;
      • 需求:希望用户执行某些命令获得额外的资源和功能;
      • 比如一个命令可以修改操作系统的功能,它的所属用户是root,我让其他用户能够运行这个命令,即o权限设置为r-x,但是又不想开放这个功能,因为普通用户没有修改操作系统的权限,即使你o权限设置为r-x,但其他用户也做不了修改,给这个文件设置suid,普通用户去执行这个文件的时候并不是以用户的身份去执行,而是以这个命令所属用户的身份去执行
      • 系统某些权限只有root用户才有,虽然给普通用户配置了相应的权限,但是仍然执行不了某些操作,所以给文件设置了suid后,普通用户就以所属用户的身份去操作这个文件;
      • 比如命令passwd,用户的密码存放在/etc/shadow下面,除了root,其他所有用户什么权限都没有,所以给passwd设置了所属用户root的权限,可以修改密码

 

    • sgid:设置了sgid的目录,所有新建的文件和文件夹都会继承(递归)该目录的所属组,方便权限控制
    • sticky:设置了sticky的目录,对目录拥有写入权限的用户不能删除其他用户的文件,常用于同部门(组)员工可以相互访问其他的文件,但是无法删除其他用户的文件
  • 设置特殊权限
    • 设置suid:chmod u+s 文件名

    • 设置sgid:chmod g+s 文件名

    • 设置sticky:chmod o+t 文件名

  • 与普通权限一样,特殊权限也可以使用数字方式表示
    • -suid = 4
    • -sgid = 2
    • -sticky = 1
    • chmod 6755 文件名:即同时拥有suid和sgid两个特殊权限

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/zhufeng123/p/11831344.html