Linux 用户和文件权限管理

时间:2022-06-14 15:19:57

Linux —— 用户权限管理

权限:

为什么需要权限管理?
    1.计算机资源有限,我们需要合理的分配计算机资源。
    2.Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重要的

由于Linux的一切皆文件的基本思想,对于权限的管理更多的则体现在管理文件权限上。为了
方便的指派权限,在Linux中定义了文件属主,文件属组,其他人这三类人的权限。
对于计算机来说,这三类都是一个标识符。

通过 ls 命令我们可以看到文件的具体权限信息。
drwxrwxr-x 2 linlin linlin 4096 Jun  5 02:29 .
drwxrwxr-x 5 linlin linlin 4096 May 29 02:38 ..
-rw-rw-r-- 1 linlin linlin    0 Jun  5 02:29 file

文件权限信息一共有9位,每3位一组,分别表示属主,属组,其他人的权限信息

权限:r  w  x

对于文件:
r:可读,可以使用cat等命令查看文件内容
w:可写,可以进行编辑修改,或删除操作
x:可执行,可以在命令提示符下当做命令提交给内核运行

对于目录:
r:可以对此目录执行ls命令,列出内部所有文件
w:可以在此目录下创建文件
x:可以使用cd命令切换进此目录,也可以使用ls -l命令查看内部文件的详细信息

对于目录来说,一般会有执行权限,而对于文件来说,一般默认没有执行权限。

表示没有某个权限时,使用 -

在表示文件权限时,也可以使用八进制数字0,1,2,4...表示
0 000 ---:无权限
1 001 --x:可执行
2 010 -w-:可写
4 100 r--:可读
7 111 rwx:可读可写可执行

储存用户和组的文件
用户:UID /etc/passwd
组  :GID /etc/group

Linux中,在储存用户和组信息的文件,不会直接将用户或组密码储存在其中,而是
在其他文件中储存,但并不是直接以密码保存,而是保存加密后的文件,影子口令
用户:/etc/shadow
组  :/etc/gshadow

储存用户信息的文件:/etc/passwd
linlin@ubuntu:~/linlin$ tail -3 /etc/passwd
linlin:x:1000:1000:linlin's ubunto,,,:/home/linlin:/bin/bash
mysql:x:121:129:MySQL Server,,,:/nonexistent:/bin/false
wangml:x:1002:1002:wangml:/home/wangml:/bin/bash

通过上面示例可以看到,在/etc/passwd文件中,每个用户信息作为一行,而每一行分
为7段,用 :分隔,分别表示:
用户名 :密码占位符 :UID :用户私有组(基本组)GID :注释 :用户家目录 :默认shell

储存组信息文件:/etc/group
linlin@ubuntu:~/linlin$ tail -3 /etc/group
mysql:x:129:
xiaolinlin:x:1001:wangml
wangml:x:1002:

表示为 组名 :密码占位符 :GID :

UID:根据用户类别分类
    管理员ID号永远为0
    普通用户ID号1~65535,16位表示用户
        系统用户ID号1~499
        一般用户ID号500开始
在/etc/passwd文件中,添加一般用户时,用户ID一般为该文件中最大的一般用户ID+1

用户组:
    基本组,私有组:本组只有该用户自己,用户创建文件后,该文件的默认组为该用户的基本组
    附加组,额外组:基本组以外的其他组

在创建一个用户时,如果未指定用户私有组和家目录时,系统默认会为该用户创建一个以该用户名为
组名的组,作为该用户的私有组组GID一般与用户UID相同。且会在/home目录下为该用户创建一个与
该用户同名的目录作为该用户的家目录。

对于系统用户来说,没有默认shell,即系统用户不允许登陆

储存密码信息文件:/etc/shadow
mysql:!:17301:0:99999:7:::
wangml:!!:17303:0:99999:7:::
用户名 :加密后的密码 :最后一次密码修改时间 :密码最短使用时间 :用户过期时间 :修改密码警告时间 :;:
可以使用 man shadow 命令查看具体信息

只有管理员root可以查看/etc/shadow文件
root@ubuntu:/home/linlin/linlin# ls -l /etc/shadow
-rw-r----- 1 root shadow 1336 Jun  4 02:52 /etc/shadow

