欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 04_02 _权限及权限管理 有大用

权限管理:

r: 

w:

x:


三类用户

u: 属主

g: 属组

o: 其它用户



chown: 改变文件属主  (只有管理员才可以改变文件属主)

    chown USERNAME file,........

    -R: recursion 递归 修改目录入其内部文件或子目录的属主

    --reference=/path/to/somefile   file,.......  (不需要 USERNAME)       引用,参考 把file等等文件的属主修改为与reference引用的文件一样 (事实上是属主和属组同时改的)

    chown USERNAME:GRPNAME  file,......  同时改属主和属组 (USERNAME省掉 直接 :属组 ,此时只改属组)

     chown  -R USERNAME:GRPNAME directory 支持递归修改

    chown USERNAME.GRPNAME  file,......  同时改属主和属组 (USERNAME省掉 直接 .属组 ,此时只改属组)  此时把冒号换成点号


    



     


chgrp:改变文件属组 与chown用法差不多一样 (只有管理员才可以改变文件属主)

    chgrp GRPNAME file,........

     -R: recursion 递归 修改目录入其内部文件或子目录的属组

    --reference=/path/to/somefile   file   引用,参考 把file等等文件的属组修改为与reference引用的文件一样



#man chown

image.png

# tail /etc/passwd

image.png

# ls /tmp -lt | more

image.png

# chown /tmp/hadoop abc

# ls -lt abc

image.png

# ls -lt /tmp |more

image.png

# chown hadoop /tmp/aaaa   (同样,也可目录)

# ls -lt /tmp |more

image.png

# ls -ld /tmp/aaaa |more     (由于是目录 加d选项,否则看到的是目录下的文件)

image.png

# ls -la /tmp/aaaa |more

image.png

# chown -R hadoop /tmp/aaaa/

# ls -ld /tmp/aaaa |more

# ls -la /tmp/aaaa |more

image.png


# ls -lt |more

image.png

# chown --reference=/tmp/abc ccc.txt

# ls -lt |more

image.png

# ls -lt |more

image.png

# chgrp mygroup /tmp/abc

# ls -lt |more

image.png

# chgrp -R mygroup /tmp/aaaa/

# ls -ld /tmp/aaaa |more

image.png

# ls -la /tmp/aaaa |more

image.png


# ls -lt |more

image.png

# chown root:root abc

# ls -l /tmp/abc

image.png

# chown :hadoop abc

# ls -l /tmp/abc

image.png


# ls -l /tmp/ |more

image.png

# chown --reference=aaaa 6379.conf   事实上 --reference 是属主属组一起改的

image.png



chmod: 修改文件的权限  权限模式叫mode

    修改三类用户的权限

    chmod MODE file,....

        -R

        --reference=/path/to/somefile file,......  它也支持 -R


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

    u,g,o,a  a表示所有类别

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

    

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

    u,g,o,a

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



# ls -l /tmp/ |more

image.png

# chmod 750 /tmp/abc

# ls -la /tmp/abc              rwxr-x---

image.png

# chmod 75 /tmp/abc    75 就是 075

# ls -la /tmp/abc

image.png

# chmod 5 /tmp/abc   5 就是 005

# ls -la /tmp/abc

image.png

# ls -la /tmp/ |more

image.png

# chmod --reference=6379.conf abc

# ls -la /tmp/ |more

image.png


# ls -l /tmp |more

image.png

# chmod u=rwx /tmp/abc

# ls -l /tmp/abc 

image.png

# chmod g=7 /tmp/abc

image.png


# chmod g=rw /tmp/abc    当然也可以写成 rw-

# ls -l /tmp/abc

image.png


# chmod o=rx /tmp/abc    当然也可以写成 r-x

# ls -l /tmp/abc

image.png


# chmod g=r,o=r /tmp/abc

# ls -l /tmp/abc

image.png

# chmod go=rw /tmp/abc    g,o 可以合并写

# ls -l /tmp/abc

image.png

# chmod g=rx,o= /tmp/abc

# ls -l /tmp/abc

image.png

三类用户一样的话 就是 a=某某某 或 ugo=某某某


# chmod u-x /tmp/abc

# ls -l /tmp/abc

image.png

# chmod u+x,g-x /tmp/abc

# ls -l /tmp/abc

image.png


# chmod u-x /tmp/abc

# ls -l /tmp/abc

image.png


# chmod a+x /tmp/abc   a其实是可以省略的 变为 +x

# ls -l /tmp/abc

image.png


# chmod -x /tmp/abc     a其实是可以省略的 变为 -x

# ls -l /tmp/abc

image.png


# chmod +x /tmp/abc

# ls -l /tmp/abc

image.png


# chmod u-wx /tmp/abc

# ls -l /tmp/abc

image.png


image.png


练习:

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

# useradd -M openstack


下面几步是验证

# finger openstack   看这个用户的信息

# ls /home  看有没有openstack目录      

# id openstack 看用户和组有没有添加成功  


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

# cp -r /etc/skel /home/openstack


下面几步是验证

