Day3:用户组管理和脚本

  • 2019-07-09
  • 254
  • 0

redhat6从500开始自动使用UID,redhat7则是从1000开始

系统中默认允许的最多账号数量是65536,但是可以改

/etc/passwd每一行代表一个用户,每一行用冒号分割成7列

  1. 第一列:用户名
  2. 第二列:[x]代表了登录时是否需要验证,没有x留空,则su切换用户不需要密码
  3. 第三列:UID
  4. 第四列:Primary Group ID
  5. 第五列:描述
  6. 第六列:用户的home目录
  7. 第七列:用户的登录shell,相当于用户登录系统后的第一个程序

useradd -u <uid> -g <gid> <username>

组信息文件存放在/etc/group

  1. 第一列:组名
  2. 第二列:登录组是否需要密码
  3. 第三列:GID
  4. 第四列:组成员[user]列表[但是组管理员不会显示在这里,组管理员就是primary group所属的user]

Each user is given their own private group[私有组/主组等,都是一个意思,主组一般不能变]
Can be added to other groups for additional access[可以附加很多组]


新建group,如果不指定UID,那么UID 是在最大的系统当前最大的UID的基础上+1【意味着虽然默认rhel7是从1000开始,如果你手动创建过一个UID是3000的用户,那么下一个自动UID就是3001】

试用userdel -r参数来删除某用户的所有信息,包含系统邮箱文件,home目录等

想清空一个组,那么这个组里的成员必须都不存在

【追加附属组,usermod -aG 必须加a append,否则会覆盖删除掉之前设置的“所有的”附加组】


用户管理相关命令
  1. useradd 添加用户
  2. adduser 添加用户
  3. userdel 删除用户
  4. passwd 为用户设置密码
  5. usermod 修改用户命令,可以通过usermod 来修改登录名、用户的家目录及编辑附加组等等
用户组管理相关命令
  1. groupadd 添加用户组
  2. groupdel 删除用户组
  3. groupmod 修改用户组信息
  4. groups 显示用户所属的用户组
  5. newgrp 切换到相应用用户组【只有当用户并非目标组成员的时候,使用newgrp且隐患才需要密码,否则就算gpassword设置过密码,这里也可以无密码切换】

Linux File Security【linux文件安全】
  • Every file is owned by a UID and a GID
  • Every process runs as a UID and one or more GIDs【每个进程在运行的时候也会携带一个UID和一个/多个GID的参数身份】
    • Usually determined by who runs the process
  • Three access categories:
    1. Processes running with the same UID as the file (user)【用户一样获得用户的权限If UID matches, user permissions apply】
    2. Processes running with the same GID as the file (group)【组一样活得组的权限Otherwise, if GID matches, group permissions apply】
    3. All other processes (other)【都不是获得other的权限If neither match, other permissions apply】

【命令行快捷键】
  1. Ctrl-a moves to beginning of line【移动到行开头】
  2. Ctrl-e moves to end of line【移动到行末尾】
  3. Ctrl-u deletes to beginning of line【删除直到行开头】
  4. Ctrl-k deletes to end of line【删除直到末尾】
  5. Ctrl-arrow moves left or right by word【按照单词为长度移动光标】

【通配符】

Globbing is wild card expansion:

  • * – matches zero or more characters【匹配0或多个字符】
  • ? – matches any single character【匹配任意一个字符】
  • [0-9] – matches a range of numbers【方框里的字符范围是或的关系,[1-5]代表1,2,3,4,5】
  • [abc] – matches any one of the characters in the list【匹配方括号里的任意一个字符】
  • [^abc] – matches any one character except those in the list【匹配出去方括号内的字符,“非”的用法】
  • [:alpha:] – characters in a predefined character class can be matched【一些预定于的字符类型集合】

    引用方法是再加一个方括号:[[:lower:]]

glob(7)

【可以通过man 7 glob来查看通配符的相关说明,如果提示没有文档,则需要安装 yum install man-pages man-db man -y】


【波浪符号】

May refer to your home directory

$ cat ~/.bash_profile

May refer to another user\’s home directory

$ ls ~julie/public_html


【小括号和大括号】

