博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 权限
阅读量:5786 次
发布时间:2019-06-18

本文共 8313 字,大约阅读时间需要 27 分钟。

本篇权限分两个部分介绍。

1,用户、组;

2,文件权限;

第一个部分主要介绍用户与组的创建、删除、修改、查询。以及这些信息的存储位置。第二部分介绍文件、文件夹的权限。以及uid、gid、bit。

一,linux用户与组

Linux用户与组信息存储位置:

  用户信息文件:    /etc/passwd  文件配置规则:用户名:密码占位符:用户ID:组ID:一般的信息:家目录:默认登入shell
  密码文件:           /etc/shadow   文件配置规则:用户名:
加密的密码:最后一次修改密码的日期:密码最小年龄:密码最大年龄:密码警告时间段:密码禁用期:账户过期
  用户组文件:        /etc/group      文件配置规则:组名:密码占位符:组ID:组用户
  用户组密码文件: /etc/gshadow 
  用户配置文件:     /etc/login.defs    /etc/default/useradd
  新用户信息文件:  /etc/skel
  登录信息:             /etc/motd

1,用户

1.1 创建用户的两个命令:adduser与useradd。每个命令详情通过 -h查看。

root@hf-vm:/home# adduser hf2root@hf-vm:/home# useradd -m -s '/bin/bash' hf3root@hf-vm:/home# ls -l /home/drwxr-xr-x  2 hf1    hf1    4096 3月  22 10:38 hf1drwxr-xr-x  2 hf2    hf2    4096 3月  22 10:58 hf2drwxr-xr-x  2 hf3    hf3    4096 3月  22 10:59 hf3

1.2 查看用户信息命令 id与finger

root@hf-vm:/home# id hf3uid=1003(hf3) gid=1004(hf3) 组=1004(hf3)
root@hf-vm:/home# finger hf2Login: hf2                              Name:Directory: /home/hf2                    Shell: /bin/bashNever logged in.No mail.No Plan.

1.3 删除用户命令userdel

root@hf-vm:/home# userdel -luserdel: 不适用的选项 -- l用法:userdel [选项] 登录选项:  -f, --force                   即使不属于此用户,也强制删除文件  -h, --help                    显示此帮助信息并推出  -r, --remove                  删除主目录和邮件池  -R, --root CHROOT_DIR         chroot 到的目录  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射root@hf-vm:/home# userdel -r hf2root@hf-vm:/home# ls -l /home/drwxr-xr-x  2 hf1    hf1    4096 3月  22 10:38 hf1drwxr-xr-x  2 hf3    hf3    4096 3月  22 10:59 hf3drwxr-xr-x 18 hufeng hufeng 4096 3月  22 08:50 hufeng

1.4 修改用户信息usermod

root@hf-vm:/home# usermod -h用法:usermod [选项] 登录选项:  -c, --comment 注释            GECOS 字段的新值  -d, --home HOME_DIR           用户的新主目录  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态  -g, --gid GROUP               强制使用 GROUP 为新主组  -G, --groups GROUPS           新的附加组列表 GROUPS  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,                                并不从其它组中删除此用户  -h, --help                    显示此帮助信息并推出  -l, --login LOGIN             新的登录名称  -L, --lock                    锁定用户帐号  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)  -o, --non-unique              允许使用重复的(非唯一的) UID  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码  -R, --root CHROOT_DIR         chroot 到的目录  -s, --shell SHELL             该用户帐号的新登录 shell  -u, --uid UID                 用户帐号的新 UID  -U, --unlock                  解锁用户帐号  -v, --add-subuids FIRST-LAST  add range of subordinate uids  -V, --del-subuids FIRST-LAST  remove range of subordinate uids  -w, --add-subgids FIRST-LAST  add range of subordinate gids  -W, --del-subgids FIRST-LAST  remove range of subordinate gids  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射root@hf-vm:/home# usermod -l 'test' hf3root@hf-vm:/home# finger hf3finger: hf3: no such user.root@hf-vm:/home# finger testLogin: test                             Name:Directory: /home/hf3                    Shell: /bin/bashNever logged in.No mail.No Plan.

  修改用户的登入shell还可以使用 chsh (change shell)命令。其用法为 chsh  USERNAME

  可以用pwck来检查用户账号的完整性。

1.5 修改用户密码 passwd

