Linux系统中有效用户组和初始用户组有什么作用于区别

Linux系统中有效用户组和初始用户组有什么作用于区别,第1张

组呢,就像一个社团,用户呢就像成员,一般linux下创建用户默认是自动给该用户创建一个组的,除非是指定组,比如创建用户名:useradd fly那么就同时自动后台执行groupadd fly,所以fly这个用户属于fly组,如果将多个用户划入一个组,那么特别是对于ftp、samba等服务是有很大的好处的,这样只要对组设定权限就行了,也减少了很多后台管理上的麻烦。

linux的用户和组是为了划分权限建立的,不同的权限不同的人访问,这就好比你不能去看高考试卷,因为你没权利看。你也不能看红头文件,即便警察,官员级别不够也不能看红头文件,目的就是为了保密和权限分级,否则改错了,改坏了,系统死了,谁负责啊。组和用户,就好比大学的时候的学生和社团一样,用户就好比是学生,组就好比是社团。学生可以加入社团,因为在社团可以享有一些特殊的权利,学生也有属于自己的权利,私人的,隐私的,别人没有的。------------------------------文件权限分3类1,用户 2,组3,其他人每个文件都有一个权限属性类似drwxr-xr-x 2 root root 4096 Mar 27 18:51 wildcat-rw-r--r-- 1 root root 3979635 Nov 13 2009 sun-javadb-core-10.5.3-0.2.i386.rpm权限就是前面这组字符 drwxr-xr-x 第一位d代表目录 -代表文件234位是用户权限567位是组权限8910位是除此之外其他人的权限r代表可读w代表可写x代表可执行----------------------------------------------------drwxr-xr-x 翻译过来意思就是 用户可以读,写,执行这个文件组可以读,不能写,可以执行其他人可以读,不能写,可以执行----------------------------------------------------具体文件和目录还不一样,具体用的时候有几个细节。1、目录的x权限代表可以进入目录,没有x权限连目录都进不去和谈修改啊,没有x前面的rw就是胡扯的。文件的x权限仅仅代表可执行2、文件本身的主人也就是用户,可以随意修改自己的权限,即便看上去可能是r--r--r-- 或者干脆啥都没有d--------- 或者 ---------- 只要你是文件的用户,你就可以随便加,因为你是他的创造者,创造者不受限制。3,组里的人可以修改组权限,但不能动用户权限4,组是一个概念,组是不能登录的,只有用户可以登录,就好比社团啊,单位啊都是实体,而能动的还是人啊,不有一句话吗,科技以人为本。人是本。这套理论的基础就是用户为本,加入组可以获得组里的某些权力5,root 除外,root不论是用户,还是加入root组的其他人,都拥有随便改的权利,而且随便看,随便读,权力随便加,不能写的都可以加上叹号随便写,总的来说一句,root有没有权限没所谓,root的神一样的权力。6,特殊权限 ---sr-x--x 或者 -rwx--sr-x 或者-r-x-wx--t1)如果s放在第4位,则表示权力中的“其他人”,执行该文件的时候可以拥有建立者,也就是用户的权力,如果是小写的s表示没加s之前,这一位是x,也就是可写。大写的S表示这一位是-,不可写。其实就是个区分,否则不这么分怎么分啊,无非是作者的一个想法而已。passwd就是这种文件,[root@localhost ~]# ls -al /usr/bin/passwd-rwsr-xr-x 1 root root 27768 Jan 7 2007 /usr/bin/passwd2)同理s放在第7位上代表,“其他人” 执行的时候可以拥有组的权力。3)t放在最后代表,谁建立的谁可以删,别人不能动,但还是那句话,root怎么都行。具体可以看看鸟哥,我就是凭一时的记忆写的,应该还是不全。

对于Linux管理者来说,“帐号管理”是再也普通不过的一个环节了,但每次都要去查一大本的手册实在是很浪费时间。我还是老老实实地花点心思把这些常用的功能都整理成一份文档,方便以后的使用和学习,以后也都会继续这样做下去。

本文的所有案例与说明都是基于Ubuntu 16.04.3 LTS 64位 *** 作系统,如果你的 *** 作系统与我的不一样,可能会出现不一样的结果。但Linux的原理都是通用的,善于使用man可以帮助你更好的管理你的 *** 作系统。

