您现在的位置: 万盛学电脑网 >> 程序编程 >> 服务器教程 >> 正文

Linux 高级用户,组和权限介绍

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   下面先来了解一下关于用户,组的四个文件

  /etc/passwd

  /etc/shadow

  /etc/group

  /etc/gshadow

  首先来了解一下/etc/passwd这个文件,

  这个文件只是存放用户的信息

  [root@localhost ~]#

  [root@localhost ~]# cat /etc/passwd | grep user1

  user1:x:500:500::/home/user1:/bin/bash

  [root@localhost ~]#

  这里面总共有七个栏位,了解一下每个栏位的意义。

  User1 用户名

  X 用户的密码位(如果这个位上面没有这个X,就代表登陆这个用户不需要密码)

  500 UID

  500 GID

  第五个是密码的描述信息,这里没有。

  /home/user1 用户的/home目录

  /bin/bash 用户的shell

  在这里有个比较特殊的shell /sbin/nologin

  如果将用户的shell改为/sbin/nologin,那么这儿用户只可以登陆服务,但是不可以登陆计算机。不允许交互式登陆。

  再来了解一下/etc/shadow这个文件,

  这个文件主要是用来保存用户的密码信息和策略。

  [root@localhost ~]#

  [root@localhost ~]# cat /etc/shadow | grep user1

  user1:$1$2WJEp9K7$h.NRfJsaEm8VMksBQHZm7.:14668:0:99999:7:::

  [root@localhost ~]#

  现在来了解一下每个栏位的意义

  User1 用户名

  第二个栏位是保存用户的密码,这个密码是经过MD5的加密的。

  如果密码位前面有个!,就代表这个用户被锁定了。

  14668 密码最后一次修改的时间

  0 密码最少的存活期(为0代表用户可以随时更改密码)

  99999 密码过期时间(99999代表密码永不过期)

  7 密码过期警告天数(在密码过期的前七天警告用户)

  再来了解一下/etc/group这个文件,

  这个文件主要是用于存放组的信息。

  [root@localhost ~]#

  [root@localhost ~]# cat /etc/group | grep user1

  user1:x:500:

  [root@localhost ~]#

  现在来了解一下每个栏位的意义

  User 组的名字

  X 组的密码位

  500 GID

  可以将用户直接添加到冒号后面,就代表加入了这个组。

  最后来了解一下/etc/gshadow这个文件,

  这个文件主要是保存组密码的信息。

  [root@localhost ~]#

  [root@localhost ~]# cat /etc/gshadow | grep user1

  user1:!::

  [root@localhost ~]#

  User 组的名字

  可以看到,这个组默认是没有密码的,现在我们给它设置一个密码。

  [root@localhost ~]#

  [root@localhost ~]# gpasswd user1

  Changing the password for group user1

  New Password:

  Re-enter new password:

  [root@localhost ~]# cat /etc/gshadow | grep user1

  user1:$1$ZxvTf/dQ$DWmf//MTxpwJIzTZIcYQZ/::

  [root@localhost ~]#

  可以看到,组现在也有了一个密码,而且也是经过MD5加密的。

  下面来看下组的密码有什么意义。

  [root@localhost ~]#

  [root@localhost ~]# useradd user2

  [root@localhost ~]#

  [root@localhost ~]# su – user2

  [user2@localhost ~]$

  [user2@localhost ~]$ newgrp user1

  Password:

  [user2@localhost ~]$ id

  uid=501(user2) gid=500(user1) groups=500(user1),501(user2)

  [user2@localhost ~]$

  可以看到,我们user2现在加入到了user1,变成了user1组里面的成员,也就是说组密码的意义在于,一个普通用户只要有组的密码,就可以加入到这个组里面来,成为这个组里面的成员。

  用户管理工具

  Useradd 添加用户

  #useradd user1(用户名)

  [root@localhost ~]#

  [root@localhost ~]# useradd user1

  [root@localhost ~]#

  [root@localhost ~]# id user1

  uid=502(user1) gid=502(user1) groups=502(user1)

  [root@localhost ~]#

  User1就添加成功了。

  Usermod 修改用户

  Userdel 删除用户

  #userdel -r user1(用户名)

  [root@localhost ~]#

  [root@localhost ~]# userdel -r user1

  [root@localhost ~]#

  [root@localhost ~]# id user1

  id: user1: No such user

  [root@localhost ~]#

  User1就成功删除了

  -r 在删除用户的同时删除用户的/home目录。

  关于监视登陆的工具

  #w

  [root@localhost ~]# w

  15:27:32 up 15:31, 3 users, load average: 0.81, 0.25, 0.08

  USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

  root :0 - 21Feb10 ?xdm? 3:07 0.30s /usr/bin/ gnome-

  root pts/2 :0.0 15:27 0.00s 0.06s 0.01s w

  root pts/1 192.168.0.20 15:27 13.00s 0.05s 0.05s - bash

  [root@localhost ~]#

  可以看到192.168.0.20正在连接我。

  #last

  [root@localhost ~]#

  [root@localhost ~]# last

  root pts/2 station20.exampl Sun Feb 28 15:32 still logged in

  root pts/1 :0.0 Sun Feb 28 15:31 still logged in

  root pts/2 :0.0 Fri Feb 26 17:21 – 00:32 (1+07:10)

  root pts/1 :0.0 Mon Feb 22 23:07 – 21:46 (3+22:38)

  root pts/2 :0.0 Mon Feb 22 18:31 - 23:07 (04:36)

  root pts/2 :0.0 Mon Feb 22 14:33 - 14:33 (00:00)

  root pts/1 :0.0 Sun Feb 21 17:33 - 18:31 (1+00:57)

  root pts/1 :0.0 Sun Feb 21 17:28 - 17:33 (00:04)

  root pts/1 :0.0 Sun Feb 21 13:30 - 17:28 (03:57)

  root :0 Sun Feb 21 13:30 still logged in

  root :0 Sun Feb 21 13:30 – 13:30 (00:00)

  reboot system boot 2.6.18-164.el5 Sun Feb 21 13:29 (7+02:03)

  root pts/1 :0.0 Sun Feb 21 21:22 – down (-7:-54)

  root :0 Sun Feb 21 21:21 – down (-7:-54)

  root :0 Sun Feb 21 21:21 – 21:21 (00:00)

  reboot system boot 2.6.18-164.el5 Sun Feb 21 21:17 (-7:-50)

  reboot system boot 2.6.18-164.el5 Sun Feb 21 21:14 (00:02)

  wtmp begins Sun Feb 21 21:14:07 2010

  [root@localhost ~]#

  曾经有那些用户登陆过我的计算机。并且在我计算机上面登陆了多久,很多东西都可以查看的到。

  #lastb

  [root@localhost ~]#

  [root@localhost ~]# lastb

  root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

  root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

  root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)

  btmp begins Mon Feb 22 15:50:50 2010

  [root@localhost ~]#

  这条命令显示的结果是那些计算机曾经登录过我的计算机,但是没有登录成功的计算机。只会显示没有登录成功的信息,并且它们是使用的什么方法尝试连接我的计算机,这里面都很详细。

  默认权限(defaults perm)

  默认的时候,我们在创建文件和目录的时候,并不是继承了上级目录的权限,而是根据目录和文件的UMASK值来决定的。

  关于UMASK值

  就是用来定义文件的默认权限的

  如何在系统查询UMASK值呢?

  #umask

  [root@localhost ~]#

  [root@localhost ~]# umask

  0022

  [root@localhost ~]#

  可以看到,系统中的umask值为0022

  当然这个umask也是可以修改的

  #umask 0033

  [root@localhost ~]#

  [root@localhost ~]# umask 0033

  [root@localhost ~]#

  [root@localhost ~]# umask

  0033

  [root@localhost ~]#

  系统的umask值被我们改成0033了。

  Umask是怎么定义目录和文件的权限的

  对于不同用户,umask定义都不一样。

  对于root uamsk值为022

  对于普通用户 umask值为002

  那么我们在创建目录和文件的时候默认权限是多少呢。

  对于root 目录 777-022 755

  文件 666-022 644

  对于普通用户 目录 777-002 775

  文件 666-002 664

  这就是我们的创建目录和文件的默认权限。

  注意 :我们在用最高权限减umask值的时候一定是用二进制的数值来减,而不是十进制的数值来减。

  [root@localhost ~]#

  [root@localhost ~]# umask

  0022

  [root@localhost ~]# mkdir test

  [root@localhost ~]# to