linux的用户组和权限管理

Posted

tags:

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

     用户的类别分为管理员和普通用户

 管理员用户即为root,普通用户分为两类,为系统用户和登录用户。系统用户仅能用于运行的服务程序,而登录用户则用于系统资源的正常使用者。

  每个用户都有自己的标识,为UserID,即UID。管理员的UID为0 。系统用户在CentOS6中为1-499,CentOS7为1-999。而普通用户在CentOS6中为500+,CentOS7中为1000+。

 ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

     解析库,就是在username与userid之间来回转换的,若‘id = 0’,则能得到当前用户为root,对于用户账号来讲,是存放在/etc/passwd文件中的,passwd不仅能存放用户的uid,username,还能存放用户的家目录,默认的shell等等。

    用户组分为管理员组和普通用户组。

   组也有组的标识,即组ID,在Linux中被称为GID(GroupID),管理员的GID = 0,对于系统组,在CentOS6中为1-499,CentOS7为1-999。而普通用户组在CentOS6中为500+,CentOS7中为1000+。组名称是人来用的,而组ID是机器用的,这就用到了名称解析,来实现GID与组名之间的转换。而组名解析库就是/etc/group

    一个用户可以属于几个组,由此引出组类别,组类别以用户为核心分为基本组和额外组;根据组内容纳的用户来划分,分为私有组和公共组。私有组是与用户名相同,且只有一个此用户;公共组则包含了多个用户。

    安全上下文:进程是以某个用户的身份运行,进程的操作权限取决于他所代表的用户。进程的运行者若与文件的属主相同,则以文件属主的身份访问该文件;若进程的运行者属于文件的属组,则以文件属组的身份来访问该文件,若不属于以上二者,则以其他身份来访问该文件。

   管理员权限之增删查改:

   用户和租的管理主要以命令运行。

      组:groupadd,groupmod,groupdel

      用户:useradd,usermod,userdel

      认证机制:passwd,给用户指派一个密码,用户的认证信息库存储于/etc/shadow,组的认证信息库存储于/etc/gshadow

      groupadd命令:添加组

       groupadd -g:指明GID  groupadd -r:--system

[[email protected] ~]# tail -1 /etc/group
mygrp:x:4004:

mygrp:组名      x:组密码占位符    4004:代表当前组的GID   空白表示:以此组为附加组的用户列表,以逗号分割

以GID为2000新建一个用户组,则能查看改组的GID为2000。

 ~]# groupadd -g 2000 testgrp
[[email protected] ~]# tail -1 /etc/group
testgrp:x:2000:

若创建一个名为jie的系统组,则能看到组名为jie,组ID为992

 ~]# groupadd -r jie
[[email protected] ~]# tail -1 /etc/group
jie:x:992:

若要指明改组的GID为911,则用-g来指明gid

 ~]# groupadd -r -g 911 wang
[[email protected] ~]# tail -1 /etc/group
wang:x:911:

若发现创建的组的信息不符合,则用groupmod来修改组信息。

   groupmod -g:修改GID   groupmod -n:修改组名

若将刚刚创建的系统组名为wang的用户的GID改为119,则为:

~]# groupmod -g 119 wang
[[email protected] ~]# tail -1 /etc/group
wang:x:119:

     若不需要这个组了,则用groupdel去删除组。

 若删掉刚刚创建好的jie的组,则为

~]# groupdel jie

    useradd命令:添加用户

添加一个用户名为wang的用户:

 ~]# useradd wang
[[email protected] ~]# tail -1 /etc/passwd
wang:x:3006:3006::/home/wang:/bin.tcsh

useradd -c:指明用户的注释信息,一般为用户的全名

useradd -d:指明用户的家目录路径,目标路径不能实现存在  /path/to/home   

useradd -g:指明用户的GID

在这里创建一个GID为4911的GID,但是因为4911这个组不存在,所以需要先创建一个组ID为4911的组。

 ~]# useradd -g 4911 wangwang
[[email protected] ~]# id wangwang
uid=3912(wangwang) gid=4911(wangwang) 组=4911(wangwang)


useradd -G:用户还属于的其他附加组组列表,每个组间用逗号隔开,中间无空格

useradd -m:强制创建家目录

useradd -M:不创建家目录

useradd -s:指明用户的shell名

~]# useradd -s /bin/csh nan
[[email protected] ~]# tail -1 /etc/passwd
nan:x:3913:3913::/home/nan:/bin/csh

useradd -u:表明用户的UID号

创建一个名为jie的用户,并指明该用户的uid为3911

 ~]# id jie
uid=3911(jie) gid=3911(jie) 组=3911(jie)

用户提供默认配置的配置文件:/etc/login.defs,/etc/default/useradd

usermod命令:修改账号信息

    usermod -c: 修改注释信息

    usermod -d:用户的新登录目录,用-d的同时要用到-m,会将用户此前目录中的内容移动到新目录中。

    usermod -g:修改用户的GID

    usermod -l:修改当前用户的用户名

    usermod -L:锁定用户的密码。这会在用户加密的密码之前放置一个‘!’。

 ~]# tail /etc/shadow
