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平台都能使用