Linux 用户及权限管理

一・什么是用户


    用户:是能够获取系统资源的权限的集合

  Linux做为一个多任务,多进程的操作系统,必然会出现多个用户同时登陆的情况,做为运维人员     来说,用户管理是日常重要的工作内容之一。Linux中用户按照其性质划分可以分为以下几种:


  •   超级用户(root),拥有至高无上的权利,具有使用系统所有权限的能力;

  •   系统用户,为了保障系统运行的用户,一般不提供密码登录系统;

  •   普通用户,即一般用户,其使用系统权限通常受很大限制:


  •   UID:系统识别用户的ID标识;

  •   超级用户(root)的UID为0,

  •   系统用户的UID为1-499(Centos5,6),1-999(Centos7);

  •   普通用户的UID为500-65535(Centos5,6),1000-65535(Centos7);

    

    查看用户UID的命令:id username

    wKioL1bj_pyQWBlPAAAIhzrOmOI958.png

二・用户管理

 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

   此配置文件格式以:为分隔符,以root用户为例:

   第一字段:“root”   代表该用户的名称,用来对应UID

   第二字段:“ x "    代表该用户的密码,指向/etc/shadow文件中

   第三字段:“ 0”    代表用户UID

   第四字段:“ 0”    代表用户GID

   第五字段:“root”   代表用户信息说明列

   第六字段:“/root"   代表用户主文件夹

   第七字段:“/bin/bsah"代表用户默认Shell

   

   /etc/shadow

   root:$6$qU5xMWeOTrQLuEPhQqf2S3ge1RroLMbE6.D5RAm23rKQ/:16868:0:99999:7:::

   bin:*:16659:0:99999:7:::

   daemon:*:16659:0:99999:7:::

   此配置文件格式以:为分隔符,以root用户为例:

   第一字段:“root”   代表用户名称

   第二字段:“$6$q..” 代表密码

   第三字段:“16868”  代表最近一次修改密码的日期(`date +%s/86400+1`)

   第四字段:“0”     代表密码最短使用天数(不可变更时间,0表示随时可以改动)

   第五字段:“99999”  代表密码最长使用天数,99999表示永不过期

   第六字段:“7”     代表密码需要更改前的警告天数

   第七字段:“:”    代表密码过期后的宽限时间

   第八字段:“:”    代表账号失效日期

   第九字段:“:”    保留


三・用户管理相关命令

 1)useradd : 增加用户 

   useradd  [选项]  用户名

          -d, --home  directory:家目录路径;目标路径不能事先存在,指定一个目录为该用户的家目录;

          -g, --gid GROUP:指定用户的基本组组名或GID;

           -G, --groups GROUP1(当然这里可以有多个组,[组1,组2...]):用户所属的附加组列表,彼此间用逗号隔      开中间没有空格;

          -m, --create-home:强制创建家目录; 

          -M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;

          -r, --system:创建一个系统账户

   2)usermod: 修改用户信息

        -c, --comment  COMMENT

       -d, --home  HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的          文件会移动到新目录中;

       -g, --gid GROUP

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

       -l, --login  NEW_LOGIN:修改当前用户的用户名;

      -s, --shell  SHELL

     -u, --uid  UID

     -L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”

     -U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”

3)userdel:删除用户

   userdel [选项]  登录名

   -r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除

 4)passwd:密码管理命令

   -l:锁定密码

   -u:解锁解密

   -d:清除密码

    

   --stdin:从标准输入接收密码;

    echo "PASSWORD" | passwd  --stdin  USERNAME


 5)id:查看用户UID

   -u:仅查看uid

   -g:仅查看gid

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

   -n:显示名称,而非ID


 6)su:切换用户命令

   su  -l  USERNAME  读取目标用户的配置文件(登录式切换,完全切换);



四・组账户

1)与组用户管理相关的配置文件

    /etc/group

      root:x:0:

      bin:x:1:

      daemon:x:2:

2)组用户管理命令

 groupadd添加组

     groupadd  [选项]  grouname

  -g  GID:指明GID;   

  -r, --system:系统组;

 gpasswd:增加,删除组成员  

 -a:增加组成员

 gpasswd -a mike root   增加mike到root组中

 -d:删除组成员

 gpasswd -d mike root   将mike从root组中删除


 groups:查看当前用户所属的组

   groups username


五・权限管理

 进程的安全上下文:

 

进程:运行一个程序文件而产生,通常由一个用户发起;进程则以发起者的身份运行;

判断进程的发起者是否与文件属主相同,如果是,则以属主的身份来访问,从而应用属主权限;否则

判断进程的发起者是否属于文件的属组,如果是,则应用属组权限;否则应用“其它”权限


例外场景:factl, suid, sgid, sticky


文件:

   r:可获取文件的数据;

   w:可修改文件的数据;

   x:可将此文件运行为进程;