root@hf-vm:/home# passwd -h用法:passwd [选项] [登录]选项:  -a, --all                     报告所有帐户的密码状态  -d, --delete                  删除指定帐户的密码  -e, --expire                  强制使指定帐户的密码过期  -h, --help                    显示此帮助信息并推出  -k, --keep-tokens             仅在过期后修改密码  -i, --inactive INACTIVE       密码过期后设置密码不活动为 INACTIVE  -l, --lock                    锁定指定的帐户  -n, --mindays MIN_DAYS        设置到下次修改密码所须等待的最短天数                                为 MIN_DAYS  -q, --quiet                   安静模式  -r, --repository REPOSITORY   在 REPOSITORY 库中改变密码  -R, --root CHROOT_DIR         chroot 到的目录  -S, --status                  报告指定帐户密码的状态  -u, --unlock                  解锁被指定帐户  -w, --warndays WARN_DAYS      设置过期警告天数为 WARN_DAYS  -x, --maxdays MAX_DAYS        设置到下次修改密码所须等待的最多天数                                为 MAX_DAYSroot@hf-vm:/home# passwd test输入新的 UNIX 密码:重新输入新的 UNIX 密码:passwd:已成功更新密码

2,组

2.1,创建组groupadd

root@hf-vm:/home# groupadd -h用法:groupadd [选项] 组选项:  -f, --force           如果组已经存在则成功退出                        并且如果 GID 已经存在则取消 -g  -g, --gid GID                 为新组使用 GID  -h, --help                    显示此帮助信息并推出  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值  -o, --non-unique              允许创建有重复 GID 的组  -p, --password PASSWORD       为新组使用此加密过的密码  -r, --system                  创建一个系统账户  -R, --root CHROOT_DIR         chroot 到的目录      --extrausers              Use the extra users databaseroot@hf-vm:/home# groupadd testroot@hf-vm:/home# cat /etc/grouptest:x:1005:

2.2 组的信息修改groupmod

root@hf-vm:/home# groupmod -h用法:groupmod [选项] 组选项:  -g, --gid GID                 将组 ID 改为 GID  -h, --help                    显示此帮助信息并推出  -n, --new-name NEW_GROUP      改名为 NEW_GROUP  -o, --non-unique              允许使用重复的 GID  -p, --password PASSWORD       将密码更改为(加密过的) PASSWORD  -R, --root CHROOT_DIR         chroot 到的目录root@hf-vm:/home# groupmod -n 'test1' testroot@hf-vm:/home# cat /etc/grouptest1:x:1005:

2.3,组密码修改 gpasswd

root@hf-vm:/home# gpasswd -h用法:gpasswd [选项] 组选项:  -a, --add USER                向组 GROUP 中添加用户 USER  -d, --delete USER             从组 GROUP 中添加或删除用户  -h, --help                    显示此帮助信息并推出  -Q, --root CHROOT_DIR         要 chroot 进的目录  -r, --remove-password         移除组 GROUP 的密码  -R, --restrict                向其成员限制访问组 GROUP  -M, --members USER,...        设置组 GROUP 的成员列表  -A, --administrators ADMIN,...        设置组的管理员列表除非使用 -A 或 -M 选项,不能结合使用这些选项。root@hf-vm:/home# gpasswd -a test test1root@hf-vm:/home# cat /etc/grouptest1:x:1005:testroot@hf-vm:/home# gpasswd -d test test1test1:x:1005:

二,文件权限

首先看个实例

-rw-rw-r--  1 hf1    hf1       0 3月  22 08:54 file01drwxrwxrwt  2 root   root   4096 3月  22 08:49 .font-unix/

前面10个字符确定文件权限:

第一个字符代表文件类型: - 文件 , d 目录,l 链接

其余字符3个一组,分别代表 u(用户) , g(组) , o(其它) 。每组单个字符有:r (读) , w(写),x(可执行)。

例如  drwxrwxrwt   2  root root 4096  3月  22  08:49 .font-unix/ :

  第一个符d 代表目录

  第一组rwx代表所属用户root具有读写可执行权限

  第二组rwx代表所属组root具有读写可执行权限

  第三组rwt代表其它用户具有读写,t 代表粘着位只对文件夹起作用。代表该文件夹下只有root可以删除所有文件,其它用户只能删除自己创建的文件。

  2 代表连接的文件数

  root 代表用户

  root 代表用户组

  4096 代表文件大小

  3月22 08:49 代表创建时间

  .font-unix/文件名

  上述权限也可以用数字表示:r=4,w=2,x=1。因此rwx=7

2.1,改变文件权限的命令chmod

  格式语法: chmod [u|g|o|a][+|-|=][r|w|x] 文件名

  例如  -rw-rw-r-- 1 hf1 hf1 0 3月 22 08:54 file01 :

  修改用户以及组权限为只读 chmod u-w,g-w file01

2.2,改变所有者命令chown

   改变用户组命令chgrp