上图一共列出了9个相关文件,但这里我只重点讲解前三个文件,也即是 /etc/passwd、/etc/shadow 与 /etc/group。

1、/etc/passwd

User account information. --(明文的)用户账号信息

这个文件每一行都代表一个帐号,有几行就代表有几个帐号在你的系统中!不过需要特别注意的是,里面很多帐号本来就是系统正常运行所必须的,我们可以简称它为系统帐号。这些帐号都是你不能随便删除的!

通过查看passwd(5)手册可以查看/etc/passwd的文件结构:

文件结构说明:

“/etc/passwd” 第二项的内容说明

2、/etc/shadow

Secure user account information. -- 安全加密的用户账号信息

通过查看shadow(5)手册也可以查看/etc/shadow的文件结构:

如shadow(5)中所述,这个文件中被 “:” 分隔的每项含义如下。

3、/etc/group

Group account information.  -- 组信息

通过查看group(5)手册也可以查看/etc/group的文件结构:

如group(5)中所述,这个文件中被“:”分隔的每项含义如下。

注意:

“/etc/gshadow” 为 “/etc/group” 提供了与 “/etc/shadow” 相似的功能,但没有被真正地使用。

4、/etc/gshadow

Secure group account information. -- 安全加密的组信息

5、/etc/default/useradd

Default values for account creation.  -- 创建用户时的默认设置

6、/etc/skel/

Directory containing default files.  -- 用户主目录的默认内容

7、/etc/subgid

Per user subordinate group IDs.

8、/etc/subuid

Per user subordinate user IDs.

9、/etc/login.defs

Shadow password suite configuration.

1、添加用户 -- useradd

useradd -- create a new user or update default new user information.

常用参数:

例1:最简单的例子

例2:创建一个可以使用的帐号

例3:查看useradd默认设置

使用useradd创建用户时还会参考文件/etc/login.defs的设置,比如UID/GID的指定数值、用户主文件夹设置值、用户删除与密码设置值等,这里也不做深入讨论了。

2、用户密码管理 -- passwd

passwd - change user password

常用参数:

3、用户密码管理 -- chage

chage - change user password expiry information

4、用户信息修改 -- usermod

usermod - modify a user account

当然,以上的修改你也可以通过手动修改相关的配置文件来达到一样的目的。

5、删除用户 -- userdel 

userdel - delete a user account and related files

注意:

1)一般而言,该帐号如果只是暂时不启用的话,那么将/etc/shadow里面帐号失效日期(第八字段)设置为0就可以让该帐号无法登录,但所有相关的数据都会留下来。使用userdel的时候通常是你真的确定不要该用户在主机上面用任何数据了!

2)如果想要完整地将某个帐号删除,最好可以执行userdel -r username之前,先以“find / -user username”查出整个系统内属于username的文件,然后再进行删除。

1、初始用户组(initial group)与 有效用户组(effective group):

在/etc/passwd里面的第四列有一个所谓的GID,它就是“ 初始用户组 ”。也就是说,当用户登录系统,立刻就拥有这个用户组的相关权限的意思。

有效用户组:即帐号当前(实时)所使用的用户组。

次要用户组:次要用户组就是除了用户的初始用户组外的其它所属组,在/etc/group的最后一个字段中所设置,可以有多个(多个用逗号','隔开)。

使用usermod -g可以修改初始用户组,而使用usermod -G则可以修改次要用户组。

例1:修改用户次要用户组

例2:有效与支持用户组的查看

在这个输出的信息中,可知道nosee这个用户同时属于nosee及users这两个组,而且,第一个输出的即为“ 有效用户组 ”。也就是说,上面例子中的有效用户组为nosee。

2、有效用户组的切换 -- newgrp

上面例子中,nosee的有效用户组从nosee转变成了users。

现在我们来深入讨论下newgrp这个命令,这个命令可以更改目前用户的有效用户组,而且是另外以一个新的shell来提供这个功能。因此如果你想要回到原本的环境中,只需要输入exit即可。

3、新增用户组 -- groupadd

groupadd - create a new group

常用参数:

4、用户组参数修改 -- groupmod

groupmod - modify a group definition on the system

