8月3日课堂笔记

课堂笔记

linux用户和组管理(非常非常重要)

   用户管理和组管理各种相关的应用程序

   简单的管理命令

安全上下文:

  每次对主机操作都是以发起一个进程来完成的,进程代表着人来执行操作,进程以其发起者的身份来运行;所以开机时有很多守护类的进程,我们应该以普通身份来运行,普通用户通常都是系统用户;从来不用登陆系统的;进程对文件的访问权限,取决于发起此进程的用户的权限;

    cat /etc/shadow 普通用户不运行访问这个文件

  系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统,仅仅是其他进程以他的身份来运行,从而能获取普通权限的;

groupadd:创建一个组 。tail -f 跟踪文件尾部并不退出

   groupadd [选项]  group_name(组名)

  -g GID:指定GID;不指定默认是上一个组的GID+1
  -r :创建系统组;系统组,运行很多进程,后台的服务管理,有些进程是随着开机启动起来的,每一个进程在访问资源时,一定是代表了某一个用户,开机时自动启动应该以普通用户的身份运行。

groupmod命令:修改组属性

   groupmod [选项] GROUP   
      -g GID      :修改GID,一定不能与某个组的id号相同
      -n  new_name :删除组名

groupdel命令:删除组, 注意:组里面有用户的话就不能删除 groupdel [选项] GROUP

useradd 命令;创建用户或更新默认新用户信息

创建一个用户时,如果没有指定组的话会自动创建一个与用户同名的组作为用户的私有组,

  useradd [选项] 登录名
     -u, --uid UID:指定UID;
     -g, --gid GROUP :指定基本组ID,不创建与用户名相同的私有组,注意此组必须事先存在,否则会出现错误;
     -G,--groups GROUP1,:指明用户所属的附加组,多个组之间用逗号分隔;
     -c,--comment COMMANT:指明注释信息;

重要:-d,–home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel/此目录并重命名实现的,指定的家目录路径如果事先存在,则不会为用户创建环境初始化配置文件;

(为了实现用户环境初始化,系统一般家目录的创建不是直接创建空目录,而是复制一个目录,并更名为用户所指名的目录)

     -s,--shell SHELL :指定用户的默认shell,可用的所有shell列表为etc/shells文件中;
     -r,--system;创建系统用户

   注意:创建用户时的诸多默认设定配置文件为/etc/loogin.defs

        useradd -D :   显示创建用户的默认配置;
     useradd -D 选项:  修改默认选项的值;
               -s

       修改的结果保存于/etc/default/useradd文件中;

usermod命令:修改用户属性

      usermod [选项]  登录
           -u,--uid UID:修改用户的ID为此处指定的新UID;
           -g,--g GROUP:修改用户所属的基本组,这个组事先必须存在 :
           -G,修改用户所属的附加组,如果有附加组,  原来的附加组会被覆盖,如果不想覆盖,则与a一起使用;

           -a,--append:与G一同使用,用于为用户追加新的附加组;
           -c,--comment COMMENT:修改注释信息;

           -d,-home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
           -m,--move -home只能与-d选项一同使用,用于将原来的家目录移动为新的家目录

           -l ,--login NEW_LOGIN:修改用户名;
           -s,--shell SHELL :修改用户的默认shell为此处用的shell;
           -L,--lock;锁定用户密码;即在此用户原来的密码字符串之前添加一个“!”
           -U,--unlock:解锁用户的密码;

userdel命令:删除用户

      userdel [选项] 登录
        -r:删除用户时一并删除其家目录;

passwd命令:

  passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays]
   [-x maxdays] [-w warndays] [-i inactivedays] [-S]
   [--stdin] [username]

(1)passwd:修改用户自己的密码;只能是管理员用户更改密码 (2)passwd USERNAME :修改指定用户的密码,但仅root有此权限;

  -l,-u:锁定和解锁用户
  -d:清除用户密码
  -e DAYS:过期期限,日期;
  -i DAYS:非活动期限;
  -n DAYS: 密码的最短使用期限
  -x DAYS:密码的最长使用期限
  -w DAYS:警告期限

重要:–stdin: echo "PASSWORD" | passwd –stdin USERNAME 读密码时标准输入

gpasswd命令:

 组密码文件

  用户的组管理
    gpasswd [选项] group  
       -a USERNAME:向组中添加用户
       -d USERNAME:从组中移除用户

newgrp命令:临时切换指定的组为基本组;

  -:模拟用户重新登录以实现重新初始化其工作环境;

chage命令:更改用户密码过期信息

   chage [选项] 登录名

     -d
     -E
     -w
     -n
     -M

id命令:

  显示用户的实际和有效id

   id [option]...[USER]
          -u:仅显示有效的UID
          -g:仅显示用户的基本组ID
          -G:仅显示用户的基本组ID
          -n:显示名字而非ID

