账号和权限管理

账号和权限管理

用户账号类型

linux中每个用户是通过User id (UID)来唯一标识的1-60000 自动分配。

管理员:root,0

程序用户:1-499(centOS 6之前),1-999 (centOS 7以后)

对守护进程获取资源进行权限分配

普通用户:500+(cengtOS6之前),1000+(centOS7以后)

给用户进行交互登录使用

管理用户账号和组账号

linux基于用户身份对资源访问进行控制

用户账号

超级用户、普通用户、程序用户

组账号

基本组(私有组 最前面的一个组,有且唯一)

附加组(公共组,可有可无,也可以是多个,非必要)

UID和GID

UID(User IDentity,用户标识号)

GID(Group IDentify,组标识号)

用户账号文件/etc/passwd

保存用户名称、宿主目录、登录shell等基本信息

文件位置:/etc/passwd

每一行对应一个用户的账号记录

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符
0:UID
0:GID
root:超级管理员
/root:宿主目录
/bin/bash:shell环境

用户账号文件/etc/shadow

保存用户的密码、账号有效期等信息

文件位置:/etc/shadow

每一行对应一个用户的密码记录

[root@localhost ~]# cat /etc/shadow
root:$6$8NEwKCljQ6q3jMTk$bZFLMsG5A55PEh/8h0wrDG.nhMN30mEkoO6z2H88b6WVCK4/nZIwCYhI8E7noPx6ikjRaODGyQZO1pvXnZ7Ed1::0:99999:7:::
root#用户账号
$6$8NEwKCljQ6q3jMTk$bZFLMsG5A55PEh/8h0wrDG.nhMN30mEkoO6z2H88b6WVCK4/nZIwCYhI8E7noPx6ikjRaODGyQZO1pvXnZ7Ed1#用户密码
::0:99999:7::#密码修改时间
root:$6$8NEwKCljQ6q3jMTk$bZFLMsG5A55PEh/8h0wrDG.nhMN30mEkoO6z2H88b6WVCK4/nZIwCYhI8E7noPx6ikjRaODGyQZO1pvXnZ7Ed1::0:99999:7:::

此文件的每行包括 9 个字段,使用半角冒号 (“:”) 分隔,顺序如下:

字段1:用户帐号的名称;
字段2:使用SHA512加密的密码字串信息,当为“*” 或“! !”时表示此用户不能登录到系统。,若该字段内容为空,则该用户无须密码即可登录系统;
字段3:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数;
字段4:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制;
字段5:密码的最长有效天数,自 本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999, 表示不进行限制;
字段6:提前多少天警告用户密码将过期,默认值为7;
字段7:在密码过期之后多少天禁用此用户;
字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用;
字段9:保留字段(未使用),没有特定用用途。

或者也可以用man 5 shadow查看

useradd命令添加用户信息

useradd命令

命令格式:

useradd [选项] 用户名

常用选项:

-u:指定用户的UID号,求uid号未被其他用户使用

-d:指定用户的宿主目录位置与-M一起使用不生效

-e:失效时间指定账户失效时间,可以使用日期格式

-g:指定用户的基本组名

-G:附加组指定用户的附加组名

-M:不生成家目录不建立宿主目录

-s:指定shell环境

添加用户:查看是否在passwd和shadow文件中生成信息

在/etc/passwd文件和/etc/shadow文件的末尾加该用户的账号信息。

若未明确指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。

若没有明确指定用户所属的组,则自动创建与该用户同名的基本组账号,组账号的记录信息将保存到/etc/group和 /etc/gshadow文件中。

