一、用户和用户组
用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。
Linux用户和组的关系
用户和用户组的对应关系有以下 4 种:
一对一:一个用户可以存在一个组中,是组中的唯一成员;
一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID)。
每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 UID 和 GID 对应的用户名和群组名,然后显示出来。
二、用户类型
用户分类3种:超级用户(root)、系统用户、普通用户。
超级用户
的用户名为root,它具有一切操作权力,因此为安全起见,建议不要轻易的在root账户下面对文件进行操作。在Linux操作系统的字符界面,root账户的提示符为#,且默认情况下,root用户的UID为0。
系统用户
是Linux系统正常工作所必需的内建的用户,一般是用于管理服务
所用。系统用户不能用来登陆,如bin、daemon、lp等用户。系统用户的UID一般为1~499,它们的shell为/sbin/nologin。
普通用户
是为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。在Linux操作系统的字符界面,普通用户的提示符为$,且普通用户的UID默认为1000~60000。
su
是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。
与用户有关的文件是:
/etc/passwd(用户账户文件,所有账户都可以访问)总计7段,格式为如下:
用户名:密码:UID:GID:账户信息:账户目录:Shell版本
/etc/shadow(用户密码文件,root才可以访问),总计9段,格式如下:
用户名:密码:最后一次修改时间的天数:两次修改密码最小间隔天数:多少天后需要再次修改密码:从发出警告到密码正式失效的天数:禁止登陆前用户名还有效的天数:用户被禁止登陆的时间:标志字段,无意义
注意:shadow中,密码字段为*表示用户被禁止登陆,为"!!"表示用户为设置密码,为"!"表示用户被锁定。
passwd的密码为影子密码用X表示,而shadow中为加密后保存的密文。
与用户组有关的文件是:
/etc/group(用户组文件,所有账户都可以访问),总计4段,格式如下:
用户组名称:组密码:GID:组成员
/etc/gshadow(用户组密码文件,root权限才可以访问)总计4段,格式如下:
用户组名称:组密码:组管理者:组成员
# 显示用户信息
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# su -
上一次登录:五 11月 1 21:12:05 CST 2019从 192.168.56.1pts/0 上
[root@localhost ~]# ls /etc/passwd
/etc/passwd
[root@localhost ~]# ls /etc/group
/etc/group
[root@localhost ~]# ls /etc/gshadow
/etc/gshadow
# 显示当前用户
[root@localhost ~]# whoami
root
# 显示登录用户登录名、tty、登录日期和时间
[root@localhost ~]# who
root pts/0 2019-11-01 21:12 (192.168.56.1)
# 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序
[root@localhost ~]# w
21:23:36 up 16 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.56.1 21:12 0.00s 0.15s 0.03s w
# 添加用户
[root@localhost ~]# adduser admin
# 添加密码
[root@localhost ~]# passwd admin
更改用户 admin 的密码 。
新的 密码:
# 只删除用户
[root@localhost ~]# userdel admin
# 连同用户主目录一块删除
[root@localhost ~]# userdel -r admin
su 和 su - 的区别
注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
adduser和useradd的区别?
adduser: 会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。
四、权限
- 权限简介
所谓权限管理,其实就是指对不同的用户,设置不同的文件访问权限,包括对文件的读、写、删除等,在 Linux 系统中,每个用户都具有不同的权限,拿非 root 用户来说,它们只能在自己的主目录下才具有写权限,而在主目录之外,只具有访问和读权限。
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
Linux上通常使用chmod命令对文件的权限进行设置和更改。 - 更改文件权限 (chmod命令)
语法格式为 :
chmod <abc> file...
# 查看文件权限U(用户)G(组)O(其它用户)
[root@localhost ~]# ls -al
总用量 28
dr-xr-x---. 2 root root 135 11月 1 21:06 .
dr-xr-xr-x. 17 root root 224 11月 1 20:52 ..
-rw-------. 1 root root 1262 11月 1 20:55 anaconda-ks.cfg
-rw-------. 1 root root 8 11月 1 21:06 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
# 设置所有人可读
[root@localhost ~]# touch a.txt
[root@localhost ~]# chmod ugo+r a.txt
[root@localhost ~]# ls -l a.txt
-rw-r--r--. 1 root root 0 11月 1 21:40 a.txt
- 更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
语法格式:
chown [可选项] user[:group] file...
# 将目前目录下的所有文件与子目录的拥有者皆设为admin,组体的使用者admin:
[root@localhost ~]# chown admin a.txt
十位权限表示:
常见的权限表示形式有:
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:
d代表的是目录(directroy)
-代表的是文件(regular file)
s代表的是套字文件(socket)
p代表的管道文件(pipe)或命名管道文件(named pipe)
l代表的是符号链接文件(symbolic link)
b代表的是该文件是面向块的设备文件(block-oriented device file)
c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
后九位解析:我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。
- 置了用户创建文件的默认权限
语法:
umask: usage: umask [-p] [-S] [mode]
-p:打印当前umask值
-S:显示当前掩码
mode:设置为umask值
系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
[root@localhost ~]# umask
0022
# 修改umask 值
[root@localhost ~]# umask 022
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
显然O 用户缺省w 权限,即默认创建文件或文件夹时,缺省O中的w 权限。只不过创建文件时,默认都不会给x的权限,而创建文件夹时是默认给x权限。
网友评论