Linux 用户与组

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>]

  1. -g<群组>  修改用户所属的群组。
  2. -l<帐号名称>  修改用户帐号名称。
  3. -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#

猜你喜欢

转载自my.oschina.net/lin546/blog/1788100