[root@localhost ~]# useradd -u 1450 -e 2022-02-25 -d /ky18 -g root -G wheel geng
#添加一个uid号为1450失效时间为2022-02-25宿主目录位置/ky18基本组为root附加组为wheel的用户
[root@localhost ~]# id geng#查询用户身份标识
uid=1450(geng) gid=0(root) 组=0(root),10(wheel)
[root@localhost ~]# tail -1 /etc/shadow#显示末尾一行查看是否添加成功
#这里可以看到帐号失效时间是19048,从1970年后的19048天失效
geng:!!:19044:0:99999:7::19048:
[root@localhost ~]# useradd -M -s /bin/bash xie
#添加一个不生成家目录不建立宿主目指定shell环境的xie目录
[root@localhost ~]# id xie
uid=1451(xie) gid=1451(xie) 组=1451(xie)
[root@localhost ~]# tail -1 /etc/shadow#显示末尾一行查看是否添加成功
xie:!!:19044:0:99999:7:::
[root@localhost ~]# tail -1 /etc/passwd#显示末尾一行查看是否添加成功
xie:x:1451:1451::/home/xie:/bin/bash

设置/更改用户口令passwd

passwd命令

命令格式

passwd [选项] 用户名

常用选项:

-d:清空指定用户名密码

-l:锁定用户账号
-S:查看用户状态

-u解锁用户账号

示例:

[root@localhost ~]# passwd geng#基本用法更改用户账号密码
更改用户 geng 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -d geng
清除用户的密码 geng。
passwd: 操作成功
[root@localhost ~]# passwd -l geng
锁定用户 geng 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S geng
geng LK 2022-02-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -u geng
解锁用户 geng 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost ~]# passwd -uf geng
解锁用户 geng 的密码。
passwd: 操作成功

修改用户账号属性usermod

usermod命令

命令格式

usermod [选项] 用户名

常用选项

-l:(小L)修改登录用户名

-L:锁定用户账号

-U:解锁用户账号

-u:修改用户的UID号

-d:修改用户的宿主目录位置

-e:修改失效时间指定账户失效时间,可以使用日期格式

-g:修改用户的基本组名

-G:修改附加组名

-s:修改shell环境

示例:

注意:这里所有修改用户账号名必须在最后

[root@localhost ~]# usermod -l wang xie      #修改登录账号用户名
[root@localhost ~]# tail -1 /etc/passwd      #显示末行
wang:x:1451:1451::/home/xie:/bin/bash        #这里可以看出已将用户名为xie的修改为wang
[root@localhost ~]# usermod -L wang          #锁定用户账号
[root@localhost ~]# passwd -S wang           #查看用户状态
wang LK 2022-02-21 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -u wang           #解锁用户账号
#这里可以看出我用passwd命令也是可以的
解锁用户 wang 的密码。
passwd: 操作成功
[root@localhost ~]# id wang                  #查询用户身份标识
uid=1451(wang) gid=1451(xie) 组=1451(xie)
[root@localhost ~]# usermod -u 1200 wang     #修改用户的UID号为1200
[root@localhost ~]# id wang 
uid=1200(wang) gid=1451(xie) 组=1451(xie)    #可以看出已修改
[root@localhost ~]# tail -1 /etc/passwd      #显示末行
wang:x:1200:1451::/home/xie:/bin/bash
[root@localhost ~]# usermod -d /ky18 wang    #修改用户的宿主目录位置
[root@localhost ~]# tail -1 /etc/passwd
wang:x:1200:1451::/ky18:/bin/bash            #可以看出已修改
[root@localhost ~]# tail -1 /etc/shadow
wang:$6$iefBHOoB$fAWrboxj2m2hqs.crR431p7ypvKQmWCk5DLvpSUvaGyr4wiIoKyK59NBJEX/rD9Ws9UpbpI337EolRrmUnc0h1:19044:0:99999:7:::
[root@localhost ~]# usermod -e 2022-02-22 wang     #:修改失效时间
[root@localhost ~]# tail -1 /etc/shadow
wang:$6$iefBHOoB$fAWrboxj2m2hqs.crR431p7ypvKQmWCk5DLvpSUvaGyr4wiIoKyK59NBJEX/rD9Ws9UpbpI337EolRrmUnc0h1:19044:0:99999:7::19045:    #可以看出已修改
[root@localhost ~]# id wang
uid=1200(wang) gid=1451(xie) 组=1451(xie)
[root@localhost ~]# usermod -g root wang     #修改用户的基本组名
[root@localhost ~]# id wang
uid=1200(wang) gid=0(root) 组=0(root)        #可以看出已修改
[root@localhost ~]# usermod -G wheel wang   #修改附加组名
[root@localhost ~]# id wang
uid=1200(wang) gid=0(root) 组=0(root),10(wheel)    #可以看出已修改
[root@localhost bin]# usermod -s /sbin/nologin wang   #修改shell环境
[root@localhost bin]# tail -1 /etc/passwd
wang:x:1200:0::/ky18:/sbin/nologin           #可以看出已修改

