Linux用户组如何运用
这篇“Linux用户组如何运用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux用户组如何运用”文章吧。
Linux 系统中多数用户账户被设为用户名与用户组名相同。用户 jdoe 会被赋予一个名为jdoe 的用户组,且成为该新建用户组的唯一成员。如本例所示,该用户的登录名,用户 id 和用户组id 在新建账户时会被添加到 /etc/passwd 和 /etc/group 文件中:
$sudouseraddjdoe$grepjdoe/etc/passwdjdoe:x:1066:1066:JaneDoe:/home/jdoe:/bin/sh$grepjdoe/etc/groupjdoe:x:1066:
这些文件中的配置使系统得以在文本(jdoe)和数字(1066)这两种用户id 形式之间互相转换—— jdoe 就是 1006,且 1006 就是jdoe 。
分配给每个用户的 UID(用户 id)和 GID(用户组 id)通常是一样的,并且顺序递增。若上例中 Jane Doe 是最近添加的用户,分配给下一个新用户的用户 id 和用户组 id 很可能都是 1067。
GID = UID?
UID 和 GID 可能不一致。例如,如果你用 groupadd 命令添加一个用户组而不指定用户组 id,系统会分配下一个可用的用户组 id(在本例中为 1067)。下一个添加到系统中的用户其 UID 会是 1067 而 GID 则为 1068。
你可以避免这个问题,方法是添加用户组的时候指定一个较小的用户组 id 而不是接受默认值。在下面的命令中我们添加一个用户组并提供一个 GID,这个 GID 小于用于用户账户的 GID 取值范围。
$sudogroupadd-g500devops
创建账户时你可以指定一个共享用户组,如果这样对你更合适的话。例如你可能想把新来的开发人员加入同一个 DevOps 用户组而不是一人一个用户组。
$sudouseradd-gstaffbennyg$grepbennyg/etc/passwdbennyg:x:1064:50::/home/bennyg:/bin/sh主要用户组和次要用户组
用户组实际上有两种:主要用户组primary group和次要用户组secondary group。
主要用户组是保存在 /etc/passwd 文件中的用户组,该用户组在账户创建时配置。当用户创建一个文件时,用户的主要用户组与此文件关联。
$whoamijdoe$grepjdoe/etc/passwdjdoe:x:1066:1066:JohnDoe:/home/jdoe:/bin/bash^|+--------主要用户组$touchnewfile$ls-lnewfile-rw-rw-r--1jdoejdoe0Jul1615:22newfile^|+--------主要用户组
用户一旦拥有账户之后被加入的那些用户组是次要用户组。次要用户组成员关系在 /etc/group 文件中显示。
$grepdevops/etc/groupdevops:x:500:shs,jadep^|+--------shs和jadep的次要用户组
/etc/group 文件给用户组分配组名称(例如 500 = devops)并记录次要用户组成员。
首选的准则每个用户是他自己的主要用户组成员,并可以成为任意多个次要用户组成员,这样的一种准则允许用户更加容易地将个人文件和需要与同事分享的文件分开。当用户创建一个文件时,用户所属的不同用户组的成员不一定有访问权限。用户必须用 chgrp 命令将文件和次要用户组关联起来。
哪里也不如自己的家目录添加新账户时一个重要的细节是 useradd 命令并不一定为新用户添加一个家目录/home家目录。若你只有某些时候想为用户添加家目录,你可以在 useradd 命令中加入 -m 选项(可以把它想象成“安家”选项)。
$sudouseradd-m-gdevops-c"JohnDoe"jdoe2
此命令中的选项如下: -m 创建家目录并在其中生成初始文件 -g 指定用户归属的用户组 -c 添加账户描述信息(通常是用户的姓名) 若你希望总是创建家目录,你可以编辑 /etc/login.defs 文件来更改默认工作方式。更改或添加 CREATE_HOME 变量并将其设置为 yes:
$grepCREATE_HOME/etc/login.defsCREATE_HOMEyes
另一种方法是用自己的账户设置别名从而让 useradd 一直带有 -m 选项。
$aliasuseradd=’useradd-m’
确保将该别名添加到你的~/.bashrc 文件或类似的启动文件中以使其永久生效。
深入了解 /etc/login.defs下面这个命令可列出 /etc/login.defs 文件中的全部设置。下面的grep 命令会隐藏所有注释和空行。
$cat/etc/login.defs|grep-v"^#"|grep-v"^$"MAIL_DIR/var/mailFAILLOG_ENAByesLOG_UNKFAIL_ENABnoLOG_OK_LOGINSnoSYSLOG_SU_ENAByesSYSLOG_SG_ENAByesFTMP_FILE/var/log/btmpSU_NAMEsuHUSHLOGIN_FILE.hushloginENV_SUPATHPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binENV_PATHPATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesTTYGROUPttyTTYPERM0600ERASECHAR0177KILLCHAR025UMASK022PASS_MAX_DAYS99999PASS_MIN_DAYS0PASS_WARN_AGE7UID_MIN1000UID_MAX60000GID_MIN1000GID_MAX60000LOGIN_RETRIES5LOGIN_TIMEOUT60CHFN_RESTRICTrwhDEFAULT_HOMEyesCREATE_HOMEyes
注意此文件中的各种设置会决定用户 id 的取值范围以及密码使用期限和其他设置(如 umask)。
如何显示用户所属的用户组出于各种原因用户可能是多个用户组的成员。用户组成员身份给与用户对用户组拥有的文件和目录的访问权限,有时候这种工作方式是至关重要的。要生成某个用户所属用户组的清单,用groups 命令即可。
$groupsjdoejdoe:jdoeadmadmincdromsudodipplugdevlpadminstaffsambashare
你可以键入不带任何参数的 groups 命令来列出你自己的用户组。
如何添加用户至用户组如果你想添加一个已有用户至别的用户组,你可以仿照下面的命令操作:
$sudousermod-a-Gdevopsjdoe
你也可以指定逗号分隔的用户组列表来添加一个用户至多个用户组:
$sudousermod-a-Gdevops,mgrsjdoe
参数 -a 意思是“添加”,-G 指定用户组列表。
你可以编辑/etc/group 文件将用户名从用户组成员名单中删除,从而将用户从用户组中移除。usermod 命令或许也有个选项用于从用户组中删除某个成员。
fish:x:16:nemo,dory,shark|Vfish:x:16:nemo,dory
以上就是关于“Linux用户组如何运用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。