Linux是一个多用户的系统,允许使用者在系统上通过规划不同类型、不同层级的用户,并公平地分配系统资源与工作环境
而与 Windows
系统最大的不同, Linux
允许不同的用户同时登录主机,同时使用主机的资源
既然是多用户的系统,那么最常见的问题就是权限,不同的用户对于不同的文件都应该有各自的权限
例如,小 A 希望个人文件不被其他用户读取,而如果不对文件进行权限设置,共享了主机资源的小 B 也可以读取小 A 的个人文件,这是不合理的
这里面涉及到用户与用户组的概念
Linux
以 “用户与用户组” 的概念,建立用户与文件权限之间的联系,保证系统能够充分考虑每个用户的隐私保护,很大程度上保障了 Linux
作为多用户系统的可行性
从文件权限的角度出发,“用户与用户组” 引申为三个具体的对象:
每一个对象对某一个文件的持有权限是不同的
当一个用户创建了一个文件,这个用户就是这个文件的文件所有者。文件所有者对文件拥有最高权限,同时排他性地拥有该文件
除非文件所有者开放权限,否则其他人无法对文件执行查看、修改等操作
将 “其他用户” 区分为用户组成员和其他人后,若文件所有者希望对部分用户开放权限,而对其他人继续保持私有,则只需要将这部分用户与文件所有者划入一个用户组
这样,这部分用户就成了与文件所有者同组的用户组成员。用户可以对用户组成员开放文件权限,用户组成员则具备了查看、修改文件的权限,而对其他无关用户保持私有
例如,团队成员之间保持文件资源共享,但对非团队成员保持私有,这就需要将文件所有者与团队成员用户划分为同一个用户组,再对用户组成员开放权限即可
既与文件所有者没有任何联系的其他用户
户和用户组的对应关系是:一对一、多对一、一对多或多对多:
当我们使用ls -l
的时候,会列出当前目录的文件信息,如下:
drwxr-xr-x 3 osmond osmond 4096 05-16 13:32 nobp
下面主要看看文件权限分析,实际上是由9个字符组成,每3个一组:
-
代表当前没有,rwx
对应代表的意思如下:
用户相关的操作有如下:
useradd
可以用来创建新用户,简要语法为:
useradd [options] [username]
例如:
添加一个一般用户
# useradd kk //添加用户kk
为添加的用户指定相应的用户组
# useradd -g root kk //添加用户kk,并指定用户所在的组为root用户组
创建一个系统用户
# useradd -r kk //创建一个系统用户kk
为新添加的用户指定/home目录
- # useradd-d /home/myf kk //新添加用户kk,其home目录为/home/myf
- //当用户名kk登录主机时,系统进入的默认目录为/home/myf
创建的用户还没有设置登录密码,需要利用passwd
进行密码设置
asswd [options] [username]
option
参数有如下:
例如,修改用户密码
- # passwd runoob //设置runoob用户的密码
- Enter new UNIX password: //输入新密码,输入的密码无回显
- Retype new UNIX password: //确认密码
- passwd: password updated successfully
- #
显示账号密码信息
- # passwd -S runoob
- runoob P 05/13/2010 0 99999 7 -1
删除用户密码
- # passwd -d lx138
- passwd: password expiry information changed.
chage
命令用来修改与用户密码相关的过期信息,如密码失效日、密码最短保留天数、失效前警告天数等
chage [option] [username]
常见的参数有:
-d:指定密码最后修改日期
-E:密码到期的日期
-l:列出用户以及密码的有效期
-m:密码能够更改的最小天数
-M:密码保持有效的最大天数
userdel 命令用来删除用户的相关的所有数据。
userdel [options] [username]
常见的参数有:
例如删除用户账号
# userdel hnlinux
用户组相关的操作如下:
groupadd
用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
groupadd [options] [groupname]
常见的参数有如下:
例如创建一个新的组,并添加组 ID。
#groupadd -g 344 runoob
groupmod
命令用来修改 group
相关的参数,例如群组识别码或者名称
groupmod [options] [groupname]
常见的参数有:
例如修改组名:
# groupmod -n linux linuxso
groupdel
用于删除用户组,如果该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组
groupdel [groupname]
日常工作通常会碰到只有root
用户才有权限执行的操作,这就需要使用用户身份切换的命令:
用于变更为其他使用者的身份,除 root
外,需要键入该使用者的密码
sudo
命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行
不是所有的用户都能执行 sudo
命令的,而是在 /etc/sudoers
文件内的用户才能执行这个命令
例如sudo
命令使用ls
:
$ sudo ls