基础命令及用户管理

linux系统登录流程介绍

用户名、密码登录 --> 权限的管理 --> 审计(日志)
    查看登录日志:/var/log/secure

Linux基础命令

分为:内建命令和外部命令
    (1)内建命令是shell的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行shell时就被加载并驻留在系统内存中,其执行速度比外部命令要快,因为解析内部命令shell不需要创建子进程。
    比如:exit、history、echo、cd
    (2)外部命令是linux系统中的实用程序,因为实用程序功能比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用到内存执行。
    比如:ls、vim

type命令可以分辨内部命令和外部命令,执行type命令会有三种显示形式:
        file: 表示外部命令
        alias:表示该指令为命令别名所设定的名称;
        builtin:表示该指令为bash内部命令

操作系统基础命令:
    
        关机命令:

            Halt
            Poweroff -f
            Init 0

重启命令:

            Reboot
            Init 6
            Shutdown -r

        Whoami 显示当前登录用户名
        Who 显示当前在线所有用户
        W 显示当前所有登录的用户在做什么

时间操作命令:

            date
            Date -s 修改时间
            Cal 查看日历
            Ctrl + c 强制中断
            Ctrl + d 正常中断

新建、移动、复制、删除文件

            touch
            mv
            cp
            rm
            tree

查看历史命令:

        history
            HISTCONTROL=ignoredups        # 默认,忽视重复且相同的命令
            HISTFILE=/root/.bash_history        历史命令保存文件位置
            HISTFILESIZE=1000        历史命令文件行数
            HISTSIZE=1000        历史命令在shell中展示的行数

        -c:清空所有历史命令
        n:显示第n行命令

        history知识扩展:
            !: 上一个指令
            !!: 执行上一个指令

用户和组

在linux中,用户可以分为三大类:
    超级用户:root
    虚拟用户:在linux中,满足文件和程序的运行所需而创建的,不能登录,不能使用。
    普通用户:管理员root创建的用户
组:具有相同特征用户的集合,一个组可以包含多个用户,每个用户也可以属于不同的组,组是为了管理员对用户的集中管理,用户组分为两类:
    系统组和用户组
用户和组的关系:
    一对一:一个用户存在一个组
    一对多:一个用户属于多个组,只有一个主组,其余为附加组
    多对一:多个用户共存一个组
    多对多:多个用户可以存在多个组

用户及用户组配置文件介绍:
    /etc/passwd
    
    第一列:用户名
    第二列:密码位
    第三列:UID号 用户
    第四列:GID号 组
    第五列:用户名注释
    第六列:用户的家目录
    第七列:用户默认的shell类型
    
    /etc/group:组及其属性
    
    第一列:组名
    第二列:组密码
    第三列:GID
    第四列:以该组为附加组的用户列表
    
    /etc/shadow 用户密码及其相关属性
    
    第一列:用户名
    第二列:密码位
        为空表示登录不用密码
        $:为加密存放
        *:为账户被锁定
        !!:表示密码过期
    第三列:最后一次修改时间(天数)
    第四列:最小时间间隔:指的是两次修改口令之间所需的最小天数
    第五列:最大时间间隔:指的是两次口令保持有效的最大天数
    第六列:告警时间:从系统开始告警用户到用户密码失效之间的天数
    第七列:不活动时间:表示用户没有登录活动但帐号有效的最大天数
    第八列:失效天数:给出的绝对天数
    
    /etc/gshadow 组密码及其相关属性
    
    第一列:组名
    第二列:组密码第三列:管理员列表,可以更改组密码和成员
    第四列:将该组作为辅助组的成员列表

用户和组管理命令

