1. 权限计算方法

文件默认权限:644
目录默认权限:755

umask :用于设置权限计算参考值
#文件:666 - umask = 666 - 022 = 644 偶数运算
#文件:666 - umask = 666 - 033 = 633 + 011 = 644 奇数运算
#目录:777 - umask = 777 - 022 = 755 没有奇偶运算区别


   umask为什么永久设置的是022:
   查看/etc/profile 文件
   if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]
   如果   条件01       &&
   >   <   =  >=  <=  ≠
   gt  lt  eq ge  le ne
   then 然后
     umask 002
   else 否则
     umask 022
   fi
  1. 用户相关命令介绍

张三 运维部门 sa_zhangsan sa组 1000~2000
李四 开发部门 dev_lisi dev组 2001~3000
王五 数据库部分 db_wangwu db组 3001~4000
老男孩 全才 sa_oldboy sa组 dev db

  useradd 添加用户信息
   -g   --- 指定用户属于哪个特定组(主要组)
   -G   --- 指定用户属于哪个特定组(附属组)
   -u   --- 指定用户编号信息(uid)
   -c   --- 指定用户描述信息
   -M   --- 表示不创建家目录
   -s   --- 表示指定用户登录方式
        用户登录系统设置方式:
        能登陆:  /bin/bash
        不能登陆:/sbin/nologin

        

===================================

用户和组的关系:
1对1关系: 一个用户属于一个组
1对多关系:一个用户属于多个组
n对1关系: 多个用户属于一个组

n对n关系: 多个用户属于多个组

===================================

passwd 修改用户密码信息
交互设置密码:
#passwd sa_zhangsan
更改用户 sa_zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

普通用户设置修改密码有复杂度要求:
长度不能小于8位
密码需要有字符组合:
Zaq!abcd1

非交互设置密码:
echo 654321|passwd --stdin sa_zhangsan

测验:*

  1. 如何创建多个用户 oldboy01 oldboy02 oldboy03 并且每个用户密码信息为123456 通过一条命令创建出来 (之前只是汇总)
    单个用户创建并设置密码:
    useradd oldboy01 ; echo 123456|passwd --stdin oldboy01
    批量多个用户创建并设置密码
    useradd oldboy01 ; echo 123456|passwd --stdin oldboy01
    useradd oldboy02 ; echo 123456|passwd --stdin oldboy02
    useradd oldboy03 ; echo 123456|passwd --stdin oldboy03

    通过某个命令将上面三行命令信息输出出来
    echo {01..03}|xargs -n1|sed -r 's#(..)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'
    useradd oldboy01;echo 123456|passwd --stdin oldboy01
    useradd oldboy02;echo 123456|passwd --stdin oldboy02
    useradd oldboy03;echo 123456|passwd --stdin oldboy03

    echo {01..03}|xargs -n1|sed -r 's#(..)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'|bash
    更改用户 oldboy01 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    更改用户 oldboy02 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    更改用户 oldboy03 的密码 。
    passwd:所有的身份验证令牌已经成功更新。

usermod: 修改已有用户设置信息
-g --- 修改用户属于哪个特定组(主要组)
-G --- 修改用户属于哪个特定组(附属组)
-u --- 修改用户编号信息(uid)
-c --- 修改用户描述信息
-s --- 修改指定用户登录方式

    用户登录系统设置方式:
    能登陆:  /bin/bash
    不能登陆:/sbin/nologin

userdel:删除指定用户
-r --- 彻底删除用户所有信息

groupadd --- 提前创建出指定的用户组
-g --- 指定用户组gid数值

w:显示当前登录系统用户信息

15:00:06 up 4 days 系统已运行时间

19:32 系统登录时间

2 users 已登录用户

oad average: 0.00, 0.01, 0.05 分别代表系统一分钟、五分钟、以及十五分钟的系统平均负载

 15:00:06 up 4 days, 19:32,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      Wed10    4days  0.06s  0.06s -bash
root     pts/0    10.0.0.1         Wed16    6.00s  1.25s  0.02s w
    从USER到 WHAT 分别代表
     登录用户 登录方式 登录客户端主机地址  登录时间 空闲时间
     JCPU指的是与该tty终端连接的所由进程占用的时间,不包括过去的后台作业时间;PCPU 指的是当前进程(即w项中显示的)所占用的时间
     执行什么操作