目录:

   r:可使用ls命令获取其下的所有文件列表;但不可以使用“ls -l”去获取详细信息,也不可以cd至此目录             中;

  w:可修改此目录下的文件列表, 即可以在此目录下创建或删除文件;

  x:可以使用"ls -l“命令来获取其下的文件的详细属性信息,也可cd至此目录中;



首先我们了解一写特殊的字符

    u=user

    g=group

    o=other

    a=(u+g+o)表示所有人

  MODE:

  赋权表示法:直接操作一类用户的所有权限位rwx;

   u=

   g=

   o=

   a=

[www@linux test2]$  chmod  u=rwx test2.txt 
[www@linux test2]$ ll
total 0
-rwxrw-r-- 1 www www 0 Mar 12 10:48 test2.txt
[www@linux test2]$

授权表示法:操作一类用户一位或多位权限(中间不使用逗号)

   u+, u-

   g+, g-

   o+, o-

   a+, a-

[www@linux  test ]$  chmod  a+x  test .txt 
[www@linux  test ]$ ll
total 0
-rwxrwxr-x 1 www www 0 Mar 12 10:47  test .txt
[www@linux  test ]$

###############################################

 

[www@linux  test ]$  chmod  u-x,g-x,o-x  test .txt
[www@linux  test ]$ ll
total 0
-rw-rw-r-- 1 www www  0 Mar 12 10:48 test1.txt
drwxrwxr-x 2 www www 22 Mar 12 10:48 test2
-rw-rw-r-- 1 www www  0 Mar 12 10:47  test .txt
[www@linux  test ]$

这样是不是更加的明白呢?

两类用户权限收授机制相同:ug+, ug-, ...

不同类的用户权限不同:u+,g+,o+

[www@linux  test ]$  chmod  ug-w  test .txt
[www@linux  test ]$ ll
total 0
-rw-rw-r-- 1 www www  0 Mar 12 10:48 test1.txt
drwxrwxr-x 2 www www 22 Mar 12 10:48 test2
-r--r--r-- 1 www www  0 Mar 12 10:47  test .txt
[www@linux  test ]$

****************敲一敲代码看看是否一样呢?**************************

当然我们还是有别的表示方法的

    r=4

    w=2

    x=1

[root@linux test2] # chmod 646 test2.txt 
[root@linux test2] # ll
total 0
-rw-r--rw- 1 root root 0 Mar 12 10:48 test2.txt
[root@linux test2] #

常用选项:

    -R, --recursive:递归修改;(小心使用哦)

[www@linux tmp1]$  chmod  -R a=rwx tmp2
[www@linux tmp1]$ ll
drwxrwxrwx 2 www www 42 Mar 12 10:56 tmp2
[www@linux tmp1]$  cd  tmp2
[www@linux tmp2]$ ll
-rwxrwxrwx 1 www www 0 Mar 12 10:56 1.txt
-rwxrwxrwx 1 www www 0 Mar 12 10:56 2.txt
-rwxrwxrwx 1 www www 0 Mar 12 10:56 3.txt
[www@linux tmp2]$

chown命令:

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

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

[root@linux test2] # ll
total 0
-rwxrw-r-- 1 www www 0 Mar 12 10:48 test2.txt
[root@linux test2] # chown root test2.txt
[root@linux test2] # ll
total 0
-rwxrw-r-- 1 root www 0 Mar 12 10:48 test2.txt
[root@linux test2] #

看看上面发生什么,文件已经不是www的了

 常用选项:

 -R, --recursive:递归修改;

********************这一个就不演示了**************************

chgrp命令:

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

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

刚才我们把文件拥有者改了,那么组能不能改呢?

[root@linux test2] # chgrp root test2.txt 
[root@linux test2] # ll
total 0
-rwxrw-r-- 1 root root 0 Mar 12 10:48 test2.txt
[root@linux test2] #

这完全可以说是自己创建的文件吗?哈哈 你看明白了吗

umask:显示或设定文件模式掩码

文件:

666-umask

[root@linux test2] # ll
total 0
-rw-r--r-- 1 root linux 0 Mar 12 11:11 1.txt
[root@linux test2] # umask
0022
[root@linux test2] #

目录:

777-umask

[root@linux test2] # ll
total 0
-rw-r--r-- 1 root linux 0 Mar 12 11:11 1.txt
drwxr-xr-x 2 root linux 6 Mar 12 11:14 nihao
[root@linux test2] # umask
0022
[root@linux test2] #

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

那我们在终端中看的更加仔细点吧


显示:

umask

管理员和普通用户的UMASK还是不一样的

管理员:

[root@linux /] # umask
0022
[root@linux /] #

 普通用户

[www@linux ~]$  umask
0002
[www@linux ~]$

umask MASK

[www@linux ~]$  umask
0002
[www@linux ~]$

注意:此设定仅对当前shell进程有效;


你可能感兴趣的:(权限,liunx,用户)