Linux用户与用户组

来源:互联网 发布:国外cms 编辑:程序博客网 时间:2024/05/17 04:24

Linux不同于windows,windows可以说基本是个人用户,而对于Linux确不是这样的。Linux是多用户多任务的分时系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。多用户的设定让用户管理变得十分重要。


linux下用户的角色分类
在linux下用户是根据角色定义的,具体分为三种角色:
1. 超级用户:拥有对系统的最高管理权限,默认是root用户。
2. 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面提到的www用户、ftp用户等。
3. 虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。


什么是用户?

Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。

什么是用户组?

用户组是具有相同特征用户的逻辑集合。

有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。


用户组的信息存放在/etc/group中:

[root@localhost ~]# cat /etc/grouproot:x:0:bin:x:1:daemon:x:2:sys:x:3:adm:x:4:tty:x:5:disk:x:6:lp:x:7:mem:x:8:kmem:x:9:wheel:x:10:cdrom:x:11:mail:x:12:postfix...
这里是什么意思呢?

root  :     x         :    0   :组名  : 组密码占位符  : 组编号 : 组中用户列表
如果组中用户列表只有一个,且用户名与组名一致,那么就省略。

可以看出来,用户组也是需要密码的。

其中root组编号为0。

1~499为系统预留组编号,预留给安装的软件和服务所使用。

500~NAN给手动创建的用户所使用。


这里的组密码是用占位符的形式出现的,那么真正的密码保存在哪里呢?

在/etc/gshadow中。

[root@localhost ~]# cat /etc/gshadowroot:::bin:::daemon:::sys:::adm:::tty:::disk:::lp:::mem:::kmem:::wheel:::cdrom:::mail:::postfix...
这里又是什么意思呢?

root  :             :           :组名  : 组实际密码  :  组管理者 : 组中用户名

其中,如果组实际密码为空,*,!都为空。


用户组的信息我们知道了,那么用户的信息在哪里呢?

用户信息存放在/etc/passwd中。

[root@localhost ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
这个是什么意思呢?

root  :     x       :      0    :     0       :   root       :  /root     : /bin/bash用户名:  密码占位符 : 用户编号  : 用户组编号  : 用户注释信息 : 用户主目录 : shell类型
同样的,用户的密码也是存放在别的文件当中。存放在/etc/shadow中。

[root@localhost ~]# cat /etc/shadowroot:$6$oXDo/YYptGcAyHLr$Rh.kWkyEUmvwnR8SQbcpGRUZG/tnhF00YYoFISqxVdwYXEyn650Ghcz8rzvn//oZSru9qAk2nfChFG5E0gROC0::0:99999:7:::bin:*:16659:0:99999:7:::daemon:*:16659:0:99999:7:::adm:*:16659:0:99999:7:::lp:*:16659:0:99999:7:::sync:*:16659:0:99999:7:::shutdown:*:16659:0:99999:7:::halt:*:16659:0:99999:7:::mail:*:16659:0:99999:7:::operator:*:16659:0:99999:7:::games:*:16659:0:99999:7:::ftp:*:16659:0:99999:7:::nobody:*:16659:0:99999:7:::avahi-autoipd:!!:17281::::::systemd-bus-proxy:!!:17281::::::systemd-network:!!:17281::::::...
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
可以看到,实际的密码在这里是看不到,这里采用了单向加密。


为什么要分成两个文件呢?直接把加密的密码放在/etc/passwd中不行吗?

确实是可以的,但是分开两个文件是为了安全。因为需要访问密码需要很高的权限,而用户的信息确实总是需要访问的,所以分开两个文件。

[root@localhost ~]# ll /etc/passwd-rw-r--r--. 1 root root 1382 Apr 25 11:19 /etc/passwd[root@localhost ~]# ll /etc/shadow----------. 1 root root 907 Apr 25 11:19 /etc/shadow



我们现在知道用户和用户组的信息存储方式了,但是用户和用户组的基本操作呢?

基本操作

用户组

增加用户组

groupadd 组名
修改用户组

groupmod
选项-n改名,-g修改编号等。

删除用户组

groupdel  组名


用户
增加用户

usedadd
选项-g指定组,-d指定家目录。如果不指定,则默认创建一个和用户同名的用户组,并设置为其用户组。家目录为/home/名字

修改用户

usermod
选项-c修改注释,-l修改用户名

删除用户

userdel


如果希望暂时不让普通用户登陆服务器,可以创建/etc/nologin文件,就可以禁止普通用户登陆。进行服务器的升级修改维护等等。


锁定用户:(禁止这个用户登录)

passwd -l 用户名
解锁用户:

passwd -u


如果一个用户在多个用户组中,怎么分配呢?

一个用户只能有一个主要组,可以为它分配其他的附属组,附属组可以分配多个。

添加附属组:

gpasswd -a 用户名 用户组
删除附属组:

gpasswd -d 用户名 用户组


如果出现重新分配,那么如何切换用户组呢?

newgrp 用户组
将当前用户切换进入这个用户组。

进入用户组需要用户组密码。


如何切换用户:

su 用户名
需要用户密码

查看你当前用户:

whoami
查看用户信息:

id 用户名
查看当前用户所属组:

groups
设置用户资料:

chfn
这个命令采用交互模式,简单的交互即可设置用户资料。

查看用户详细信息:

finger
这个命令默认是没有安装的,需要自己安装。

0 0