踢出指定用户:
第一个历程:查看已连接用户的ssh会话进程id信息
ps -ef|grep ssh
第二个历程:停止指定用户的会话进程(等价于踢出指定用户)
kill 进程编号

  1. 系统重要目录与文件(用户相关文件) 了解

    /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
    ① ② ③ ④ ⑤ ⑥ ⑦
    ① 系统已有用户名称
    ② 系统用户密码信息
    ③ 系统用户uid编号
    ④ 系统用户组gid编号
    ⑤ 系统用户描述信息
    ⑥ 系统用户家目录路径信息
    ⑦ 系统用户登录方式
    /etc/shadow --- 记录系统用户密码信息
    /etc/group --- 记录系统用户组信息
    /etc/gshadow --- 记录系统用户组密码信息

    /etc/skel/ --- 保存用户家目录模板文件信息 (样板间) 面试题
    useradd 用户:
    创建家目录 --- cp /etc/skel/* /home/oldboy10/
    -bash-4.2$ --- 命令提示符出现此情况,表示自己家被毁了
    恢复方式:
    cp /etc/skel/.b* ~/

    .bash_logout 相对 /etc/rc.local

  2. 用户权限提权设置

    概念解释:将root用户具有的能力可以分配给指定用户进行使用

    第一个历程:设置指定用户特殊权限
    visudo --- 切换到92行 === vi /etc/sudoers

    \# 92 root ALL=(ALL) ALL
    ​ ① ② ③
    ​ oldboy ALL=(ALL) /bin/vim /etc/hosts, /bin/touch /etc/*

    指定授予特殊权限用户信息
    可以实现权限设置集中管理
    具体赋予特殊权限信息

第二个历程:行使赋予的特权

sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

    # 输入密码后

    Matching Defaults entries for root on centosb:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
    LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User root may run the following commands on centosb:
    (ALL) ALL

# visudo 编辑  用户的权限
# 代表centosb 拥有授权的权利  编辑hosts 在etc下创建文件  (加上sudo)
# 注意  内置命令 如cd  不可以授权  使用man查看内置命令
centosb (ALL) /bin/vim /etc/hosts, /bin/touch /etc/*

用户提权操作扩展说明:

1) 如何在使用特权时不用输入密码:
visudo
oldboy ALL=(ALL) NOPASSWD: /bin/vim /etc/hosts, /bin/touch /etc/*

2) 危险权力排除操作
oldboy ALL=(ALL) NOPASSWD: /bin/vim /etc/, ! /bin/vim /etc/sudoers, /bin/touch /etc/

  1. 系统特殊权限设置
    1)特殊权限位介绍 9+3 = 12位权限
    setuid权限位(属主位设置):对命令文件设置特殊权限,让普通用户具有命令文件属主执行能力
    chmod u+s 命令文件 s=4

    setgid权限位(属组位设置):对命令文件设置特殊权限,让普通用户组具有命令文件属组执行能力
    chmod g+s 命令文件 s=2

    sticky权限位(其他用户位设置):粘滞位
    可以在系统设置一个共享存储目录,目录中的数据可以互相查看,但是只能文件所有者可以进行编写和删除操作,不能被其他用户管理
    chmod o+t 目录信息 t=1

2)文件数据上锁权限设置
文件被上锁设置后,系统中所有用户(包含root)都不能对文件进行编辑修改
给文件加上锁权限:
chattr +i /etc/hosts
查看文件是否上锁:
lsattr /etc/hosts
给文件解锁操作过程:
chattr -i /etc/hosts
作用:企业中可以将重要文件数据信息进行上锁保护

3)给文件数据权限设置访问控制列表
作用说明:一个数据文件可以被多个指定用户进行管理 可以被多个指定用户组进行管理
getfacl:查看文件访问控制列表信息

chattr 修改文件或者目录的特殊属性(拓展属性)


a #限定文件具有某种功能。这个对于日志文件非常有作用,比如,不允许删除,只允许向里面追加内容。
b #不更新或修改文件或目录的最后存储时间
c #将文件或目录压缩后存储
d #将文件或目录排除在倾倒操作之外
i #锁定文件或目录,不被更改
s #秘密删除文件或目录
S #动态实时更新文件或目录
u #防止文件或目录被意外删除

lsattr选项说明

-E  #显示属性的当前值
-D  #显示扩展属性的名称
-R  #递归
-V  #显示版本信息
-a  #列出目录下所有文件,包括隐藏文件
#注意-E -D -R三个选项是不可以一起使用的,它们是相互排斥的。
  1. sed命令使用方法

       作用说明:可以直接编辑修改文件内容
       语法格式:sed 参数 '条件 指令(改/添加/删除)'  文件信息
    
       可以对文件进行:增 删 改 查
       查操作:
       根据内容筛查文件信息:
       sed -n '/Python/p' test.txt                 --- 根据指定内容过滤单行信息
       oldboy  Python
    
       sed -rn '/Linux/,/mysql/p' test.txt      --- 根据指定内容进行过滤连续多行内容
    
       sed -rn '/^#|^$/!p' /etc/selinux/config  --- 根据指定内容进行取反过滤
       SELINUX=disabled
       SELINUXTYPE=targeted
    
       [root@bj-oldboy-muban ~]# sed -rn '/^SELINUX|^SELINUXTYPE/p' /etc/selinux/config   --- 根据指定内容过滤多行信息
       SELINUX=disabled
       SELINUXTYPE=targeted
    
       根据行号筛查文件信息:
       sed -n '2p' /etc/selinux/config        --- 根据行号过滤筛选内容
       sed -n '2,6p' /etc/selinux/config      --- 根据行号区间范围进行过滤筛选
       sed -n '7p;12p' /etc/selinux/config     --- 根据行号将不连续多行信息进行过滤
    
       删除指定信息:
       sed -i '/mysql/d' test.txt
       sed -i.bak '/mysql/d' test.txt  --- 删除文件信息前会对源文件进行备份
       [root@bj-oldboy-muban ~]# ll test.txt.bak
       -rw-r--r-- 1 root root 67 11月 26 06:56 test.txt.bak
    
03-05 15:36