Command Expansion: $() or 【$(命令)或者命令这样——那么命令会被预执行】

Prints output of one command as an argument to another

$ echo This system\’s name is $(hostname)

This system\’s name is server100.example.com

Brace Expansion: { }【大括号是每次匹配括号里的一个内容,可以以逗号分隔全写一遍,也可以用..来表示】

Shorthand for printing repetitive strings

【$+[]实现运算的功能】

echo $[$[$(date +%s)/86400]/365]

计算从Unix诞生到现在过了多少年

$AAA和${AAA}的区别

$varname实际上是${varname}的简略形式。

${varname}这种形式允许我们使用Shell字符串操作的更多高级功能


Aliases【别名】

  • Aliases let you create shortcuts to commands

$ alias dir=\'ls -laF\'

  • Use alias by itself to see all set aliases
  • Use alias followed by an alias name to see alias value

$ alias diralias dir=\'ls -laF\'

直接输入alias得到当前系统中所有的配置的别名

取消别名unalias


Environment Variables
  • Bash variables are local to a single shell by default

    • Set with VARIABLE=VALUE
  • Environment variables are inherited by child shells

    • Set with export VARIABLE=VALUE
    • Accessed by some programs for configuration
  • 变量名不能以数字开头。

  • 变量名尽量使用大写。

  • 变量以最后一次赋值为准

  • 环境变量的定义方法是在变量赋值前边加一个export,export可以在赋值的时候就加,也可以在后边手动加

    如果查看进程间的父子关系,使用pstree

  • /etc/profile中定义的变量就叫全局环境变量

  • ~/.bash_profile中定义的是用户环境变量

  • PATH=$PATH:.

于是脚本当前PATH变量就增加了当前目录作为命令的的PATH目录

  • env:显示用户的环境变量;
  • set :显示当前shell的定义的私有变量/本地变量,包括用户的环境变量,按变量名称排序;
  • export :显示当前导出成用户变量的shell变量,并显示变量的属性(是否只读),按变量名称排序;
  • declare :同set 一样,显示当前shell的定义的变量,包括用户的环境变量;

Some Common Variables【通用变量】
  • Configuration variables【配置变量】

    • PS1: Appearance of the bash prompt【命令提示符】
    • HISTFILESIZE: Number of commands in bash history【设置bash可以存多少历史记录,可以自行设置,默认是1000,如果改少成500,那么如果你关机或重启,则只会保存最后的500条,保存在.bash_history文件里】
  • PATH: Directories to look for executables in【可执行程序的搜索路径】

技巧:export PATH=..:.:$PATH ← 这样就把当前路径和当前路径的父路径一同加入了可执行命令的搜索路径,便于脚本中执行命令

  • EDITOR: Default text editor【默认编辑器】

  • Information variables

    • HOME: User\’s home directory【设置你的家目录在哪个目录下,但是改这个变量没有意义,这是一个信息查询变量,查询用的】
    • EUID: User\’s effective UID

去除特殊含义:

Backslash ( \ ) makes the next character literal【\去除后边第一个字符的特殊含义】

Quoting prevents expansion

Single quotes (\’) inhibit all expansion【单引号可以去除引号内所有字符的特殊含义】

Double quotes () inhibit all expansion, except:【双引号可以去除引号内所有字符的特殊含义,但是有几种特殊情况】

  • $ (dollar sign) – variable expansion【$去不掉】
  • (backquotes) - command substitution【去不掉】
  • \ (backslash) – single character inhibition【反斜杠去不掉】
  • ! (exclamation point) – history substitution【单号去不掉】

Creating Shell Scripts【创建脚本】
  • Step 1: Create a text file containing commands
    • First line contains the magic shebang sequence: #!【使用#!开头来声明脚本运行的shell】
      #!/bin/bash
    • Comment your scripts!
      • Comments start with a #【使用#来注释一行内容】
  • Step 2: Make the script executable:
    $ chmod u+x myscript.sh

    • To execute the new script:
      • Place the script file in a directory in the executable path, such as ~/bin or /usr/local/bin -OR-
      • Specify the absolute or relative path to the script on the command line

评论

还没有任何评论,你来说两句吧

津公网安备 12010302001147号 津ICP备18003766号