删除用户账号userdel

userdel命令

格式

userdel [选线] 用户名

添加-r选项时,表示连同用户的宿主目录一并删除

[root@localhost bin]# ls /home      #查看目录
GB  zhang
[root@localhost bin]# userdel -r zhang  #删除账号zhang
[root@localhost bin]# ls /home
GB   

用户账号的初始配置文件

文件来源

新建用户账号时,从/etc/skel目录中复制而来

[root@localhost bin]# ls -a /etc/skel    #显示所有隐藏文件
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

主要的用户初始配置文件

用户宿主目录下的初始配置文件只对当前用户有效

~/.bash_profile

此文件命令将在该用户每次登录时执行,他会设置一些变量,并且会调用该用户的~/.bashrc

~/.bashrc

此文件命令将在该用户每次打开新的bash shell时被执行(包括登录系统)

~/.bash_logout

此文件命令将在该用户每次退出时bash shell时使用

组账号文件

与用户账号文件现类似

/etc/group:保存组账号基本信息

/etc/gshadow:保存组账号密码信息

添加组账号groupadd

groupadd命令

格式

groupadd [选项] 组账号名

示例

[root@localhost ~]# groupadd -g 1400 xiao   #添加指定gid号为1400账号xaio
[root@localhost ~]# tail -1 /etc/group      #显示末行
xiao:x:1400:

添加删除组成员gpasswd

gpasswd命令

命令格式

gpasswd [选项] 组账号名

常用选项

-a:向组内添加成员

-d:从组内删除一个用户成员

-M:定义组成员列表,以逗号分隔

[root@localhost ~]# gpasswd -a root wang  #添加成员root
正在将用户“root”加入到“wang”组中
[root@localhost ~]# tail -1 /etc/group
wang:x:1300:root
[root@localhost ~]# gpasswd -d root wang  #删除一个用户成员root
正在将用户“root”从“wang”组中删除
[root@localhost ~]# tail -1 /etc/group
wang:x:1300:
[root@localhost ~]# gpasswd -M root,GB wang  #添加多个成员
[root@localhost ~]# tail -1 /etc/group
wang:x:1300:root,GB

删除组账号groupdel

groupdel命令

格式

groupdel 组账号名

示例

[root@localhost ~]# tail -1 /etc/group
xiao:x:1400:wang
[root@localhost ~]# groupdel xiao
[root@localhost ~]# tail -1 /etc/group
wang:x:1300:root,GB

查询账号信息

groups命令

查询用户所属的组

groups [用户名]

id命令

查询用户省份标识

id [用户名]

finger命令

需要安装

yum install finger -y#可以用这条命令安装

查询用户账号的详细信息

finger[用户名]

w、who、users命令

查询一登陆到主机的信息

示例

[root@localhost ~]# groups wang   #查询用户所属的组
wang : root wheel    #前面基本组后面附加组
[root@localhost ~]# id wang       #查询用户省份标识
uid=1200(wang) gid=0(root) 组=0(root),10(wheel)
[root@localhost ~]# finger wang   #查询用户账号的详细信息
Login: wang #登录名           			Name: 描述信息
Directory: /ky18#家目录               	Shell: /sbin/nologin#  shell环境
Never logged in.
No mail.
No Plan.
[root@localhost ~]# w #登录详细信息
 17:11:57 up  4:38,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               12:34   ?xdm?  43.46s  0.16s /usr/libexec/gnome
root     pts/0    192.168.88.1     12:34    5.00s  0.31s  0.01s w
[root@localhost ~]# who    #登录时间
root     :0           2022-02-21 12:34 (:0)
root     pts/0        2022-02-21 12:34 (192.168.88.1)
[root@localhost ~]# users#显示当前登录系统的所有用户的用户列表
root root

补充:

