码迷,mamicode.com
首页 > 系统相关 > 详细

Linux基础 用户管理 权限管理 正则表达式

时间:2015-08-31 15:26:03      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:linux 用户 权限 正则表达式

一 Linux的UID 和GID

    UID的编号为0-65535

    0为管理员Root的UID

    1-60000为普通用户的UID  

        其中1-499(CenOS6) 1-999(enOS7)为系统用户使用(作为服务权限账号)

        500-60000(CenOS6) 1000-60000(enOS7)为普通登陆用户使用

        60000以后的基本不会使用

   

    GID的编号为0-65535

    0为管理员Root组的GID

    1-60000为普通组的UID 

        其中1-499(CenOS6) 1-999(enOS7)为系统组使用(作为服务账号组)

        500-60000(CenOS6) 1000-60000(enOS7)为普通登陆用户组使用

        60000以后的基本不会使用

当创建一个账号的时候不指定用户基本组,会自动创建和账号UID相同GID的基本组

 

二 Linux用户相关的4个配置文件

       /etc/passwd    存放用户名  UID  基本组 家目录
       /etc/group      存放组名  GID  组内包含的用户
       /etc/shadow    存放用户密码及相关属性
       /etc/gshadow  存放组密码相关属性

 

/etc/passwd
格式   account:password:UID:GID:GECOS:directory:shell
解释   登录名:X:UID:GID:注释信息:家目录:用户默认shell
例如   root:x:0:0:root:/root:/bin/bash
password字段只有占位符X,出于安全问题,password另外存放在/etc/shadow
查看详细文档命令

whatis passwd

man 5 passwd

/etc/shadow
格式    login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
解释    登录名:加密密码:上次修改密码的时间:修改密码最小时间间隔:修改密码最大时间间隔:密码过期前警告时间:密码过期后还能使用的时间:账号失效时间:保留字段

举例   

root:$6$H98QFBU6mj9/JK.4$6W..X0l3L0qLl/isPumCmx6Vr/qSjanYClVoDAaBMO64lV85ZWQba1VfAE4lMmRlYVNh5Zjk3mqw9y0hfZLfQ/:16671:0:99999:7:::

其中密码字段有三段,以$分隔

$6$H98QFBU6mj9/JK.4$6W..X0l3L0qLl/isPumCmx6Vr/qSjanYClVoDAaBMO64lV85ZWQba1VfAE4lMmRlYVNh5Zjk3mqw9y0hfZLfQ/

第一段  $6$ 加密方式
  查看详细文档命令

  whatis crypt 
  man crypt

             ID  | Method
              ---------------------------------------------------------
              1   | MD5
              2a  | Blowfish (not in mainline glibc; added in some Linux distributions)
              5   | SHA-256 (since glibc 2.7)
              6   | SHA-512 (since glibc 2.7)
第二段  $H98QFBU6mj9/JK.4$  随机生成的盐
第三段  加密后的密码 
其中的 date of last password change和account expiration date 时间为距离1970年1月1 的时间

查看详细文档命令

whatis shadow 
man 5 shadow

/etc/group
格式    group_name:passwd:GID:user_list

查看详细文档命令

whatis group
man 5 group

/etc/gshadow
    很少用,在组切换的时候用
查看详细文档命令

whatis gshadow 
man 5 gshadow


三 Linux操作用户的常用命令
 在使用命令操作用户时,如果不加参数,则参照默认的用户配置文件
    /etc/login.defs  用户创建规则
    /etc/default/useradd  默认使用的配置文件

useradd    创建用户
    useradd [options] LOGIN
    useradd -D [options]  设置创建用户的默认选项
      -b, --base-dir BASE_DIR
      -c, --comment COMMENT
      -d, --home HOME_DIR     复制/etc/skel到家目录作文配置文件
      -g, --gid GROUP  不指定会创建和用户同名的基本组
      -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
      -M  Do not create the user‘s home directory ,如查为系统用户默认不创建家目录
      -N, --no-user-group  不创建和UID相同的GID 必须用-g 指定基本组
      -o, --non-unique  允许创建相同UID的账号
      -r, --system             Create a system account.
      -s, --shell SHELL
      -u, --uid UID
 例:创建用户oracle 附加组database sql  ID 3000 家目录为/home/database  

useradd -u 3000 -G database,sql -d /home/database oracle

usermod
        用户属性修改
        usermod [options] LOGIN
        参数和useradd一至
        -a, --append     Add the user to the supplementary group(s). Use only with the -G option.
        -c, --comment COMMENT
        -d, --home HOME_DIR  修改家目录,旧的文件不会移动到新的家目录 。

            -m, --move-home     与-d联合使用,迁移旧文件到新家目录
        -e, --expiredate EXPIRE_DATE
        -g, --gid GROUP
        -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
        -l, --login NEW_LOGIN  修改登陆名,用户的家目录只能手动修改,其它自动修改。
        -L, --lock
        -o, --non-unique  允许用户的ID 为同一个
        -p, --password PASSWORD
        -s, --shell SHELL
        -u, --uid UID
        -U, --unlock

