Linux用户管理和文件权限

Linux操作系统是一个多用户操作系统,它允许多用户同时登陆到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

Linux如何保证多个不同的用户对同个文件进行操作时有不同的权限控制呢?

  1. Linux使用User和Group来控制使用者对文件的访问权限;
  2. 不同用户是使用不同的账号/密码进行登录到Linux;
  3. 每个文件都有owner,并且每个owner都归属于某个Group;
  4. 每个程序/文件都有自己的owner和group;

===> 使得Linux的安全性才有严格的保障

用户:

  1. 每个用户都有一个唯一的User ID,唯一性标识符;
  2. User的信息存储在 /etc/passwd中
    root:x:0:0:root:/root:/bin/bash
    每个属性之间采用:分隔
    root: 登录Linux的用户名
    x: 该用户需要使用密码才能登录, 如果为空表示不需要密码就能登录
    0:数字,表示的是uid, 0到499是系统预留的, 如果是我们新增的User,那么500开始计数的
    0:数字,表示的是gid
    root:是账户的描述信息
    /root: 该用户的home路径, 如果是我们自己添加的用户呢?它的home是哪里呢?
    /bin/bash:登录后执行的程序
  3. /etc/shadow: 存储的是用户对应的密码信息
    root:$1$puUB8Y.1$5nURxhc.1a9JhdfZwgvKB0:15970:0:99999:7:::
    root: 账号的名称,和/etc/passwd中的用户名是一一对应的
    $1$puUB8Y.1$5nURxhc.1a9JhdfZwgvKB0: 密码,不是明文的,经过MD5加密的
    15970:最后一次修改密码的时间
    0:数字,密码不能被修改的天数
    99999:数字,密码多少天后需要强制修改
    7: 数字,密码需要被修改之前要提醒的天数
  4. 每个User都有一个对应的home目录
    root: /root
    xxxx: 对应的home位于 /home/xxxx
  5. root用户:超级管理员账号,具有非常高的权限

用户组:

  1. 每个用户都属于一个Group,具有一个唯一的标识符

  2. Group信息存储在/etc/group下
    root:x:0:
    root:组的名称
    x:该组需要使用密码才能登录
    0:数字,就是该组的id,gid

  3. 系统会为每个用户关联一个和User同名的Group、User也可以被加入到其他组,一个User可以对应多个组;
    user:root group:root

  4. 保存用户组密码的文件:/etc/gshadow
    用户配置文件:/etc/default/useradd

对用户和用户组的操作

添加用户: useradd abc

查看一下:cat /etc/passwd
abc:x:500:500::/home/abc:/bin/bash
新增的abc用户对应的根目录是/home/abc
[root@abc ~]# su - abc //用户切换,从root切换到abc用户,是不需要密码的
[abc@abc ~]$ pwd
/home/abc

但是abc用户切换到abc用户自己,却提示我们需要输入密码,但是我们却不知道密码。
[abc@abc ~]$ su - abc
Password:??????

这时用root用户来管理新增的用户
修改abc用户的密码:passwd abc

修改用户名:usermod -l new_name old_name

修改:usermod -l abc_linux abc

查看一下:cat /etc/passwd
abc_linux:x:500:500::/home/abc:/bin/bash
对用户进行名称修改时,用户名是发生了变化,但是home目录的文件夹名称并没有发生改名/home/abc

删除用户: userdel -r abc_linux

-r:在删除该用户时一并删除该用户对应的home文件夹

用户组添加: groupadd g1
用户组修改: groupmod -n newg1 g1
用户组删除: groupdel newg1

Linux文件权限

r: 读权限(read)可以读取文件/目录的内容
w: 写权限(write)可以写、删除文件/目录
x: 执行权限(execute)可以执行可执行文件
-:没有权限

使用ls命令查看:
drwxr-xr-x 2 root root 4096 Oct 29 02:12 Desktop

drwxr-xr-x就是文件的权限
第一位:文件类型 d是目录 -是文件 l是链接
第2-4位:所属用户的权限, 用u(user)表示
第5-7位:所属组的权限,用g(group)表示
第8-10位:其他用户的权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示

d rwx -w- ---
目录、owner权限为可读写执行、group权限为可写、others没有任何权限

- rwx rwx r-x
文件、owner权限为可读写执行、group权限为可读写执行、others可读可执行

字符表示法:chmod [-R] mode file

mode有哪些:

who operator permission
u(owner) + r
g(group) - w
o(others) = x
a(ugo)

去掉owner的写权限: chmod u-w hello
为group添加写权限: chmod g+w hello
为owner和group添加写权限:chmod ug+w hello
ugo去掉执行权限:chmod ugo-x hello
为文件夹添加执行权限:chmod a+x hello
others改成写权限:chmod o=w hello
将hello文件夹的所有权限去掉: chmod a= hello
虽然hello目录的权限都被我们删除了,但是并不影响该目录下的子目录或者文件的权限
给hello文件夹下的所有文件都添加rwx权限:chmod -R a+rwx hello(-R是递归操作)

数字表示法: chmod 777 hello

r用4表示、w用2表示、x用1表示、没有权限用0表示
owner: rwx: 4 + 2 + 1 = 7
group: r-x: 4 + 0 + 1 = 5
others: r--: 4 + 0 + 0 = 4
rwxr-xr-- = 754

owner设置r-x: r=4 w=0 x=1 chmod 577 hello
ugo设置r-x:chmod 555 hello 递归设置:chmod -R 555 hello

你可能感兴趣的:(Linux用户管理和文件权限)