su命令:switch user

    登录式切换:会通过读取目标用户的配置文件来重新初始化
     su - USERNAME

     su - l USERNAME
    非登录式切换:不会读取目标用户的配置文件进行初始化
      su USERNAME

   注意:管理员可无密码切换至其他任何用户;

   -c 'COMMAND' :仅以指定用户的身份运行此处指定的命令;

   su - 用户名 -c '命令'
   在切换的用户下执行一条命令,但不是真正切换用户

其他几个命令:chsh ,chfn,finger,whoami,pwck,

命令总结:groupadd,groupmod,groupdel,useradd,usermod,userdel

权限管理:

ls -l rwxrwxrwx: 左三位:定义user(owner)的权限 中三位:定义group的权限 右三位:定义other的权限

进程安全上下文:

    进程对文件的访问权限应用模型:
       进程的属主与文件的属主是否相同;如果相同,则应用属主权限;否则,则坚持进程的属主是否属于文件的属组;如果是,则应用属组权限;否则,就只能应用other的权限;

 权限:
    r:read,读
    w:write,写
    x:excute,执行

       文件:
          r:可获取文件的数据;
          w:可修改文件的数据;
          x: 可将此文件运行为进程;

        目录:
          r:可使用ls命令获取其下的所有文件列表;
          w:可修改此目录下的文件列表;即创建或删除文件;
          x:可cd至此目录中,并且可使用ls -l来获取所有文件的详细属性信息;


         mode:rwxrwxrwx
         ownership:user,group


       权限组合机制:
         ---  000  0
         --x  001  1
         -w-  010  2
         -wx  011  3
         r--  100  4
         r-x  101  5
         rw-  110  6
         rwx  111  7

 练习:rw-rw-r--,rwxrwxr-x
       664         775

权限管理命令:

    chmod命令:改变文件权限的
       chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...
       chmod [OPTION]... --reference=RFILE FILE...

        三类用户:
          u:属主 
          g: 属组
          o:其他
          a:所有


       (1)chmod [OPTION]... MODE[,MODE]... FILE...

           MODE标识法:
             赋权表示法:
                 赋权表示法:直接操作一类用户的所有权限位rwx
                 u=,g=,o=
                 a=

                  chmod g=rw  文件名
                  chmod ug=r  文件名

             授权表示法:直接操作以类用户的一个权限位r,w,x
                 u+,u-
                 g+,g-
                 o+,o-
                 a+,a-


        (2)chmod [OPTION]... OCTAL-MODE FILE...
             八进制
           chmod 660 文件名


       (3)chmod [OPTION]... --reference=RFILE FILE...
              chmod --reference=/var/log/message  文件名

       选项:
        -R,--recursive:递归,修改目录下所有文件的权限,递归一般在授权表示法中用的比较多。

注意:用户仅能修改属主为自己的那些文件

从属关系管理命令:chown,chgrp

  chown命令:改属主,也可以改属组
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...

       选项:
         -R:递归修改
    chown -R group名 目录/
    chown -R --reference =/tmp/moosefs /tmp/skel/

  chgrp命令:只能用来改组
      chgrp [OPTION]... GROUP FILE...
      chgrp [OPTION]... --reference=RFILE FILE...

注意:仅管理员可修改文件的属主和属组;

思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件? 不能,能 如何验证: mkdir /tmp/mytest cp /etc/fstab /tmp/mytest ls -l /tmp/mytest chown :distro /tmp/mytest ls -ld /tmp/mytest chmod g+w /tmp/mytest su – zhou cd /tmp/mytest echo asd >> fstab 提示权限不够 rm fstab 可以删除

所以,一个用户对一个文件没有写权限,未必不能删除,但一定不能往文件里面加东西,或者修改东西。一个用户对于一个文件是否拥有写权限,决定了是否能改内容,而对这个文件的目录有权限,决定了能否对里面的文件删除,所以对文件没有写权限不意味着不能删除。

umask:文件的权限反向掩码,遮罩码;

文件:
  666-umask
目录:
  777-umask

方法2:文件是rw-rw-rw- 去减 如027—-w-rwx 得:rw-r—–结果640 目录的话就用rwxrwxrwx区减

dir:777-umask
file:666-umask 有奇数加1,偶数保留

umask -S:直接以模式方法来显示 u=rwx,g=rx,o=rx umask -p:把umask值打上,并显示umask值

 注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果有执行权限,则需要将其加一
  umask:023
     666-023=644
     777-023=754