常用参数:

注意:不要随意改动GID,容易造成系统资源的错乱。

5、删除用户组 -- groupdel

groupdel - delete a group

注意,只有在/etc/passwd内没有任何用户使用该用户组的作为初始用户组的时候,才可以成功删除。

6、用户组管理员功能 -- gpasswd

gpasswd - administer /etc/group and /etc/gshadow

1)系统管理员(root)的常用参数

2)用户组管理员(Group administrators)的常用参数

1、su

su - change user ID or become superuser

su是最简单的身份切换命令了,它可以进行任何身份的切换。

常用参数:

注意:

1)这个su的用法当中,有没有加上“-”差很多的,转为涉及login-shell与not-login shell的变量读取方法。即想要完整的切换到新用户的环境,可以利用“su - username”或“su -l username”。

2)使用root切换到任何用户时,都不需要输入密码

3)当从其它用户切换到root用户时都必须输入root的密码,这样root的密码就很容易流传出去,这是很不妥当的,所以才会有sudo这个命令的出现。

2、sudo

sudo, sudoedit — execute a command as another user

sudo的执行仅需要自己的密码,甚至可以设置不需要密码即可执行sudo。由于sudo可以让你以其他的用户身份执行命令(通常是root的身份),因此并不是所有人才能执行sudo,而是仅有/etc/sudoers内的用户才能够执行sodu这个命令。

/etc/sudoers文件内容如下:

常用参数:

例:使用nosee的身份在/home/nosee/目录下新建一个test文件

sudo的执行流程:

1)当用户执行sudo时,系统于/etc/sudoers文件查找该用户是否有执行sudo的权限;

2)若用户具有可执行sudo的权限后,便让用户输入自己的密码来确认;

3)若密码输入成功,便开始进行sudo后续接的命令(但root执行sudo时不需要输入密码);

4)若欲切换的用户与执行者身份相同,那也不需要输入密码。

因为/etc/sudoers文件有一定的规则,所以我们一帮不直接用vi去编辑。一般,我们都是使用visudo来修改这个文件。

3、visudo

因为/etc/sudoers是有语法的,如果设置错误那会造成无法使用sudo的不良后果,因此才会使用visudo去修改。

一般来说,visudo的设置方式有几种简单的方法,正面我们以几个简单的例子来说明:

1)单一用户可以进行root的所有命令与sudoer文件语法

例:让用户nosee可以使用root的所有命令

2)利用用户组及免密功能处理visudo

例:让nosee用户组可以使用root的所有命令,并且不需要输入密码

注意:用户组的表示只需要在前面加一个百分号%即可,NOPASSWD则是免密的关键字。

3)有限制的命令 *** 作

例:让user1用户仅能使用passwd这个命令帮root修改其他用户的密码

注意:最后一个参数一定要用绝对路径才行,否则visudo会出现语法错误。

但这里有个可怕的地方,就是用户user1竟然也可以去修改root的密码了,这是不应该允许发生的,为了避免上述的问题,应该使用下面的这种配置:

上面参数的意思是,用户user1可以执行“passwd 任意字符串”,但是“passwd”与“passwd root”两个命令除外。

4)通过别名设置visudo

5)sudo的时间间隔问题

两次执行sudo的间隔时间在5分钟内,那么再次执行sudo时就不需要再次输入密码。

6)sudo搭配su的使用方式

很多时候我们需要大量执行很多root的工作,所以一直sudo觉得麻烦。这里有一个变身root用户的办法,而且还不会外泄root密码,前提是你要非常信任你将要为他们做此次设置的用户。

1、查看用户当前所用的shell

1)实时查看当前进程中使用的shell种类:推荐

2)最常用的查看shell的命令,但不能实时反映当前shell

3)环境变量中shell的匹配查找

4)口令文件中shell的匹配查找

2、强制踢出已登录用户

或也可以给他发送一条信息。

3、adduser

adduser也可以用于用户的添加,感觉兴趣的同学可以自行去查阅相关的资料。

1、《鸟哥的Linux私房菜基础学习篇》-- 鸟哥

2、  Debian官方参考手册

如发现有写得不对或不好的地方非常欢迎到评论区指出与交流,感谢阅读!    

——《完》


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8468006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存