1、账户文件 /etc/passwd
/etc/passwd由’:’分割成7个字段,每个字段的具体含义是:
1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。
2)该账号的口令,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,在这里只用一个’x’代替。
3)这个数字代表用户标识号,也叫做uid。系统识别用户身份就是通过这个数字来的,0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。
4)表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录。
5)注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。
6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username。
7)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有很多种sh, csh, ksh, tcsh, bash等,查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。
2、密码文件 /etc/passwd
和/etc/passwd类似,用”:”分割成9个字段。
1)用户名,跟/etc/passwd对应。
2)用户密码,这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。
3)上次更改密码的日期,这个数字是这样计算得来的,距离1970年1月1日到上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是365*(2012-1970)+1=15331。
4)要过多少天才可以更改密码,默认是0,即不限制。
5)密码多少天后到期。即在多少天内必须更改密码,例如这里设置成30,则30天内必须更改一次密码,否则将不能登录系统,默认是99999,可以理解为永远不需要改。
6)密码到期前的警告期限,若这个值设置成7,则表示当7天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在7天后到期。
7)账号失效期限。你可以这样理解,如果设置这个值为3,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,则这个账号就失效了,即锁定了。
8)账号的生命周期,跟第三段一样,是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号作废。
9)作为保留用的,没有什么意义。
3、用户组文件/etc/group
在/etc/group 中的每条记录分四个字段:
第一字段:用户组名称;
第二字段:用户组密码,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/gshadow中了,在这里只用一个’x’代替。;
第三字段:用户组ID,即GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
4、增删用户组
1、新增一个组 groupadd [-g GID] groupname
不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的
-g选项可以自定义gid
root@DESKTOP-V75CQEN:/# groupadd student root@DESKTOP-V75CQEN:/# cat /etc/group | grep -ni student 55:student:x:1000:
2、 删除组 gropudel groupname ,没有特殊选项。
5、增删用户
1、增加用户 useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]
-u 自定义UID
-g 使其属于已经存在的某个GID
-d 自定义用户的家目录
root@DESKTOP-V75CQEN:# useradd -g student tom root@DESKTOP-V75CQEN:/# cat /etc/passwd | grep -ni tom 31:tom:x:1000:1000::/home/tom: root@DESKTOP-V75CQEN:/#
2、删除用户 userdel [-r] username
-r 选项的作用是删除用户时,连同用户的家目录一起删除。
6、用户密码
passwd [username]
等创建完账户后,默认是没有设置密码的,虽然没有密码,但该账户同样登录不了系统。只有设置好密码后方可登录系统。
passwd 后面不跟用户名则是更改当前用户的密码 ,跟用户名则是修改该用户名的密码。
7、查询用户信息
比如查询root信息
8、用户身份切换
Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要临时切换到root身份来做事了。
su 的语法为: su [-] username
1、后面可以跟”-”也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户
2、加”-“后会连同用户的环境变量一起切换过来。su test 后虽然切换到了test用户,但是当前目录还是切换前的/root目录,然后当用su - test时切换用户后则到了test的家目录/home/test。
3、当用root切换普通用户时,是不需要输入密码的。这也体现了root用户至高无上的权利。
4、 用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用” yum install -y sudo”安装。
默认root能够sudo是因为这个文件中有一行” root ALL=(ALL) ALL” 在该行下面加入” test ALL=(ALL) ALL”就可以让test用户拥有了sudo的权利。如果每增加一用户就设置一行,这样太麻烦了。所以你可以这样设置。
它的意思是,admin和sudo用户组的所有用户都拥有了sudo的权利。接下来就需要你把想让有sudo权利的所有用户加入到这两个组这个组中即可。
9、修改用户信息
usermod [-g<用户组>] [-l<账户名称>] [-u<uid>]
- -g<群组> 修改用户所属的群组。
- -l<帐号名称> 修改用户帐号名称。
- -u<uid> 修改用户ID。
10、查看文件所有者与所在组
ls -l
root@DESKTOP-V75CQEN:/home/hello# ls -l -rw-rw-rw- 1 root root 28 Apr 2 11:39 hello.txt root@DESKTOP-V75CQEN:/home/hello#
其中第一个root为文件所有者,第二个root为文件所在组。
11、修改文件所有者
chown newowner file :改变文件的所有者
chown newowner:newgroup file :改变用户的所有者和所有组
-R 如果是目录,则使其所有的子目录与文件递归生效。
root@DESKTOP-V75CQEN:/home/hello# ls -l -rw-rw-rw- 1 root root 28 Apr 2 11:39 hello.txt root@DESKTOP-V75CQEN:/home/hello# chown tom hello.txt root@DESKTOP-V75CQEN:/home/hello# ls -l -rw-rw-rw- 1 tom root 28 Apr 2 11:39 hello.txt root@DESKTOP-V75CQEN:/home/hello#
12、修改文件所在组
chgrp 组名 文件名
root@DESKTOP-V75CQEN:/home/hello# chgrp student hello.txt root@DESKTOP-V75CQEN:/home/hello# ls -l -rw-rw-rw- 1 tom student 28 Apr 2 11:39 hello.txt root@DESKTOP-V75CQEN:/home/hello#