mageedu:$6$1eWrOetY$DfLZgquGiOaNkwpEF4ItMipz.1kpn7Q.s6oXyoW2bALkWesRWHCCACICkJ.2zBXDbwEw0ibR.wxStLI41ZhfF1:16859:0:99999:7:::

在执行usermod -L之后:可看见在开头有一个‘!’。

 ~]# tail /etc/shadow
mageedu:!$6$1eWrOetY$DfLZgquGiOaNkwpEF4ItMipz.1kpn7Q.s6oXyoW2bALkWesRWHCCACICkJ.2zBXDbwEw0ibR.wxStLI41ZhfF1:16859:0:99999:7:::

若要解锁该账户,则用usermod -U来解锁。

 ~]# tail /etc/shadow
mageedu:$6$1eWrOetY$DfLZgquGiOaNkwpEF4ItMipz.1kpn7Q.s6oXyoW2bALkWesRWHCCACICkJ.2zBXDbwEw0ibR.wxStLI41ZhfF1:16859:0:99999:7:::

     userdel:删除用户账号

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

[[email protected] skel]# ls /var/spool/mail
gentoo  hive  jie  mageedu  mageeud  mint NAME  nan  rpc  slackware  strom  ubuntu wang  wangjie  wangwang
[[email protected] skel]# userdel -r ubuntu
[[email protected] skel]# ls /var/spool/mail
gentoo  hive  jie  mageedu  mageeud  mint NAME  nan  rpc  slackware  strom  wang wangjie  wangwang

  passwd命令:密码管理命令

  passwd不带任何参数:修改自己的密码

  passwd username:修改其他用户的密码,进管理员有权限。

~]# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

  passw -l:锁定密码

  passwd -u:解锁密码

  passwd -f:强制生效,含lock无法用

  passwd -d:清除密码

  passwd -e:账号的过期期限

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

 ~]# echo "12345678" | passwd --stdinwangjie
更改用户 wangjie 的密码 。
passwd:所有的身份验证令牌已经成功更新。

指的是echo一个12345678作为wangjie的密码。

 id命令:查看用户相关的id信息

    id -u:仅查看uid

    id -g:仅查看gid

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

    id -n:显示名称,而非ID

查看用户wangjie的UID

~]# id -u wangjie
1001

  su命令:switch user

      切换用户时:

     (1)不读取目标用户的配置文件(非登陆式切换,半切换)

           su  USERNAME

     (2)读取目标用户的配置文件(登陆式切换,全切换)

            su -l USERNAME     su - USERNAME

root切换到任何其他用户都无需密码,普通用户切换到其他用户需要密码。

   gpasswd命令:为组添加密码

  组密码文件:/etc/gshadow

gpasswd -a USERNAME:向此组添加用户,以此组作为附加组

gpasswd -d USERNAME:从此组中移除此用户

   newgrp命令:登陆到一个新组

   chage:修改用户账号的各种期限

若要添加一个用户,则系统中发生了什么看不见的操作?

/etc/default/useradd定义了新建用户的属性,将/etc/skel/文件复制到新建用户的家目录中。

 用户的权限:

     大体上分为三类用户,属主,属组和其他。权限分为r(可读的)、w(可写的和)x(可执行的)。

 文件的权限:

   r:可使ls命令去获取其下的所有文件列表,但不能用ls -l去查看目录信息,也不能cd到此目录中。

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

   x:可用ls -l来获取其详细信息,也可以cd到此目录。

权限用10个字母来表示。

-rwxrwxrwx,除了第一个之外,每三个字母为一组。

第一个(-)代表这个文件是目录,文件或者链接文件等。用(d,-,l,b,c)来表示。

第一组rwx代表用户的属主,第二组rwx代表用户的属组,第三组rwx代表其他。

若要改变用户权限,则使用chmod命令。

~]# ls -l /tmp/
总用量 24
drwxr--r--. 2 root    root       6 3月   6 20:09 testing

    在上面可以看到用户的属组权限只为一个r,那么我想要属组权限有写权限,要其他有可执行权限,则用chmod命令。

~]# chmod 765 /tmp/testing
 ~]# ls -l /tmp/
drwxrw-r-x. 2 root    root       6 3月   6 20:09 testing

由上可见用户的权限被我用chmod命令改变了,也有其他的方法去改变用户权限。在这里定义了属主=‘u’,属组=‘g’,其他=‘o’。若要将刚刚改好的属组的写权限抹去,同时抹去其他用户的执行权限,也可用这种方法:

~]# chmod g-x,o-r /tmp/testing
drwxrw---x. 2 root    root       6 3月   6 20:09 testing


 



本文出自 “11275479” 博客,请务必保留此出处http://11285479.blog.51cto.com/11275479/1750497

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

gitlab 可以进行版本和权限控制,bug管理吗?供部门内部使用,而且是Linux和Windows平台都能使用

JS+JavaBean判断管理员增删改的操作权限

Linux用户权限管理和组管理相关命令

Linux 用户和用户组管理

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

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