last命令

选项

-x:信息显示系统开关机和执行等信息

-a:将登陆IP最后一行

-f:读取特定的文件,你可以选择- f / var / log / dtmp文件

-d:将IP地址转换为主机名

-n:设置列出名单显示的列数

-t:看指定的时间用户登录的历史

lastlog命令

last log查看所有用户最后一次登录

选项

-u:指定用户

-t:指定时间以天为单位

[root@localhost ~]# lastlog -u root
用户名           端口     来自             最后登陆时间
root             pts/0    192.168.88.1     一 2月 21 12:34:54 +0800 2022
[root@localhost ~]# lastlog -t 3
用户名           端口     来自             最后登陆时间
root             pts/0    192.168.88.1     一 2月 21 12:34:54 +0800 2022
gdm              :0                        一 2月 21 12:33:31 +0800 2022

管理目录和文件的属性

文件/目录的权限和归属

访问权限

r:可读允许查看显示目录列表

w:可写允许修改、新建、移动、删除文件或目录

x:可执行允许运行程序、切换目录

归属(所有权)

属主:拥有该文件的/目录的用户信息

属组:拥有该文件的/目录的账号

查看文件/目录的权限和归属

在表示属主、属组用户或者其他用户对该文件的访问权限时,主要使用了三种不同的权限字符,权限字符也可以分别表示为八进制数字4、2、1,表示一个权限组合时需要将数字进行累加。

[root@localhost ~]# ls -l httpd-2.4.52.tar.bz2 
-rw-r--r--. 1 root root 7439184 12月 20 17:36 httpd-2.4.52.tar.bz2

-rw-r--r--:文件类型、权限

root:属主

root :属组

设置文件和目录的权限chmod

chmod命令

字符组合“[ugoa···][+ - =][rwx]”或者数字组合“nnn”的形式表示要设置的权限模式,其中“nnn”为需要设置的具体权限值,如“755”、“644”等,而“[guoa···][+ - =][rwx]”的形式中,三个组成部分的含义及用法如下所述:

“ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主,“g”代表文件组内的用户,“o”代表其他任何用户长度有用户(ugo的总和);
“+ - =”表示设置权限的操作动作。“+”号代表增加权限,“-”号代表减少相应权限,“=”号代表仅设置对应的权限;
常用选项: -R:递归修改指定目录下所有子项的权限(包括目录中的文件)

[root@localhost mnt]# ll
总用量 0
--w-------. 1 root root 0 2月  21 18:13 li.txt
[root@localhost mnt]# chmod +rwx li.txt
[root@localhost mnt]# ll
总用量 0
-rwxr-xr-x. 1 root root 0 2月  21 18:13 li.txt

示例

[root@localhost mnt]# chmod +777 li.txt
[root@localhost mnt]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 2月  21 18:13 li.txt
[root@localhost mnt]# chmod -022 li.txt
[root@localhost mnt]# ll
总用量 0
-rwxr-xr-x. 1 root root 0 2月  21 18:13 li.txt
[root@localhost mnt]# mkdir -p aaa/bbb/ccc     #递归创建目录
[root@localhost mnt]# tree
.
├── aaa
│   └── bbb
│       └── ccc
└── li.txt
3 directories, 1 file
[root@localhost mnt]# ll -R aaa         #递归显示
aaa:
总用量 0
drwxr-xr-x. 3 root root 17 2月  21 18:28 bbb
aaa/bbb:
总用量 0
drwxr-xr-x. 2 root root 6 2月  21 18:28 ccc
aaa/bbb/ccc:
总用量 0
[root@localhost mnt]# chmod -R +777 aaa #递归设置权限(递归设置权限只需要设置开头第一个就可以了)
[root@localhost mnt]# ll -R aaa
aaa:
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 bbb
aaa/bbb:
总用量 0
drwxrwxrwx. 2 root root 6 2月  21 18:28 ccc

权限掩码umask

umask作用

控制新建文件或目录的权限

默认权限去除umask的权限为新建的文件或目录的权限

新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)

umask设置:umask 022

umask查看:umask

示例

