为什么80%的码农都做不了架构师?>>>
大年初四,今天下午即将回深圳,凌晨接姑娘。刚刚发呆,想了想自己即将面对的学习任务,感觉还是很多,任重而道远。往往都是即将面对不可避免的现实的时候,我们才开始临时抱佛脚。平时被逼着,总感觉内心层面过意不去。其实这都是懒惰。不过反过来想了下,临时抱了佛脚,那也是汲取知识的重要指标,总好过没抱。其实,经过这么多年的在外征战学习,反倒觉得,这种方式的汲取是最有效率与提高最迅猛的。不多说了,再次理了下路线:
1、总结完shell编程;
2、将手中那本设计模式看完;
3、将spring实战看完;
4、将java8实战看完;
5、从新梳理java,将TIJ没总结的章节完结,附带java8;
6、结合《算法》与《编程珠玑》来学习算法;
7、学习《JVM虚拟机》;
8、学习Java多线程最新买的那本书;
9、学习mysql一本书。
另外,其实还要完善自己的简历,初步定下来使用TeX来书写,使用一个简历模版。TeX这东西也是有一定的学习成本,这个再说把。另外初步订到五月初跳,那就是说还有三个月的学习总结,如此一看还是比较紧张的。简历的投放就放到四月开始吧。
今天来总结一个章节,就是文件权限管理这个方面的。这个方面我曾经的涉猎,仅仅是到了使用chmod这个命令修改文件权限,但是其实远远不止这么少。其中比较重要,易忘记的,就是文件权限的几个重要文件,和文件权限的高级权限:就是s这么个权限。后者我也是直到去年工作之后,在翻鸟哥的那本书linux书的时候,才知道的,感觉挺神秘。
1、文件管理的几个比较重要的文件:
/etc/passwd:
举例:root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
顺序解说每个字段:
登陆用户名
用户密码
用户账户的UID
用户帐户的GID
用户帐户的文本描述(称为备注字段)
用户HOME目录的位置
用户的默认shell
UID分配:系统账户是在0~500,用户创建的从500往上(并不使用所有的发行版本)
密码问题:加过密的密码都存放在/etc/shadow文件里面,防止破解
/etc/shadow:
举例:rich:$1$.FfcK0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7:::
顺序解说每个字段:
与/etc/passwd文件中的登录名对应的登录名
加密过的密码
自1970年1月1号(上次修改密码的日期)到当天的天数
多少天后才能更改密码
多少天后必须更改密码
密码过期前提前多少天提醒用户更改密码
密码过期后多少天禁用用户账户
用户账户被禁用的日期,用自1970年1月1号到当天的天数表示
预留字段,给将来使用
2、useradd命令来添加用户
useradd -D:这个命令参数可以查看创建用户的默认选项
举例:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKELL=/etc/skel
CREATE_MALL_SPOOL=yes
这几个字段的意义:
新用户会被添加到GID为100的公共组
新用户的HOME目录将会位于/home/loginname
新用户账户密码在过期后不会被禁用
新用户找那个户未被设置为某个日期后就过期
新用户账户将bash shell作为默认shell
系统会将/etc/skel目录下的内容复制到用户的HOME目录下面(这个很有意思)
系统为该用户账户在mail目录下创建一个用于接收邮件的文件
useradd -m test:默认的情况下,创建用户是不会创建home目录下面的目录的,可是加上了m这个参数之后,就会创建,并且目录里面的内容会从/etc/skel目录下面复制过去
其他重要参数:
-g 制定用户登陆组的GID或组名
-r 创建系统账户
-p 为用户长湖指定默认密码
-s 指定默认的登录shell
-u 指定一个唯一的UID
更改使用-D参数列出来的创建用户的默认值:(必须要加上-D参数)
-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_data 更改默认的新账户的过期日期
-f inactive 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell
3、userdel删除用户:-r参数是可以删除home下面创建的用户目录
4、usermod修改用户:
-c 用来修改备注字段
-e 用来修改过期日期
-g 用来修改默认的登陆组
-l 用来修改用户账户的登录名
-L 用来锁定账户,这样用户就无法登录
-p 用来修改账户的密码
-U 要你过来解除锁定,解除之后用户就能登录了
5、passwd修改用户密码的专有命令;chpasswd用来大规模修改密码
6、/etc/group文件:主要记录Linux上面用户组的信息
举例:
root:x:0:root
bin:x:1:root.bin.daemon
顺序说明:
组名
组密码
GID
属于该组的用户列表
创建组:groupadd shared
修改用户组信息:usermod -G shared test
修改组:groupmode -n sharing shared
7、文件最开始字母表达文件类型的种类:
- 代表文件
d 代表目录
l 代表链接
c 代表字符型设备
b 代表块设备
n 代表网络设备
8、文件默认权限设置:umask
这个命令还是有点麻烦,例如这个命令输入之后显示的是0022这样的数字,并不是表示创建文件之后的权限是022(第一位先不看),而是文件的全权限值(666),减去这个值(022),才是文件创建之后默认的权限
9、使用chmod命令修改文件权限
格式:[ugoa...][+-=][rwxXstugo...]
u代表用户;g代表组;o代表其他;a代表上述所有
+代表增加一个权限;-代表减去一个权限;=代表设置成一个权限
X:如果对象是目录或者它已有执行权限,赋予执行权限
s:运行时重新设置UID或GID
t:保留文件或目录
u:将权限设置为跟属主一样
g:将权限设置为跟属组一样
o:将权限设置为跟其他用户一样
10、改变所属关系:
改变文件属主:chown;举例:chown dan newfile,或者直接修改属组:chown dan.shared newfile
注意:只有root用户能够改变文件的属主,任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员
11、可以使用chgrp来直接改变属组:chgrp shared newfile
12、Linux为每个文件和目录存储了3个额外的信息位:
设置用户的ID(SUID):当未见被用户使用时,程序会以文件属主的权限运行
设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认的属组
粘着位:进程结束后文件还会在内存中
p.s:这个东西还有很多可扒的,要回去看看鸟哥