passwd  给用户添加密码
         passwd   [options]   [username]
        --stdin  从标准输出接收用户密码

userdel
    userdel [options] LOGIN
         -f, --force   强制删除用户,即使用户还在登录状态
         -r, --remove  删除用户同时删除家目录

groupadd
     groupadd [options] group
        -f, --force 待测试
        -g, --gid GID
        -o, --non-unique  允行添加相同GID的组
        -r, --system    Create a system group.

groupmod    组属性修改
    groupmod [options] GROUP
    -g, --gid GID         修改GID
    -n, --new-name NEW_GROUP  修改组名
 
gpasswd             
        gpasswd [option] group
     -a, --add user
     -d, --delete user
     -r, --remove-password

groupdel      
        有用户在基本组 ,基本组无法被删除
  
newgrp 临时切换基本组为指定的组
        有附加组不用输密码, 如果没有附加组要输入组密码
chage     
        修改用户账号及密码的属性
        chage [options] [LOGIN]
        -d, --lastday LAST_DAY
        -E, --expiredate EXPIRE_DATE
        -l, --list
  
chsh   修改用户的shell,基本用不到
chfn   修改用户的指纹,用户的个人信息
      -f, --full-name full-name
      -o, --office office
      -p, --office-phone office-phone
      -h, --home-phone home-phone
  
finger

id  显示用户的各种有效信息和组ID
    id [OPTION]... [USERNAME]
        -g, --group
        -G, --groups
        -n, --name
        -u, --user

w   显示现在谁在用系统和在做什么
who 显示现在谁在用系统
     -a, --all
     -b, --boot 显示系统上次启动的时间
     -d, --dead 显示死掉的进程
     -q, --count 显示全部的登陆用户和登陆的个数
     -r, --runlevel
 
whoami 查询当前的用户是哪个

pwck    verify integrity of password files
  检查/etc/passwd 和 /etc/shadow 中的内容是不是符合格式
  
su  switch user 切换用户
        su  user  半切换
        su - user     su -l user  完会切换
        以指定用户的身份执行命令
        su - user -c "command"

四 LINUX 文件权限管理

 用户对文件的访问权限有三种:
  r, w, x

  文件:
   r: 可使用文件查看工具查看其内容;
   w: 可使用文件编辑工具编辑其内容;
   x: 可向内核请求将此文件运行为进程;

  目录:
   r: 可使用ls命令列出目录中的文件或子目录列表;
   w: 可在此目录中创建或删除文件;
   x:可使用‘ls -l’列出目录文件及子目录的详细属性信息;可使用cd命令切换工作目录为指定目录;

 文件的权限主要针对三类对象进行定义:
  ownuer: u, 属主;
  group: g, 属组;
  other: o, 其它;

 某类用户对某文件的访问权限:
      ---     000     0
      --x     001     1
      -w-    010     2
      -wx    011     3
      r--     100     4
      r-x     101     5
      rw-    110     6
      rwx    111     7

      664:rw-rw-r--
      rwxr-x---: 750

控制权限的常用命令

chmod  修改文件权限:
       chmod [OPTION]... MODE[,MODE]... FILE...  直接设置权限
       chmod [OPTION]... OCTAL-MODE FILE...   八进制文件权限
       chmod [OPTION]... --reference=RFILE FILE.. 复制目标文件权限

       三类用户:
        u: owner
        g: group
        o: other
        a: all    一般可以省略,默认代表all

        两种用法:
         =mode  =rx  =r  =rwx  =
   =后面为空为取消权限
   例:ug=rx, go=    chmod g=rw yum.log
   
         [+|-]mode
          u+r +w  +x
   例:chmod a+w yum.log  

chmod 640  yum.log

            chmod 作用于目录 ,不会作用于子文件
                -R, --recursive 递归修改权限,会作用于子文件
  例:  复制yum.log 的权限给test.log, 两个文件的权限相同,和yum.log一至

chmod --reference=yum.log test.log

 
chown 修改文件属主
        chown [OPTION]... [OWNER][:[GROUP]] FILE...
        chown [OPTION]... --reference=RFILE FILE...
         -R: recursive

chgrp  修改文件属组
  chgrp [OPTION]... GROUP FILE...
        chgrp [OPTION]... --reference=RFILE FILE...
   -R: recursive

umask:遮罩码
     目录:777-umask
     文件:666-umask
      如果某一类用户的权限减得的结果有执行权限,此时会自动让其权限位加1;
 
     umask UMASK
      设定:仅对当前shell进程有效;

 