[root@localhost mnt]# umask 000
[root@localhost mnt]# mkdir 1.txt
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 2 root root  6 2月  21 18:40 1.txt
#这里可以看到目录的默认权限为777
[root@localhost mnt]# umask 022
[root@localhost mnt]# mkdir 2.txt
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 2 root root  6 2月  21 18:40 1.txt
drwxr-xr-x. 2 root root  6 2月  21 18:40 2.txt
#这里可以看到权限为755
[root@localhost mnt]# touch 3.txt
[root@localhost mnt]# ll
总用量 
-rw-rw-rw-. 1 root root  0 2月  21 18:51 3.txt
#这里可以看到文件的默认权限为666
[root@localhost mnt]# umask 022
[root@localhost mnt]# touch 4.txt
[root@localhost mnt]# ll
总用量 0
-rw-rw-rw-. 1 root root  0 2月  21 18:51 3.txt
-rw-r--r--. 1 root root  0 2月  21 18:52 4.txt
#这里可以看到权限为644

设置文件和目录的归属chown

chown命令

chown 属主 文件或目录

chown:属组 文件 或目录

chown 属主:属组 文件或目录

常用选项

-R:递归修改指定目录下所有文件、子目录的归属

[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 aaa
-rwxr-xr-x. 1 root root  0 2月  21 18:13 li.txt
[root@localhost mnt]# chown wang li.txt         #设置属主
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 aaa
-rwxr-xr-x. 1 wang root  0 2月  21 18:13 li.txt
[root@localhost mnt]# chown wang:wang li.txt    #设置属主属组
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 aaa
-rwxr-xr-x. 1 wang wang  0 2月  21 18:13 li.txt
[root@localhost mnt]# chown :root li.txt        #设置属组
[root@localhost mnt]# ll
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 aaa
-rwxr-xr-x. 1 wang root  0 2月  21 18:13 li.txt
[root@localhost mnt]# ll -R aaa                 #递归显示
aaa:
总用量 0
drwxrwxrwx. 3 root root 17 2月  21 18:28 bbb
aaa/bbb:
总用量 0
drwxrwxrwx. 2 root root 6 2月  21 18:28 ccc
aaa/bbb/ccc:
总用量 0
[root@localhost mnt]# chown -R :wang aaa       #递归设置属组
[root@localhost mnt]# ll -R aaa
aaa:
总用量 0
drwxrwxrwx. 3 root wang 17 2月  21 18:28 bbb
aaa/bbb:
总用量 0
drwxrwxrwx. 2 root wang 6 2月  21 18:28 ccc
aaa/bbb/ccc:
总用量 0

三种特殊权限

suid

[root@localhost aa]#which passwd 
/usr/bin/passwd
[root@localhost aa]#ll /usr/bin/passwd 
#此处s表示当使用这个命令程序时,把当前用户当成文件的所属主
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd
[root@localhost aa]#which vim
/usr/bin/vim
[root@localhost aa]#chmod u+s /usr/bin/vim
#给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件
[root@localhost aa]#ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim
7777

SGID

[root@localhost aa]#ll /usr/bin/vim
-rwxr-sr-x. 1 root root 2289640 8月   2 2017 /usr/bin/vim

Sticky 位

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
Sticky权限设定:

[root@localhost aa]#chmod o+t /opt/aa

chmod o+t DIR...
chmod o-t DIR..

[root@localhost aa]#chmod o+t /opt/aa

添加Sticky 位

[root@localhost opt]#chmod o-t /opt/aa 
#减少Sticky 位

总结

1.Linux用户账号分为超级用户、程序用户和普通用户。

2.passwd和shadow文件保存了用户的基本信息及密码。

3.useradd、passwd、usermod 和userdel命令可以对用户账号进行管理。

4.groupadd、gpasswd、 groupdel 命令可以管理组账号。

5.chmod 命令可以设置文件和目录的访问权限。

6.chown命令可以设置文件和目录的属主、属组。

7.umask 就是默认指定目前用户在新建文件或目录时的权限默认值。

8.suid、sgid、stycky三种特殊权限

posted @ 2022-02-21 19:36  GENGBO  阅读(632)  评论(0编辑  收藏  举报