用户管理命令:

        Useradd
        -u: uid 创建用户时指定的uid
        -g:gid 指明创建用户所属组
        -c:用户的注释信息
        -M:不创建家目录
        -s:指定用户的默认shell
        -e:用户过期时间
        -G:为用户指明附加组,组必须提前存在

    创建用户时默认值设定存放与/etc/default/useradd
    GROUP=100
    HOME=/home            把用户的家目录创建在/home下
    INACTIVE=-1            是否启用帐号过期停权,-1为不启用
    EXPIRE=            帐号终止日期,不设置为不启用
    SHELL=/bin/bash            默认shell
    SKEL=/etc/skel            配置新用户家目录的默认存放位置
    CREATE_MAIL_SPOOL=yes        创建mail文件

    /etc/login.defs

    Usermod

        -u: 新UID
        -g:新主组
        -G:新附加组
        -s:新的默认shell
        -c:新的注释
        -d:HOME 新的家目录;若要创建新的家目录并移动原家目录数据,使用-m选项
        -L:lock指定用户,在/etc/shadow密码增加!

    Userdel

        -r:删除用户时,连通家目录,mail一同删除

    Id
        -u:显示UID
        -g:显示GID
        -G:显示用户所属组的id
        -n:显示名称

Su 切换用户或以其他用户身份执行命令
        (1)su 非登录式切换,不会读取目标用户的部分配置文件,不改变工作目录
        (2)su - 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
        (3)root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码
        
        
    passwd:修改指定用户密码,仅root用户使用
        -e:强制用户下次登录修改密码
        --stdin:从标准输入接收用户密码

组帐号管理:
    Groupadd
        -g:创建指定gid组
        -r:创建系统组
        
    Groupmod
        -n:修改组名
        -g:修改gid
        
    Groupdel
        删除组
        
    Groups
        查看用户所属组列表
        
        
文件权限:
    普通文件
    
    r: 可以读取文件内容
    w: 可以追加或者覆盖文件内容
    x: 可以执行文件,需要和r配合

目录文件
    
    r:可以查看目录下有那些文件,不能查看文件的详细信息
    w:可以在目录中创建删除文件,需要x配合
    x:可以cd进入该目录

Linux特殊权限

Setuid
    
当s这个标志出现在文件所有者的x权限上时,例如文件权限 "-rwSr--r--"  说明此文件具有suid特殊权限,SUID功能和限制:
    (1)SUID权限仅对二进制程序有效,首先该二进制需有执行权限
    (2)执行者对于该程序需要具有x的可执行权限;
    (3)本权限仅在执行该程序的过程中有效;
    (4)执行者将具有该程序所有者的权限
    (5)s为小写时,拥有者有x权限,S为大写时,拥有者没有x权限

常见命令,例如:/usr/bin/passwd

密码文件通常只有root有强制写功能,也就是说只有root才可以修改密码,但是为什么普通用户也可以修改自己的密码呢?

因为在/usr/bin/passwd 命令具有SUID权限,在执行时,执行者将具有所有者的权限,所有者是root,所以普通用户也可以修改密码。
举例:netstat

SGID

当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:
    (1)SGID对二进制和目录都有用
    (2)程序执行者对该程序具备x权限(3)执行者在执行过程中会获得该程序用户组的支持

举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:

-rwx--s--x root  slocate /usr/bin/locate
-rw-r-----   root slocate /var/lib/mlocate/mlocate.db

若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。

