本文的所有案例与说明都是基于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官方参考手册
如发现有写得不对或不好的地方非常欢迎到评论区指出与交流,感谢阅读!
——《完》
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)