0
点赞
收藏
分享

微信扫一扫

04_02_权限及权限管理

春意暖洋洋 2024-11-03 阅读 21

04_02_权限及权限管理


权限管理:

r:对文件可使用cat more less等命令查看其内容。对于目录,可使用ls命令,单不能切换进此目录,也不能使用ls -l

w:对于文件,可编辑。对于目录可创建文件

x:对于文件,可执行。对于目录,可用使用cd,ls -l查看详细内容


三类用户:

u:属主

g:属组

o:其他用户


如何改变三类用户的相关权限


chown:改变属主(只有管理员可用使用此命令),对于目录一样生效

#chown USERNAME file,...

例:chown hadoop /tmp/abc

chown hadoop /tmp/hi (hi为目录)使用ls -ld /tmp/hi查看(因为是目录,要加d选项,否则看到的是目录中的文件)

-R:修改目录及其内部文件的属主

--reference=/path/to/somefile file,...:参考,将后面的文件属主属组(一起改)改为跟前面那个文件一样


chown  USERNAME:GRPNAME file,...

chown  USERNAME.GRPNAME file,... 两命令相同。同时更改属主属组,不加USERNAME可以只改变属组。

    可使用reference,例:chown --reference

chgrp:改变属组(只有管理员可用使用此命令),用法和chown一样



chmod:修改文件权限

修改三类用户权限:

chmod MODE file,...(MODE为十进制数字,如644,75=075)

-R:

--reference=/path/to/somefile file,...:

例:chmod 750(rwxr-x---) /tmp/abc

 


修改某类用户或某些类用户权限:

u,g,o,a

chmod 用户类别=MODE file,...

例:chmod u=rwx /tmp/abc 属主改为读写执行(u=7这样写不行)

chmod o=rx /tmp/abc 其他用户改为读和执行

chmod o=rx,g=rx /tmp/abc 等同于chmod go=rx /tmp/abc  

chmod g=rx,o= /tmp/abc


修改某类用户的某位或某些位权限:

u,g,o,a

chmod 用户类别=|-MODE file,...

例:chmod u+x,g-x /tmp/abc:增加属主执行权限,去掉属组执行权限

chmod a+wx /tmp/abc:三类用户同时改,a可以省略



练习:

1、新建一个没有家目录的用户openstack

#useradd -M openstack  验证:finger openstack,ls /home,id openstack

2、复制/etc/skel为/home/openstack

#cp -r /etc/skel /home/openstack 验证:ls -l /home,ls -l /home/openstack -a  

3、改变/home/openstack及其内部文件的属主属组均为openstack

#chown -R openstack:openstack /home/openstack 验证:ls -la /home/openstack

4、/home/openstack及其内部文件,属组和其它用户没有任何访问权限

#chmod -R go= /home/openstack 验证:ls -ld /home/openstack,ls -la /home/openstack

注意:每做一步,及时验证(全部忘记加选项)最后验证:su - openstack


权限限制对管理员无用

ls -l /etc/passwd r--------为什么可以改密码

权限位s


手动添加一个用户hive,基本组为hive(id:5000),附加组mygroup:

tail /etc/group

nano /etc/group

添加一行:hive:x:5000

mygroup组后加hive:mygroup:x:504:user3,hive

tail /etc/passwd

nano /etc/passwd  

添加一行:hive:x:5000:5000:Hive:/home/hive:/bin/bash

tail /etc/shadow

nano /etc/shadow

添加一行:hive:!!:15765:0:99999:7:::


15765:是上次修改密码时间,是当天,可用bc(计算器)计算

#date +%s(到今天为止的秒数)

#bc  

#秒数/86400

#quit退出


复制家目录:

cp -r /etc/skel /home/hive

chown -R hive.hive /home/hive/

chown -R go= /home/hive

验证一下:ls -ld /home/hive

  ls -la /home/hive

  su - hive

  id

无密码可以使用管理员su过去,但是不能登录。要想登录需要生成一个密码

可用passwd

纯手动:可使用openssl passwd输入密码后可生成一个密码串,但是没有加盐

whatis passwd

man sslpasswd

sslpasswd  

-1:指定MD5算法

-salt:指定杂质

openssl passwd -1 -salt '12345678'

输入密码后生成字符串复制粘贴在/etc/shadow下两个叹号的位置

登录测试,用户创建完成


cd /tmp

touch hellosa

ls -l hellosa 默认权限644

mkdir testdir

ls -ld testdir 默认权限755


切换做一个普通用户(hive):

touch hellosa

ls -l hellosa 默认权限665

mkdir testdir

ls -ld testdir 默认权限775

   

umask:遮罩码,反向掩码

umask 查看,管理员下是022,普通用户下是002

创建文件时 666-umask  

创建目录时 777-umask

#umask 显示当前umask

#umask 022 umask改为022

文件默认不能具有执行权限,如果算得的结果有执行权限,则将其权限加1

例子:umask 023

文件:666-023=643 验证为644.因为文件默认不能有执行权限,如果确有就加1

目录:777-023=754 验证为754


不想让其他用户有任何权限则可用将umask改为027.用户重新登录后,又变为002


站在用户的角度来说,SHELL的类型:

登录式shell

正常通过某终端登录

su - USERNAME 完全切换

su -l USERNAME

 

非登录式shell:

su USERNAME 半切换。不读取环境配置文件/etc/profile和~/.bash_profile

图形终端下打开命令窗口

自动执行的shell脚本

 

bash的配置文件:

全局配置:对所有用户生效。

/etc/profile,/etc/profile.d/*.sh,/etc/bashrc

个人配置:只对个人用户生效

~/.bash_profile,~/.bashrc

 

profile类的文件:

设定环境变量:改/etc/profile文件,或者在/etc/profile.d/写一个.sh文件。个人配置在~/.bash_profile文件中配置。如果全局与个人冲突,以个人配置为主

运行命令或脚本

 

bashrc类的文件:

设定本地变量

定义命令别名

 

登录式shell如何读取配置文件:

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc


非登录式shell如何配置文件:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh  

 

让命令别名在个人用户下一直生效:

nano .bashrc 编辑自己家目录下的.bashrc文件

增加一行alias cls='clear'重新登录生效


登录hive用户时打招呼报时间:

nano .bash_profile

增加一行:

echo “Hello,hive.Welcome to our system.It is 'date'."

logout重新登录生效

也可以在此文件中定义umask


bash:脚本解释器

 



举报

相关推荐

0 条评论