umask umask 027 touch mytast2 ll mytast2 -rw-r—– 1 root root 0 Jul 31 15:08 mytest2 mkdir mytast3 ll -d mytest3 drwxr-x— 2 root root 6 Jul 31 15:12 mytest3

 umask命令:
   umask:查看当前umask
    umask MASK: 设置umask 注意仅对当前shell有效

     用命令设定的,都是仅对当前shell有效。

linux中的三种特殊权限

 suid:s
 sgid:s
 sticky:t

前提:进程有属主和属组;文件有属主和属组 (1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限 (2)启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的主组 (3)进程访问文件时的权限,取决于进程的发起者 (a)进程的发起者,同文件的属主:则应用文件属主权限 (b)进程的发起者,属于文件属组:则应用文件属组权限 (c)应用文件“其他”权限

suid:4suid (s) 作用在二进制程序 权限的效果:当一个用户去运行程序的时候,他将继承该程序所有者的权限,用户去执行passwd,就继承了passed程序的所有root权限,就可以执行passwd

sgid:2sgid (s) 作用在二进制程序 都用于root组的权限

sticky:(t)粘滞位 作用在目录上 chmod o+t /textdir 用户在这目录下建的文件,别的用户无法删除,但是可以见用户,可以删除自己所见的文件。但root除外

sgid:作用在目录上 gpasswd -a wangcai group1 把用户旺财加入到group1组中 当一个目录上面实施了sgid 权限,意味着该目录创建的新文件或目录将自动继承该目录的所属组

练习:完成以下任务 1,新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/bin/nologin; 尝试root切换至用户,查看其命令提示符 2,新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/user/gentoo,密码同用户名; 3,新建用户fedora,其家目录为/users/fedora;密码同用户名 4,新建用户www,其家目录为/users/www;删除www用户,但保留其家目录; 5,为用户gentoo和fedora新增附加组mageedu; 6,复制目录/var/log至/tmp/目录,修改/tmp/log及内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;

install命令 复制文件,并能设置文件属性

 单源复制:
   install [OPTION]... [-T] SOURCE DEST 
 多源复制:  
   install [OPTION]... SOURCE... DIRECTORY 
 多源复制到目录:  
   install [OPTION]... -t DIRECTORY SOURCE...
 创建目录: 
   install [OPTION]... -d DIRECTORY...

常用选项:
 -m ,--mode=MODE:设定目标文件权限,否则默认755

[root@localhost ~]# install -m 640 /etc/inittab  /root
[root@localhost ~]# ll inittab 
-rw-r----- 1 root root 511 Jul 31 15:59 inittab


 -o ,--owner=OWNER:设定目标文件属主
install -o who -g distro -m 640 /etc/inittb  /tmp/inittab 


 -g,--group=GROUP :设定目标文件属组


 -d,创建目录
  install -d 目录名

mktemp命令: mktemp -create a temporary file or directory

  mktemp [option]...[TEMPLATE]   

    常用选项:
       -d:创建临时目录

   注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;

设定文件特定属性 chattr +i 不能删除,改名,更名 chattr +a 只能增加 lsattr 显示特定属性

访问控制列表 ACL:Access Control List ,实现灵活的权限管理 作用:针对文件权限控制谁能访问谁不能访问

setfacl -m(修改) u:用户名:权限 文件名 设置用户

getfacl 文件名 查看ACL权限

setfacl -m g:组名:权限 文件名 设置组

setfacl -x u:用户名 文件名 删除用户权限

setfacl -b 文件名 清空所有的ACL信息

nano acl。txt u:wang:0 u:wangcai:rw g:ti:r

setfacl -M acl。txt 文件名 直接改文件名,就能重复调用。

nano acl2.txt u:wang u:wangcai

setfacl -X acl2.txt 文件名

强调:当你添加ACL权限以后,所属组的权限就不是所属组的权限,而变成mask

mask,除了所有者和other,别的用户(组和自己添加的ACL用户)的权限不能超过mask。 setfacl -m::rm 文件名

setfacl -m(修改) d:u:用户名:权限 文件名 在目录上设置了默认的ACL权限,将来在目录里新建的文件就也有这个权限

setfacl -k 文件名 删除默认ACL权限

setfacl -b 文件名 清除所有的ACL权限

getfacl file1 | setfacl –set-file = – file2 复制file1的ACL权限给file2

setfacl -R -b *:清除所有的ACL权限

setfacl -R --set-file=/root/acl.bak * 能让权限恢复gid

原创文章,作者:15152188070,如若转载,请注明出处:http://www.178linux.com/28922

评论列表(2条)

  • 马哥教育
    马哥教育 2016-08-07 23:09

    文章整体架构清晰,对命令的语法和常用选项有了很好的总结,但是练习题怎么完成呢?

    • 15152188070
      15152188070 2016-08-08 08:24

      @马哥教育哥,练习题在另一篇博客上了