通过以上内容可以知道,没添加一个用户,就是在 /etc/passwd /etc/shadow /etc/group 这三个文件中各加
入一行信息,所以,我们可以直接通过修改这是三个文件来添加用户,而不需要使用命令

 

用户管理:

添加用户:useradd 用户名,有事也可以使用 adduser,adduser是一个软链接
-u:手动指定UID
-g:指定基本组GID
-G:指定额外组,附加组
-c:指定注释信息
-d:指定某个目录为家目录
-s:指定用户默认shell
    在/etc/shells下指定了当前系统下的可用的安全shell
-m -k:给用户强制创建家目录,并将/etc/skel下的文件复制到家目录下
-M:不给用户创建家目录
-r:添加系统用户

删除用户:userdel 选项 用户名
默认在删除用户时不会删除用户家目录
-r:删除用户的同事删除用户家目录

查看用户账号的基本信息:id
linlin@ubuntu:~/linlin$ id
uid=1000(linlin) gid=1000(linlin) groups=1000(linlin),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

检索用户信息:finger 用户名
linlin@ubuntu:~/linlin$ finger linlin
Login: linlin            Name: linlin's ubunto
Directory: /home/linlin              Shell: /bin/bash
On since Thu May 18 01:32 (PDT) on tty7 from :0
   18 days 20 hours idle
No mail.
No Plan.

修改用户账号信息:usermod 选项 内容 用户名
-u:修改UID
-g:修改基本组
-G:修改附加组,如果此前用户已有附加组,则使用-G后,该附加组会被覆盖,如果需要添加
附加组,则使用 -G -a
-c:修改注释
-d:指定新家目录,一般与-m一起使用,表示在创建新家目录的同时,将原来家目录下的内容
复制到新的家目录中
-e:指定用户过期时间
-L:锁定账号
-U:解锁账号

chsh:修改用户默认shell

chfn:修改用户注释信息

修改用户密码:passwd 用户名
--stdin:从标准输入读取
-l:锁定用户账号
-u:解锁
-d:删除用户密码
    Linux中,禁止空密码用户登录

pwck:检查用户账号完整性


组管理:

创建组:groupadd
-g:指定GID
-r:添加系统组

删除组:groupdel

修改组属性:groupmod
-g:修改 GID
-n:修改组名

gpasswd:为组设定密码

newgrp:登录到一个新组,exit退出

改变用密码过期时间:chage
-d:最近一次的修改时间
-E:过期时间
-r:非活动时间
-m:最短使用期限
-M:最长使用期限
-W:警告时间


改变文件属主:chown 用户名 files
只有管理员才可以改变文件属主
-R:修改目录文件属性时将目录内的文件一起修改
--reference=文件1 文件2... :将文件2...的属主、属组修改为与文件1相同

修改文件属组:chgrp
只有管理员才可以使用,使用方法和chown一样、

使用chown 用户名:组名 文件 或 chown 用户名.组名 文件 可以同时修改文件的属主属组
chown 组名 文件:只改属组

修改文件权限:chmod MODE 文件
-R:递归修改
--reference=文件1 文件2... :将文件2...将文件2...的属性修改为与文件1相同
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw-rw-r-- 1 linlin linlin 0 Jun  5 02:29 file
root@ubuntu:/home/linlin/linlin/test# chmod 600 file
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw------- 1 linlin linlin 0 Jun  5 02:29 file

修改某类用户权限时:chmod 用户类别(u g o a) +(-) MODE,a表示所有用户,可以省略
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw------- 1 linlin linlin 0 Jun  5 02:29 file
root@ubuntu:/home/linlin/linlin/test# chmod g+r file
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw-r----- 1 linlin linlin 0 Jun  5 02:29 file

我们都知道,在创建一个文件后,系统会默认给文件赋予权限,那么,默认权限是由什么决定的?
umask:遮罩码,不加参数时表示查看系统默认遮罩码,加八进制位表示修改遮罩码
root@ubuntu:/home/linlin/linlin/test# umask
0044
root@ubuntu:/home/linlin/linlin/test# umask 0022
root@ubuntu:/home/linlin/linlin/test# umask
0022
创建文件后默认权限 666-umask
创建目录后默认权限 777-umask