五 grep: Global search REgular expression and Print out the line.
  作用:文本搜索工具,根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行;
  模式:由正则表达式的元字符及文本字符所编写的过滤条件;

   元字符:字符不表示其字面意义,而用于表示通配或控制功能;

  分两类:
   基本正则表达式:BRE
   扩展正则表达式:ERE

 grep [OPTIONS] PATTERN [FILE...]:
  选项:
   --color=auto:对匹配到的串做高亮显示;
   -v:显示模式匹配不到行;
   -i: 忽略字符大小写;
   -o: 仅显示能够被模式匹配到的串本行;
   -q: 静默模式;
   -E:使用扩展的正则表达式;

  基本正则表达式的元字符:
   字符匹配:
    .        匹配任意单个字符;
    []       匹配指定范围内的任意单个字符;
    [^ ]    匹配指定范围内的任意单个字符;

    [:lower:], [:upper:], ...

   次数匹配:用于要指定其次数的字符的后面;
    *              任意次;
    \?             0或1次;
    \+            1或多次;
    \{m\}        精确限制为m次;
    \{m,n\}     至少m次,至多n次,[m,n]
     \{0,n\}     至多n次;
     \{m,\}      至少m次;

    .*              匹配任意长度的任意字符;

   位置锚定:
    ^:             行首锚定;用于模式的最左侧;
    $              行尾锚定;用于模式的最右侧;
    \<, \b       词首锚定;用于表示单词的模式的左侧;
    \>, \b       词尾锚定;用于表示单词的模式的右侧;
    ^$            空白行;

   分组:\(\)

    分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...
     \1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
     \2:
     ...

    后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

 扩展的正则表达式:
  grep家庭有三个命令:
   grep         基本正则表达式
    -E            扩展正则表达式
    -F            不支持正则表达式
   egrep       扩展正则表达式
   fgrep        不支持正则表达式

  扩展正则表达式的元字符:
   字符匹配:
    .                 任意单个字符
    []                匹配指定范围内的任意单个字符;    

    [^]             匹配指定范围内的任意单个字符;

   次数匹配:
    *                任意次

    ?                0次或1次;
    +               1次以上;
    {m}            精确匹配m次;
    {m,n}         至少m次,至多n次;

   锚定:
    ^                 锚定行首
    $                 锚定行尾
    \<, \b          词首锚定;用于表示单词的模式的左侧;

    \>, \b          词尾锚定;用于表示单词的模式的右侧;

   分组:()
    后向引用:\1, \2, ...

   或者:
      a|b 
      C|cat: 不表示Cat或cat,而表示C或cat;
      要写成(C|c)at

 

POSIXNon-standardPerl/TclVimASCIIDescription
[:alnum:][A-Za-z0-9]Alphanumeric characters
[:word:]\w\w[A-Za-z0-9_]Alphanumeric characters plus "_"
\W\W[^A-Za-z0-9_]Non-word characters
[:alpha:]\a[A-Za-z]Alphabetic characters
[:blank:]\s[ \t]Space and tab
\b\< \>(?<=\W)(?=\w)|(?<=\w)(?=\W)Word boundaries
[:cntrl:][\x00-\x1F\x7F]Control characters
[:digit:]\d\d[0-9]Digits
\D\D[^0-9]Non-digits
[:graph:][\x21-\x7E]Visible characters
[:lower:]\l[a-z]Lowercase letters
[:print:]\p[\x20-\x7E]Visible characters and the space character
[:punct:][][!"#$%&‘()*+,./:;<=>?@\^_`{|}~-]Punctuation characters
[:space:]\s\_s[ \t\r\n\v\f]Whitespace characters
\S\S[^ \t\r\n\v\f]Non-whitespace characters
[:upper:]\u[A-Z]Uppercase letters
[:xdigit:]\x[A-Fa-f0-9]Hexadecimal digits

 

 

练习:

   1、显示/etc/passwd文件中以bash结尾的行;     

grep --color  bash$ /etc/passwd

   2、显示/etc/passwd文件中的两位数或三位数;     

grep --color "\<[[:digit:]]\{2,3\}\>" /etc/passwd

   3、显示‘netstat -tan‘命令结果中以‘LISTEN’后跟0个、1个或多个空白字符结尾的行;     

netstat -tan | grep --color  "LISTEN[[:space:]]*$"

   4、添加用户bash,testbash, basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;

useradd testbash

useradd basher

useradd nologin -s /sbin/nologin

grep --color -E "^([[:alnum:]]*):.*\1$"  /etc/passwd

   5、显示当前系统上root、centos或user1用户的默认的shell和UID;     

grep --color -E  "^root|centos|user1\>" /etc/passwd | cut -d: -f 1,3,7

   6、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行;

grep --color -E "\<[[:alnum:]_]*\(\)" /etc/rc.d/init.d/functions

   7、使用echo输出一个路径,而后egrep找出其路径基名;    

echo /etc/rc.d/init.d/functions | grep --color -E -o "([^/])*$"

    进一步地:使用egrep取出其目录名;     

echo /etc/rc.d/init.d/functions | grep --color -E -o "^.*/"

   8、找出ifconfig命令执行结果中1-255之间的数字;

ifconfig | grep --color -E "\<[[:digit:]]{1,2}\>|\<1[[:digit:]]{2}\>|\<2[0-4][0-9]\>|\<25[0-5]\>"

 

本文出自 “每天进步一点” 博客,请务必保留此出处http://1step.blog.51cto.com/1160799/1690091

Linux基础 用户管理 权限管理 正则表达式

标签:linux 用户 权限 正则表达式

原文地址:http://1step.blog.51cto.com/1160799/1690091

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!