/etc/passwd每一个分段的含义:
1、账户名称:
用来对应UID
2、密码:
早起Unix系统的密码就是防止这个字段上,但是英文这个档案的特性是所有程序都能读取,容易造成密码数据被窃取
应此后来就将这个字段的密码数据放到了/etc/shadow中了,所以这里使用【X】,
3、UID:
这就是使用者标示符,UId有以下限制:
ID 该芦正ID使用的者特性
0 UID是0时,代表这个账号是【系统管理员】!所以当你的其他啊账号名称也具有root
的权限是,就将该账号的UID改为0即可,一个系统上面的系统管理不见得只有root,
不过不建议有多个UID为0的账号。
1~499 保留给系统使用的ID,默认500以下的数字给系统作为保利账号只是一个习惯。
由于系统上面启动的服务希望使用较小的权限去运行,应此不希望使用root的身份去执行
这些服务,所以我们就得要提供这些运行中的程序的拥有者账号才行,这些系统账号通常是不可登陆的,
所以才会有/sbin/nologin这个特殊的shell的存在。
500~ 一般使用者
4、GID:羡哗游
这个与/etc/group有关!其实/etc/group的观念与/etc/passwd差不多,应用来规范组名
5、用户信息说明栏:
6、家目录:
root的家目录在/root,所以当root登陆的之后,就会立刻跑到/root目录里头,如果坏、这个账号需要使用
特别大的空间,就可以对这个字段进行修改,已移动到其他同硬盘。默认的用户家目录在/home/youIdname
/etc/shadow文件结构:
8、Shell:
定义用户登陆系统使用什么shell,这里需要注意,有一个shell可以用来特带成让账户无法取得shell环境的登陆动作!一兄销起学习linux
那就是/sbin/nologin这个特殊东西,也可以用来制作pop邮件账号者的数据。(Post Office Protocol)
1、/etc/shadow是本机用户密码文件。2、/etc/gshadow /etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件。
/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,轿庆设置用户组逗帆庆密码是极有必要的。
比如我们山握不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。
对于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官方参考手册
如发现有写得不对或不好的地方非常欢迎到评论区指出与交流,感谢阅读!
——《完》
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)