Linux用户和权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户和权限管理相关的知识,希望对你有一定的参考价值。

1、用户

   Linux用户分为两类:管理员和普通用户。

   管理员:用户名为root,它几乎有行使一切命令的权限,一般情况下不建议使用root权限,因为Linux是不支持回收机制的。

           比如:rm -rf /或rm -rf /*等.

   普通用户:分为系统用户和登录用户

            系统用户:仅用于服务运行程序,是系统为了满足服务运行所创建的内建用户,而且系统用户是不能登录的。

            登录用户:指的是系统资源的正常使用者,大多数的用户都是此类。

   那该怎么识别用户呢?Linux系统并不会直接认识“用户名”,而是通过用户的ID(UID),每一个用户都有自己的ID号,系统就是通过认识ID号来判断用户。

     UID通常用16bits的二进制表示的,从0到65535,管理员的uid就是0,普通用户分为系统用户和登录用户,它们的UID表示为:

     系统用户:对于centos5,6是从1-499,centos7是1-999.

     登录用户:对于centos5,6是500开始,一般到65535,centos7是1000开始,一般到65535.

   我们登录系统是通过username,而系统识别用户是通过UID, 系统是怎么知道0就是表示root,1-499就是表示系统用户,因为系统是通过解析库/etc/passwd来进行识别的。例如登录的是root,以root为查找键去解析库里查找已知对应的值,找到UID为0,反之亦然。

    

   组也分管理员组和普通用户组,普通用户组也分系统用户组和登录用户组,组的ID称为组ID,和用户的UID分类的值一样。组的解析库是/etc/group

   一个用户可以有多个附加组,也可以只有一个主组,查看用户的ID和所属组的命令:id  username

 [[email protected] ~]# id gentoo 

 uid=5003(gentoo) gid=5006(gentoo) 组=5006(gentoo),5002(peguin),5003(distro)

 其中gid表示的就是组ID,组表示主组,5002和5003表示用户的附加组。

2、用户和组的管理

   用户:useradd,usermod,userdel

    组  :groupadd,groupmod,groupdel

   useradd:表示添加用户

      选项:-c:注释信息 -d:指明家目录 -u:指定UID -g:指明组或者组ID -G:添加附加组,多个可用,隔开 -s:更改登录的shell,默认为/bin/bash  

  [[email protected] ~]# useradd -c testin -u 2000 -G gentoo,distro -s /bin/tcsh test

  [[email protected] ~]# id test

     uid=2000(test) gid=2000(test) 组=2000(test),5003(distro),5006(gentoo)

    注意:更改登录的shell时,其自定义的shell必须为可登录的shell,且要位于/etc/shells文件中。

 usermod:修改用户信息

      选项:-c:修改注释信息

            -d:修改家目录为新的位置,和 -m 一起使用会移动到新目录中

            -g:改基本组ID

            -G:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组

             -l:修改用户的用户名

             -u:uid      

   [[email protected] ~]# usermod -c testout -u 2001 -G hive  test

   [[email protected] ~]# id test

      uid=2001(test) gid=2000(test) 组=2000(test),10102(hive)

  userdel:删除用户

     -r:家目录和邮箱一并删除     

  [[email protected] ~]# userdel -r test

  [[email protected] ~]# id test

     id: test: no such user

    注意:如果不加-r只是删除了用户,但用户的家目录和邮箱还是存在。


groupadd:添加组信息    groupadd [选项] group

     选项:-g:GID   -r:添加系统组  

   [[email protected] ~]# groupadd -g 3000 test 

    test:x:3000:    

groupmod:修改组信息

     选项: -g:GID   -n:修改组名称

 groupdel:删除组信息

   [[email protected] ~]# groupdel   test      

 id:查看用户相关的ID信息

         -G:查看所属的所有组的 

 [[email protected] tmp]# id -G gentoo

  5006 5002 5003


3、权限管理

   [[email protected] tmp]# ll /tmp/        

   -rw-r--r--  1 root root  4069 3月   5 15:45 centos-release

    drwxr-xr-x  2 root root    97 3月   5 16:21 conf.d

    drwxr-xr-x  2 root root    78 3月   5 16:17 etc

  ls -l命令看/tmp目录下的文件,可以看到有-rw-r--r--,root(属主),root(属组),4069(文件大小),3月   5 15:45(文件最后一次被修改的时间),centos-release(文件名)。

    -rw-r--r--拆分来看,-,rw-,r--,r--,可以分成四份,第一个“-”表示文件的类型,普通文件,第二个“rw-”表示owner(属主)权限,第三个“r--”表示group(属组)权限,第四个表示“r--”other(其他)权限。

    文件的类型有:  -d:普通文件  -d:目录文件  -l:链接文件  -s:套接口文件  -p:管道文件  -b:块设备文件 -c:字符文件

    1、基本权限:

     r:readable 可读    对文件来说,具有读取文件内容的的权限,对目录来说,只能用ls命令查看目录下的文件列表。

     w:wirtable 可写    对文件来说,具有修改文件内容的的权限,对目录来说,可以修改目录下的文件列表,也可以删除和创建文件。

     x:execute  可执行   对文件来说,具有执行文件内容的的权限,对目录来说,可以用ls -l命令获取目录下文件列表的详细信息,也可以cd此目录。

   

     权限组合机制:以owern为例      

                    --- ;--x;-w-;-wx;r--;r-x;rw-;rwx;

                      000  001 010 011 100 101 110 111

         八进制:      0    1   2   3   4   5   6   7

            rwxr-xr-x表示755

    

   2、权限管理

        命令:chmod  chown chgrp 

      chmod命令:change file mode  bits

  用法: (1):通过用户的标识符来修改权限

            1.1  chmod  u=rw,g=rw,o=wx  file /path/to/somefile   可以单个,也可以两个或者三个一起赋予权限,中间用,隔开。 

                 如果两类用户权限相同,可以写成ug= ,og=

            1.2  chmod u+r/w/x或u-,g+r/w/x或g-,o+/r/w/x或o- /path/to/somefile    多个一起用,隔开

                 如果两类用户权限相同:ug+,ug-   

            1.3  chmod 755 /path/to/somefile   八进制附权法

            1.4  chmod --reference=file  file1   参考其他文件的权限位    比如:chmod --reference=/var/log/messages a.txt   参照/var/log目录下的message文件的权限给予a.txt文件附权

        

       chown命令:更改属主权限             

              chown [OPTION]... [OWNER][:[GROUP]] FILE...

                   chown [OPTION]... --reference=RFILE FILE... 

          chown  root /tmp/hello.txt   把hello.txt文件的属主改成root

          chown  :root /tmp/hello.txt  把hello.txt文件的属组改成root

          chown -R --reference=/var/log/messages /tmp/fstab  递归修改目录或者文件的属主

     

      chgrp命令:改属组权限             

             chgrp [OPTION]... GROUP FILE...

                  chgrp [OPTION]... --reference=RFILE FILE...

           chgrp  root /tmp/hello.txt   把hello.txt文件的属组改成root

           chgrp -R --reference=/var/log/messages /tmp/fstab  递归修改目录或者文件的属组

 

     umask:文件的遮罩码  功能是查看和修改文件的遮罩码

         显示umask:  umask     修改umask: umask  mask 

         对于管理员的umaks:022  登录用户的umak:002        

       [[email protected] tmp]# umask   [[email protected] tmp]$ umask 

         0022                          0002

       新建目录的权限:777-umask     新建文件的权限:666-umask

            新建一个文件名为test.txt  目录名为test         

      [[email protected] tmp]# ll -d test.txt test

       drwxr-xr-x 2 root root 6 3月   9 20:48 test       //777-22=755  

       -rw-r--r-- 1 root root 0 3月   9 20:46 test.txt   //666-22=644      

       注意:之所以文件用666去减,表示文件默认不能有执行权限;如果减的结果中,u,g,o有执行权限,则加1 

       

       例如:把root用户的umask设置023    umask 023  在新建一个文件test1.txt            

           [[email protected] tmp]# umask 023

               [[email protected] tmp]# umask

                 0023          

           [[email protected] tmp]# touch test1.txt

               [[email protected] tmp]# ll -d test1.txt

                -rw-r--r-- 1 root root 0 3月   9 21:01 test1.txt

             本来文件权限应该是666-23=643,那就应该是-rw-r---wx,具有可执行的权限,但因为文件默认不能有执行权限,所有在othere(其他)这加1,变成644。

         

         

         

 

         



              




以上是关于Linux用户和权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记——Linux用户管理和权限管理

linux账号和权限管理

[Linux 004]——用户和用户组以及 Linux 权限管理

Linux用户权限管理命令

Linux系列教程(十六)——Linux权限管理之ACL权限

Linux系统下用户以及权限管理