除了二进制程序外,SGID也可以用在目录上。当一个目录设置了SGID权限后,它具有以下功能:
    (1)用户若对此目录具有r和x权限,该用户能够进入该目录
    (2)用户在此目录下的有效用户组将变成该目录的用户组
    (3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同

SBIT

sbit目前只对目录有效
    sbit对目录的作用是:
        (1)当用户对此目录具有w和x权限时,即具有写入权限时;
        (2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权限删除

SUID/SGID/SBIT权限设置

先将其转换为数字:
    SUID: 4
    SGID: 2
    SBIT: 1

Linux ACL权限划分

ACL:access control list 主要是提供传统 读写执行权限以外的具体权限设置,ACL可以针对单一用户、单一文件或者目录进行,对于需要特殊权限的使用状况有一定的帮助。如:某一个文件,不让单一的某个用户访问
    
ACL使用两个命令来对其进行控制:
    getfacl:获取某个文件、目录的ACL设置项目
    setfacl:设置某个文件、目录的ACL设置项目

setfacl 参数
  -m:设置后续acl参数
  -x:删除后续acl参数
  -b:删除全部的acl参数
  -k:删除默认的acl参数
  -R:递归设置acl,包括子目录
  -d:设置默认acl

例:创建一文件test,将其权限修改为777,并查看其默认ACL权限配置

    [[email protected] localhost ~]# touch /test
    [[email protected] localhost ~]# chmod 777 /test
    [[email protected] localhost~]# getfacl /test            //获得文件的ACL权限
    getfacl: Removing leading ‘/‘ from absolute path names
    # file: test                                //文件名
    # owner: root                            //文件所属者
    # group: root                            //文件所属组
    user::rwx                                //文件所属者权限
    group::rwx                              //同组用户权限
    other::rwx                              //其它者权限

可以看到其它者的权限也是可读可写可执行,可以自行测试,现在我们修改其ACL策略,使用用户test只有读取的权限

[[email protected] tmp]# setfacl -m u:test:r test
[[email protected] tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:test:r--        # 可以看到 test 单独的权限为 r--
group::rwx
mask::rwx
other::rwx

注:test权限并不是只根据ACL配置来决定的,它是由test用户基本权限和ACL权限的交集决定的。

other:rwx
acl: r--

所以 test用户只具有 r 权限

[[email protected] tmp]$ echo ‘abc‘ > test
-bash: test: Permission denied
[[email protected] tmp]$ rm -rf test
rm: cannot remove ‘test’: Operation not permitted

[[email protected] tmp]# ll
-rwxrwxrwx+ 1 root root 0 Jan 18 07:10 test        # 可以看见,如果文件具有ACL权限后面会多一个加号

取消ACL

[[email protected] tmp]# setfacl -x u:test test        # 取消test用户acl权限
[[email protected] tmp]# setfacl -x m test        # 恢复有效权限
[[email protected] tmp]# ll
total 0
-rwxrwxrwx 1 root root 0 Jan 18 07:10 test

linxu隐藏权限

chattr (配置文件隐藏属性)

选项与参数:
    + :添加某一个特殊参数,其他原本存在参数则不动.
    - :移除某一个特殊参数,其他原本存在参数则不动.
    = :配置一定,且仅有后面接的参数
    
    A :当配置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime将不会被修改,可避免I/O较慢的机器过度的存取磁碟.这对速度较慢的计算机有帮助
    S :一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中.
    a :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root 才能配置这个属性.
    c :这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)
    d :当 dump 程序被运行的时候,配置 d 属性将可使该文件(或目录)不会被 dump 备份
    i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性
    s :当文件配置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!
    u :与 s 相反的,当使用 u 来配置文件时,如果该文件被删除了,则数据内容其实还存在磁碟中,可以使用来救援该文件喔!
    注意:属性配置常见的是 a 与 i 的配置值,而且很多配置值必须要身为 root 才能配置

例:

[[email protected] ~]# cd /tmp/
[[email protected] tmp]# touch test
[[email protected] tmp]# lsattr test
---------------- test
[[email protected] tmp]# chattr +i test
[[email protected] tmp]# lsattr test
----i----------- test
[[email protected] tmp]# rm -rf test
rm: cannot remove ‘test’: Operation not permitted
[[email protected] tmp]# echo ‘hello test‘ > test
-bash: test: Permission denied

-i选项很重要,在系统数据安全方面,由于是隐藏属性,只能lsattr才能查看。

lsattr (显示文件隐藏属性)

    [[email protected] ~]# lsattr [-adR] 文件或目录

    选项与参数:
    -a :将隐藏档的属性也秀出来;
    -d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;
    -R :连同子目录的数据也一并列出来!

原文地址:https://www.cnblogs.com/hukey/p/8308967.html

时间: 2024-11-05 06:27:33

基础命令及用户管理的相关文章

【[email protected]基础篇 ~】# 用户管理

经过前两篇文章的洗礼,相信大家对Linux的基本操作已有了大致的了解,今天我们来讲解一下Linux的用户管理,大家最熟悉的可能还是root用户,就是超级管理员么,具有神的权限.但是很多情况下,为了给其他用户登录和操作系统,我们需要创建其他非管理员用户并给他们分配一定的权限,以确保系统在多用户的情况下系统安全.那现在我们就开始学习吧,stay hungary, stay foolish! 用户管理 1.新建用户 1.1 创建一个普通账户 新建用户主要用useradd这个命令 [[email pro

Oracle数据库——常用命令(用户管理、数据库导入导出)

--==cmd控制台==-- --==日常用户管理SQL==-- --连接到SQLPLUS >sqlplus /nolog --以dba身份连接 sql>conn / as sysdba --修改用户密码 将system用户的密码修改成system sql>alter user system identified by "system" --连接 sql>conn 请输入用户名:system 输入口令: --查询所有用户 sql>select * from

Linux 命令整理 —— 用户管理

Linux用户管理以读.写.执行动作为权限,以用户组为单位,限制用户行为.对于文件的的操作,可以限制读.写.执行中的哪一种,也可以限制文件所有者.组用户.组外用户相应的权限. 所以,要建立用户,最好先确定其所在的组. 一.用户组操作 1. 创建用户组——groupadd #新增deploy组 groupadd deploy 2. 修改用户组——groupmod #将用户组deploy更名为deploy1 groupmod -n deploy1 deploy 注意是将已存在的deploy组更名为d

Linux常用的文件管理命令及用户管理命令

1.常用的文件管理命令-使用方法及示例 常用的文件管理类命令:mkdir.rmdir.touch.cat.tac. head. tail.more.less.cp.mv.rm等 注:跟在常用参数中的#代表数字 mkdir:创建目录命令格式:mkdir [OPTION]... DIRECTORY... 常用参数:-p 表示要创建的目录存在时不返回错误,不存在时自动创建所需的目录-v 显示创建过程信息-m MODE 创建目录是直接指定权限 命令举例: [[email protected] work]

一天一个Linux基础命令之目录管理类命令mkdir

mkdir 创建目录 1.命令格式 mkdir [option]   <目录名>... 2.命令功能 通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录.要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限. 同一个目录下不能有同名的(区分大小写)文件和目录. 3.常用参数 -m, 设定权限<模式> (类似 chmod) -p,在创建目录之前的目录不存在,先创建上级目录 ,即创建目录之前先创建父目录 -v,  每次创建新目录

2016/8/19 Linux常用命令 : 帮助命令、用户管理命令、压缩解压命令

1.获取帮助信息:man man ls :获取 ls 命令的帮助信息 man services :查看配置文件services的帮助信息,直接加文件名称,不需要绝对路径 帮助: 1表示命令的帮助,5表示配置文件的帮助 man  1  passwd 2. 查看命令的介绍: whatis 3.产看配置文件信息:apropos  配置文件名称 3.获得Shell 内置命令的帮助信息 : help help umask :查看 umask 命令的帮助信息 4.查看命令的选项: 命令  --help 4.

一天一个Linux基础命令之目录管理类命令cd

cd 切换目录命令 1.命令格式 cd  [option]     [目录名] 2.命令功能 切换工作目录 3.常用范例 例1:cd  ~ 说明:~默认为root的家目录,如果~后面加入用户名,则可以进入指定用户的家目录 [[email protected] ~]# [[email protected] ~]# cd / [[email protected] /]# pwd / 说明:进入系统根目录,上面命令执行完后拿pwd命令看一下,当前目录已经到系统根目录了 . [[email protec

Linux学习笔记(6)Linux常用命令之帮助命令与用户管理命令

(1)man man命令用于获得命令或配置文件的帮助信息,英文原意为manual,所在路径为/usr/bin/man,其语法格式为: man [命令或配置文件] 注意:查看配置文件的帮助信息时无需绝对路径. 查看命令的帮助信息主要查看命令的用途(NAME)及相应的选项,而配置文件的帮助主要是查看存放信息(NAME)及其对应的格式.Linux中每个配置文件都有对应的格式. 如查看ls命令的帮助,man ls,查看/ect下services配置文件的帮助:man services. 特例:查看pas

Linux基础命令---删除用户userdel

userdel 删除用户,如果没有附加选项,仅删除用户,不删除相关文件. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法        userdel [-r] user   2.选项列表 选项 说明 --help 显示帮助文档 --version 显示命令版本 -r 删除用户的同时,删除其相关文件   3.实例 1)不使用选项,删除用户 [[email protected] david]# userdel test01