|
10、用户权限管理(基本权限及特殊权限SUID)
2021年07月02日 |
|
10.1 基本权限 10.1.1 权限分类 权限分为r, w, x 1、对于文件来说: r:可读,可以使用类似cat等命令查看文件内容; w:可写,可以编辑或删除此文件; x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行; 2、对于目录来说: r: 可以对此目录执行ls以列出内部的所有文件; w: 可以在此目录创建文件; x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息; 3、rwx和数值对照关系 rwx: r–:只读 r-x:读和执行 —:无权限 0 000 —:无权限 1 001 –x: 执行 2 010 -w-: 写 3 011 -wx: 写和执行 4 100 r–: 只读 5 101 r-x: 读和执行 6 110 rw-: 读写 7 111 rwx: 读写执行 755:rwxr-xr-x 4、对应三类用户: u: 属主 g: 属组 o: 其它用户 10.2 特殊权限(passwd中显示s的权限) 10.2.1 特殊权限分类 1、SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者; chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S; 2、SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组; chmod g+s FILE chmod g-s FILE 组develop team,用户 hadoop, hbase, hive 在/tmp/project/文件夹中给其分配SGID权限,则develop team里的所有用户都可以更改删除任何文件 develop 3、Sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件; chmod o+t DIR chmod o-t DIR 4、组合及对应数字 SUID SGID Sticky 000: 001: … 110: 111: chmod 5755 /backup/test(5表示特殊权限) umask 0022 umask 10.3 chown: 改变文件属主(只有管理员可以使用此命令) # chown USERNAME file,…将后面文件的属主改为指定用户 -R: 修改目录及其内部文件的属主 –reference=/path/to/somefile file,…将文件的属主属组更改为和reference对应文件一样 # chgrp GRPNAME file,…更改文件属组为指定的group -R –reference=/path/to/somefile file,… [root@Daniel-R480 tmp]# chown apache hi [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 apache root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# chown –reference=./yum.log ./hi [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 root root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# chown USERNAME:GRPNAME file,… chown USERNAME.GRPNAME file,… [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 root root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# [root@Daniel-R480 tmp]# [root@Daniel-R480 tmp]# chown apache:apache ./hi [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 apache apache 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# chown :root /tmp/hi [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 apache root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# chown –reference=/tmp/yum.log ./hi [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 root root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# 10.4 chmod: 修改文件的权限 1、修改三类用户的权限: chmod MODE file,… -R修改目录及其内部文件的权限 –reference=/path/to/somefile file,… [root@Daniel-R480 tmp]# ll total 12 -rw-r–r– 1 root root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# chmod 777 ./hi [root@Daniel-R480 tmp]# ll total 12 -rwxrwxrwx 1 root root 0 Jun 4 18:30 hi -rwx—— 1 root root 4733 Jan 29 2019 ks-script-5qnQJp -rwx—— 1 root root 836 Jan 29 2019 ks-script-QveTmi -rw——- 1 root root 0 Jan 29 2019 yum.log [root@Daniel-R480 tmp]# 2、修改某类用户或某些类用户权限: u,g,o,a u: 属主 g: 属组 o: 其它用户 chmod 用户类别=MODE file,… 3、修改某类用户的某位或某些位权限: u,g,o,a chmod 用户类别+|-MODE file,… [root@Daniel-R480 ~]# chmod g-r inittab [root@Daniel-R480 ~]# chmod 777 inittab [root@Daniel-R480 ~]# 练习: 1、新建一个没有家目录的用户openstack; # useradd -M openstack 2、复制/etc/skel为/home/openstack; # cp -r /etc/skel /home/openstack 3、改变/home/openstack及其内部文件的属主属组均为openstack; # chown -R openstack:openstack /home/openstack 4、/home/openstack及其内部的文件,属组和其它用户没有任何访问权限 # chmod -R go= /home/openstack chmod -R 700 /home/openstack [root@Daniel-R480 ~]# useradd -M openstack [root@Daniel-R480 ~]# cp -r /etc/skel /home/openstack [root@Daniel-R480 ~]# chown -R openstack:openstack /home/openstack [root@Daniel-R480 ~]# chmod -R go= /home/openstack [root@Daniel-R480 ~]# ll /home/openstack/ total 0 su – openstack(测试创建是否正常) 实验:手动添加用户hive, 基本组为hive (5000),附加组为mygroup 无密码无法登陆,但是可以用管理员账户su过去 opensll:创建密码的密文的命令 [root@Daniel-R480 ~]# groupadd -g 5000 hive [root@Daniel-R480 ~]# groupadd mygroup [root@Daniel-R480 ~]# useradd -g hive -G mygroup -M hive [root@Daniel-R480 ~]# su – hive su: warning: cannot change directory to /home/hive: No such file or directory -bash-4.2$ 10.5 umask umask:遮罩码 666-umask:创建文件的默认权限 777-umask:创建文件夹的默认权限 [hive@Daniel-R480 ~]$ umask 0002 [hive@Daniel-R480 ~]$ umask 0022 [hive@Daniel-R480 ~]$ touch hellosa [hive@Daniel-R480 ~]$ ll total 0 -rw-rw-r– 1 hive hive 0 Jun 7 09:50 hellosa [hive@Daniel-R480 ~]$ 文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1; 例:umask: 023 文件权限:666-023=643 X 目录权限:777-023=754 [hive@Daniel-R480 ~]$ [hive@Daniel-R480 ~]$ umask 023 [hive@Daniel-R480 ~]$ touch hellosa [hiv1e@Daniel-R480 ~]$ mkdir test [hive@Daniel-R480 ~]$ ll total 0 -rw-r–r– 1 hive hive 0 Jun 7 09:52 hellosa drwxr-xr– 1 hive hive 4096 Jun 7 09:52 test [hive@Daniel-R480 ~]$ 用户重新登陆以后umask会重新配置,恢复默认 10.6 SHELL 站在用户登录的角度来说,SHELL的类型: 1、登录式shell:(完全切换) 正常通过某终端登录 su – USERNAME su -l USERNAME 2、非登录式shell:(半切换) su USERNAME 图形终端下打开命令窗口 自动执行的shell脚本 10.7 bash的配置文件: 1、全局配置文件 /etc/profile, /etc/profile.d/*.sh, /etc/bashrc 2、个人配置文件 ~/.bash_profile, ~/.bashrc 用户登录时优先使用个人配置文件 3、profile类的文件: 设定环境变量 运行命令或脚本 4、bashrc类的文件: 设定本地变量 定义命令别名 5、shell如何读取配置文件? 登录式 /etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc 非登录式 ~/.bashrc –> /etc/bashrc –> /etc/profile.d/*.sh 设置用户登录时显示hello </p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]# vim ./.bash_profile</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]# su - root</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> Last login: Mon Jun 7 10:03:01 CST 2021 on tty1</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> hello</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> [root@Daniel-R480 ~]#</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># .bash_profile</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># Get the aliases and functions</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>if [ -f ~/.bashrc ]; then</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> . ~/.bashrc</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>fi</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># User specific environment and startup programs</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>PATH=$PATH:$HOME/bin</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>export PATH</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>echo hello</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> bash: 脚本解释器 |