# ls -l /home  看看 /home/openstack 目录,属主属组其它,目录权限

# ls -la /home/openstack (可以 ls -l /home/openstack -a )看内部文件 属主属组其它,目录权限


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

# chown -R openstack:openstack /home/openstack/ (chown -R openstack.openstack /home/openstack/)


下面几步是验证

# ls -ld /home/openstack/ 看看 /home/openstack 目录,属主属组是否改过来

# ls -la /home/openstack/  (可以 ls -l /home/openstack -a )看内部文件 属主属组属主属组是否改过来


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

# chmod -R 700 /home/openstack/  这样子不好,改了属主权限

# chmod -R go= /home/openstack   这样子比较好,属主权限不动

# ls -l /home  看看 /home/openstack 目录权限

# ls -la /home/openstack (可以 ls -l /home/openstack -a )看内部文件权限 (原属主权限不动)


# su - openstack  看看进来是不是一切正常

$ exit

image.png



# ls -l /etc/shadow

image.png


虽然它什么权限都没有,但是权限对于管理员是无效的


# ls -l `which passwd`

image.png


 在管理员的情况下

# nano /etc/shadow

是可以编辑这个文件的

image.png


修改文件的方式 建一个用户 hive

手动添加用户live(5000),基本组hive(5000),附加组mygroup

一)

# nano /etc/group

image.png

# nano /etc/passwd

image.png


# date +%s

image.png

# bc  计算器

image.png

quit 退出 

image.png


image.png


# cp -r /etc/skel /home/hive

# chown -R hive.hive /home/hive

# chmod -R go= /home/hive


# ls -ld /home/hive/

# ls -la /home/hive/

image.png

# su - hive  (没有密码管理员可以su过去)

# id

image.png


# passwd hive (管理员passwd 可以改密码)  (它没有密码,管理员也可以改)



# openssl passwd  可以生成密码

image.png


# whatis passwd

image.png

# man sslpasswd

image.png


# openssl passwd -1 -salt '12345678'   这是数字1 不是字母l

image.png

# nano /etc/shadow

image.png


image.png


管理员

# cd /tmp

# touch hellosa  文件默认权限 644

# ls -l hellosa

image.png


# mkdir testdir   目录默认权限 755

# ls -ld testdir/

image.png


普通用户

$ touch test  文件默认权限 664

$ mkdir testdir  目录默认权限 775

$ ls -la

image.png


为了安全文件默认没有执行权限 (linux 内在的安全法则)


umask 遮罩码 反向掩码  第一个0,不用管它

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



666-umask  创建文件的时候 

777-umask  创建目录的时候 

管理员的

# umask

image.png

普通用户的

$ umask

image.png

$ umask 022 设定反向掩码

$ umask

image.png

$ touch hello

$ mkdir hellsa

$ ls -l

image.png

 umask: 023

文件: 666-023=643 文件默认权限 (而文件默认应该没有执行权限,一旦有了就加1即 3+1=4)

目录: 777-023=754 目录默认权限

$ umask 023

$ umask

image.png

$ touch abc

$ mkdir dir

$ ls -lt   发现文件是 644 不是 643 啥意思 因为3具有执行权限

(而文件默认应该没有执行权限,一旦有了就加1即 3+1=4)

image.png


$ umask 027  其它用户没有任何权限

$ umask

image.png

文件 666-027=640  (6-7为0不是-1)

目录 777-027=750

[hive@ebs-22618 ~]$ touch hello1

[hive@ebs-22618 ~]$ mkdir dirhello1

[hive@ebs-22618 ~]$ ls -lt

image.png


退出 (不管是  exit 还是 logout )重新登录系统 普通用户的 umask 仍然变成 0002


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

    登录式shell:

        正常通过某终端登录的shell

        su - USERNAME

        或 su -l USERNAME

 

    非登录式shell:

        su USERNAME

        图形终端下打开命令行窗口

        自动执行的shell脚本


bash的配置文件

全局配置

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

个人配置

    ~/.bash_profile,~/.bashrc


                作用范围小的优先

profile类的文件

    设定环境变量

    运行命令或脚本(用户登录前的准备工作 登录时执行的命令)

bashrc类的文件

    设定本地变量 (它与环境变量的作用域不同)

    定义命令别名


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

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


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

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


# su - hadoop

$ alias cls=clear

$ logout

# su - hadoop

$ cls

image.png

$ nano .bashrc

image.png

$ cls   (只有在下次登录的时候才有生效 因为只有在登录的时候才会读取配置文件)

image.png

$ logout

#  su - hadoop

$ cls (此时有效了)

image.png

$ nano .bash_profile

image.png

$ logout 

# su - hadoop

image.png$ nano $ $ $    $ nano .bash_profile

image.png

$ logout 

# su - hadoop

$ umask

image.png


$ cat /etc/profile

image.png

$ id

image.png



bash: 脚本解释器


$ echo $PATH

image.png


$ logout

# echo $PATH

image.png



# chmod -R og=--- root/  其它用户没有任何权限

普通分类: