您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
马哥Linux运维学习笔记-权限及权限管理(bc计算器与密码生成及环境变量方面)
发布时间:2018-04-30 10:13:46编辑:雪饮阅读()
权限管理:
r:
对于文件:可读
对于目录:可以使用ls(可读),但不可以进入该目录
w:
对于文件:可编辑、可删除
对于目录:可在该目录创建文件
x:
对于文件:可执行
对于目录:可以cd(进入目录)
chown:
用于修改文件或目录属主
如
chown userName file(多个文件用空格分隔)
属主和属组一起改:
这里参数userName也可以用userName:groupName或userName.groupName格式来替换,这样则同时修改属主和属组了。
只改属组:
则userName用:groupName替换
userName字段中的冒号还可以替换为"."
如
chown root.root 1.txt
-R:该参数在目录中有效,若没有改参数则只会改变目录本身所属主,而使用该参数则可以递归修改到该目录下所有文件或子目录的属主。
--reference:该选项需要一个选项值,选项值可以是文件或目录,意思是将该选项所对应的文件或目录的权限参考chown的参数file的所属主关系
如:
chown --reference=/tmp/abc /tmp/test
这里将/tmp/test目录的所属主修改的和/tmp/abc目录的一模一样
chgrp:
用于修改文件或目录属组
用法和chown一样
ls -ld
ls的-d参数用于仅显示目录名,而不显示目录下的内容。
显示符号链接文件本身,而不显示其所指向的目录列表;
ls命令可以没有参数,则默认以当前目录为参数
chmod:
用户修改文件权限
如chmod 777 1.txt
权限参数为3位8进制数,若不足3位数则默认向前补0,如
chmod 7 1.txt等效于 chmod 007 1.txt
chmod 75 1.txt 等效于chmod 075 1.txt
-R:递归
--reference:参考文件
chmod还可以单独修改某一类用户的权限:
u:属主
g:属组
o:其它
a:所有
如:
chmod u=rwx 1.txt
将1.txt对于所属主读写执行的权限
同时改多类,则用逗号分隔,如
chmod u=rwx,g=rw 1.txt
如果某两类权限则可以合并,如
chmod uo=rwx 1.txt
如果某类用户直接不给权限,则可以赋值为空,如
chmod uo= 1.txt
chmod也可以对某类用户的某个权限单独修改(增加或删除)
增加权限用加号,删除权限用减号
如
chmod u-x /tmp/abc
这里将/tmp/abc文件的所属主的执行权限删除了
同时改多类用户,则用逗号分隔
若不分,用户类型,进行统一修改则直接用权限作为参数,如
chmod -x /tmp/abc
这里将/tmp/abc文件的执行权限删除了,不分用户类别
同时增加或减少多个权限,可以合并,如
chmod -wx /tmp/abc
特殊权限位
系统中的/etc/shadow文件是对于ugo都没有任何权限的,可是普通用户也可以通过passwd
来修改密码,那么密码是如何存储的呢。
这就涉及到了一个特殊权限位,通过which找到passwd命令的路径为/bin/passwd
然后查看其属主权限位rws,这里有一个特殊权限位“s”,就是他实现了普通用户能够修改密码。
bc
bc是一个计算器,使用该命令后会进入bc的命令行,然后直接输入计算表达式后回车即可得到计算结果。
输入quit可以退出bc计算器
做除法的时候若除不尽,则直接取整,而不是四舍五入取整
若要保留小数,则可以在其命令行表达式之前先运行scale命令,如
scale=2
表示保留2位小数
shadow
在/etc/shadow文件中密码最短使用期限若为0表示不限定,密码最长使用期限若为99999也表示不限定
该文件中密码字段为两个感叹号的代表密码是空
空密码的安全机制
空密码的用户不允许直接登录,但是可以su
openssl passwd
该命令用于生成密码的加密串
该命令运行后,需要你输入你的密码,最后会给你生成一个根据你的密码进行加密了的字符串。
-1:该参数用md5基于bsd的密钥算法
-salt:用于给你的密码加盐
如:
openssl passwd -1 -salt 'xy220807'
该命令运行后,需要你输入你的密码,最后会生成一个以“xy220807”为盐并根据你的密码进行加密了的字符串。
然后最终生成的这字符串可以手动给用户设置密码于/etc/shadow文件中
su --l
su的--参数说明
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
su的两种切换方式
su - username:完全切换
su username:半切换
bash的配置文件
全局配置:全局配置文件对所有用户都生效
/etc/profile
/etc/profile.d/*.sh即/etc/profile.d/目录下所有.sh后缀的文件
/etc/bashrc
个人配置文件:
~/.bash_profile
~/.bashrc
profile类的文件:
(1)用于设定环境变量
比如要设置一个对所有用户都生效的环境变量可以在
/etc/profile中设置,也可以在/etc/profile.d/下面随便建立一个.sh的文件然后在该文件 中定义
同理,要是只对个别用户生效,则在~/.bash_profile里面进行配置。
如果全局设定了环境变量,个人也设置了环境变量,则以个人调用优先。
(2)运行命令或脚本
例如全局配置一个运行脚本,当用户登录的时候就运行该脚本给用户一个欢迎信息,或 者个别用户单独配置运行脚本
bashrc类的文件:
(1)设定本地变量
(2)定义命令别名
站在用户登录的角度来说,shell的类型:
登录式shell:
正常通过某终端登录
su - username
su --l username
非登录式shell:
su username
图形终端下打开命令窗口
自动执行的shell脚本
shell对配置文件的读取
登录式shell的读取顺序是:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
非登录式shell的读取顺序是:
~/.bashrc
/etc/basrc
/etc/profile.d/*.sh
可见非登录式shell不读取:
/etc/profile
~/.bash_profile
利用shell对配置文件加载的原理,实现一个登录提示信息
在~/.bash_profile文件中添加如:
echo hello,it is `date`
alias
alias可以使得命令别名
alias cls=clear
这里将常用的清屏命令clear别名为cls,然后我们直接使用cls命令就可以清屏了。
但是如果我们另外开一个终端登录相同的用户,发现cls命令又不能使用了。
这是因为没有实现bash跨shell的原因,根据shell对配置文件的读取,以及各配置文件的功能得知无论是登录式shell还是非登录式shell都会读取~/.bashrc,而该文件又有命令别名的作用,那么我们只需要在该文件中添加我们的别名即可。然后logout下次登录就会生效。
umask
umask是遮罩码,又叫反向掩码
umask命令运行后可以查看当前用户的umask,输出值是一个四位的纯数字,我们只需要看后3位即可。
umask也可以自己设置,设置传参也是后3位,如
umask 022
umask只能设置为3位的int数字,且每位不得大于7
umask只能临时设置,下次用户重新登录进来umask就恢复默认了。
可在~/.bash_profile文件中声明,则每次登录都会生效。
为什么默认情况下root的umask是022,而普通用户的umask是002,?
这是因为shell所读取的全局配置文件/etc/profile中有脚本这样配置的。
文件与目录的默认权限
root用户:
文件在创建后,默认是644权限
目录在创建后,默认是755权限
普通用户:
文件在创建后,默认是664权限
目录在创建后,默认是775权限
这是为什么呢?
实际上创建文件或目录遵循以下规则:
按位减法:
这里的减法计算是按位减,而不是自然数减,即百位十位个位对应umask的百位十位个位进行减的,若某位差值为负数则按0计算。
创建文件:
666-umask(取后3位)
但由于文件默认不能有执行权限,如果计算出来类似643,则将权限整体加1即644
创建目录:777-umask(取后3位)
关键字词:linux,权限,bc,密码