2.3,SetUID、SetGID、Sticky BIT介绍

  2.3.1,SetUID

    只有可以执行的二进制程序才能设定SetUID权限,并且命令执行者要对该程序拥有x(执行)权限。

    例如:passwd命令,它是一个可执行文件。s表示这个命令具有root用户的权限。

root@hf-vm:/tmp# ls -l /usr/bin/passwd-rwsr-xr-x 1 root root 59640 1月  25  2018 /usr/bin/passwd

    我们再看/etc/shadow、/etc/passwd文件的权限以及useradd的权限。

-rw-r--r-- 1 root root 2538 3月  22 11:15 /etc/passwd-rw-r----- 1 root shadow 1640 3月  22 11:19 /etc/shadowroot@hf-vm:/tmp# ls -l /usr/sbin/useradd-rwxr-xr-x 1 root root 126240 1月 25 2018 /usr/sbin/useradd

    由以上可以看出,普通用户具有调用passwd命令修改密码的权限。然后passwd是以root用户去执行的,因此具有修改/etc/passwd文件的权限。但是普通用户没有添加用户的权限。

    设置与取消setuid的方法:

      在所有者权限之前加上 4 代表SetUID,设定方法为:chmod 4755 文件名,相应的取消 SetUID 方法为:chmod 755 文件名。

      还有设定方法为: chmod u+s 文件名,相应的取消 SetUID 方法为:chmod u-s 文件名。

  2.3.2,SetGID 

    普通用户必须对一个目录拥有r和x权限,才能进入此目录。对于设定了 SetGID 权限的目录来说,普通用户在此目录中的有效组会变成此目录的所属组,若普通用户对此目录拥有w权限时,在目录中新建的文件的默认所属组是这个目录的所属组。

xx@hf-vm:/tmp$ mkdir testdrwxrwxr-x  2 xx xx 4096 3月  22 16:08 test/xx@hf-vm:/tmp$ chmod g+s test/drwxrwsr-x  2 xx xx 4096 3月  22 16:08 test/xx@hf-vm:/tmp$ chmod 777 test/drwxrwsrwx  2 xx xx 4096 3月  22 16:08 test/xx@hf-vm:/tmp$ su hf1hf1@hf-vm:/tmp/test$ touch t1-rw-rw-r--  1 hf1    xx 0 3月  22 16:17 t1

    设定与取消 SetGID 的方法如下:

    在所有者权限之前加上 2 代表SetGID,设定方法为:chmod 2755 文件名,相应的取消 SetGID 方法为:chmod 755 文件名。 
    还有设定方法为: chmod g+s 文件名,相应的取消 SetGID 方法为:chmod g-s 文件名。
  2.3.3,Sticky BIT

    Sticky BIT 表示的是粘着位,主要是用来避免其他用户对文件的误操作。粘着位目前只对目录有效,普通用户要对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限。如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

drwxrwxrwt  16 root root       4096 3月  22 16:17 tmp/hf1@hf-vm:/$ ls -l tmp/-r--r--r-- 1 hf1    hf1       0 3月  22 08:54 file01drwxrwsrwx 2 xx xx 4096 3月  22 16:17 testhf1@hf-vm:/$ rm -rf /tmp/testrm: 无法删除'/tmp/test': 不允许的操作hf1@hf-vm:/$ rm -rf file01

    设置与取消粘着位 Sticky BIT 权限如下:

    设置粘着位 :chmod 1777 目录名  或  chmod o+t 目录名
    取消粘着位 :chmod 777 目录名  或  chmod o-t 目录名

    

    

 

转载于:https://www.cnblogs.com/hf-china/p/10579642.html

你可能感兴趣的文章
js实现复选框的操作-------Day41
查看>>
数据结构化与保存
查看>>
[SpringBoot] - 配置文件的多种形式及优先级
查看>>
chrome浏览器开发者工具之同步修改至本地
查看>>
debian7 + wheezy + chromium + flashplayer
查看>>
AOP
查看>>
进阶开发——文档,缓存,ip限速
查看>>
vue中子组件需调用父组件通过异步获取的数据
查看>>
uva 11468 - Substring(AC自己主动机+概率)
查看>>
Mysql 数据备份与恢复,用户创建,授权
查看>>
沉思录
查看>>
Angular.js中的$injector服务
查看>>
构建之法读书笔记01
查看>>
linux - lsof 命令最佳实践
查看>>
kafka性能测试
查看>>
现实世界的Windows Azure:h.e.t软件使用Windows Azure削减50%的成本
查看>>
深入.net框架
查看>>
聚合类新闻client产品功能点详情分析
查看>>
js设置定时器
查看>>
数据库除运算
查看>>