Linux学习 文件系统、用户及权限(二)

Linux学习 文件系统、用户及权限(二)

文件系统

FHS:
Filesystem Hierarchy Standard
	/bin:所有用户可用的基本命令程序文件;
	/sbin:供系统管理使用的工具程序;
	/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
	/dev:存储特殊文件或设备文件;
		设备有两种类型:字符设备(线性设备)、块设备(随机设备)/etc:系统程序的配置文件,只能为静态;
	/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME/root:管理员的家目录;可选;
	/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
		libc.so.*:动态链接的C库;
		ld*:运行时链接器/加载器;
		modules:用于存储内核模块的目录;
	/lib64:64位系统特有的存放64位共享库的路径;
	/media:便携式设备挂载点,cdrom, floppy等;
	/mnt:其它文件系统的临时挂载点;
	/opt:附加应用程序的安装位置;可选路径;
	/srv:当前主机为服务提供的数据;
	/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
	/usr:usr Hierarchy,全局共享的只读数据路径;
		bin, sbin
		lib, lib64
		include:C程序头文件;
		share:命令手册页和自带文档等架构特有的文件的存储位置
		local:另一个层级目录;
		X11R6X-Window程序的安装位置
		src:程序源码文件的存储位置
	/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
	/var/var Hierarchy,存储常发生变化的数据的目录;
		cache	Application cache data
		lib		Variable state information
		local	Variable data for /usr/local
		lock	Lock files
		log		Log files and directories
		opt		Variable data for /opt
		run		Data relevant to running processes
		spool	Application spool data
		tmp		Temporary files preserved between system reboots	

	/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
	/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;

文件类型

-:常规文件;即f;
d: directory,目录文件;
b: block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备文件,支持以“character”为单位进行线性访问
	major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
	minor number:次设备号,用于标识同一类型中的不同的设备;
		8位二进制:0-255
l:symbolic link,符号链接文件;
p: pipe,命名管道;
s: socket,套接字文件;

用户及用户组

用户类别:
	管理员
	普通用户
		系统用户
		登录用户
			系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;

用户标识:UserID, UID
16bits二进制数字:0-65535
	管理员:0
	普通用户:1-65635
		系统用户:1-499(CentOS6), 1-999(CentOS7)
		登录用户:500-60000(CentOS6), 1000-60000(CentOS7)

		名称解析:名称转换
			Username <--> UID
			根据名称解析库进行:/etc/passwd

组:
	组类别1:
		管理员组
		普通用户组
			系统组
			登录组

	组标识:GroupID, GID
		管理员组:0
		普通用户组:1-65635
			系统用户组:1-499(CentOS6), 1-999(CentOS7)
			登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)	

	名称解析:groupname <--> gid
		解析库:/etc/group	

	组类别2:
		用户的基本组
		用户的附加组

	组类别3:
		私有组:组名同用户名,且只包含一个用户;
		公共组:组内包含了多个用户;

加密算法:
	对称加密:加密和解密使用同一个密码;
	非对称加密:加密和解密使用的一对儿密钥;
		密钥对儿:
			公钥:public key
			私钥: private key
	单向加密:只能加密,不能解密;提取数据特征码;
		算法:
			md5: message digest, 128bits
			sha:secure hash algorithm, 160bits
			sha224
			sha256
			sha384
			sha512

		在计算之时加salt,添加的随机数;

	/etc/passwd:用户的信息库
			name:password:UID:GID:GECOS:directory:shell

			name: 用户名
			password:可以是加密的密码,也可是占位符x;
			UID:
			GID:用户所属的主组的ID号;
			GECOS:注释信息
			directory:用户的家目录;
			shell:用户的默认shell,登录时默认shell程序;

	/etc/shadow:用户密码
			用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

	/etc/group:组的信息库
			group_name:password:GID:user_list

				user_list:该组的用户成员;以此组为附加组的用户的用户列表;

用户和用户组相关命令

groupadd命令:添加组
	groupadd [选项] group_name

		-g GID:指定GID;默认是上一个组的GID+1;
		-r: 创建系统组;

groupmod命令:修改组属性
	groupmod [选项] GROUP
		-g GID:修改GID;
		-n new_name:修改组名;

groupdel命令:删除组
	groupdel [选项] GROUP
	
useradd命令:创建用户
		useradd [选项] 登录名
			-u, --uid UID:指定UID;
			-g, --gid GROUP:指定基本组ID,此组得事先存在;
			-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
			-c, --comment COMMENT:指明注释信息;
			-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
			-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
			-r, --system:创建系统用户;

		注意:创建用户时的诸多默认设定配置文件为/etc/login.defs		

		useradd -D:显示创建用户的默认配置;
		useradd -D 选项: 修改默认选项的值;
			修改的结果保存于/etc/default/useradd文件中;
			
usermod命令:修改用户属性
	usermod [选项] 登录
		-u, --uid UID:修改用户的ID为此处指定的新UID;
		-g, --gid GROUP:修改用户所属的基本组;
		-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
		-a, --append:与-G一同使用,用于为用户追加新的附加组;
		-c, --comment COMMENT:修改注释信息;
		-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
		-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
		-l, --login NEW_LOGIN:修改用户名;
		-s, --shell SHELL:修改用户的默认shell;

		-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
		-U, --unlock:解锁用户的密码;
		
userdel命令:删除用户
	userdel [选项] 登录
		-r:删除用户时一并删除其家目录;
		
passwd命令:
	passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

	(1) passwd:修改用户自己的密码;
	(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;

		-l, -u:锁定和解锁用户;
		-d:清除用户密码串;
		-e DATE: 过期期限,日期;
		-i DAYS:非活动期限;
		-n DAYS:密码的最短使用期限;
		-x DAYS:密码的最长使用期限;
		-w DAYS:警告期限;

		--stdin:
			echo "PASSWORD" | passwd --stdin USERNAME(改密)
			
gpasswd命令:
	组密码文件:/etc/gshadow

	gpasswd [选项] group
		-a USERNAME:向组中添加用户
		-d USERNAME:从组中移除用户

newgrp命令:临时切换指定的组为基本组;
		newgrp [-] [group]
			-: 会模拟用户重新登录以实现重新初始化其工作环境;
			
id命令:显示用户的真和有效ID; 
		id [OPTION]... [USER]
			-u: 仅显示有效的UID;
			-g: 仅显示用户的基本组ID; 
			-G:仅显示用户所属的所有组的ID;
			-n: 显示名字而非ID;

su命令:switch user
	登录式切换:会通过读取目标用户的配置文件来重新初始化
		su - USERNAME
		su -l USERNAME
	非登录式切换:不会读取目标用户的配置文件进行初始化
		su USERNAME

	注意:管理员可无密码切换至其它任何用户;

	-c 'COMMAND':仅以指定用户的身份运行此处指定的命令;
	
	
权限管理:
	ls -l 
		rwxrwxrwx:
			左三位:定义user(owner)的权限
			中三位:定义group的权限;
			右三位:定义other的权限
	
	进程安全上下文:
		进程对文件的访问权限应用模型:
			进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
			否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
			否则,就只能应用other的权限;
	
	权限:
		r:readable, 读     4
		w:writable, 写			2
		x:excutable,执行	 1
	
		文件:
			r:可获取文件的数据;
			w: 可修改文件的数据;
			x:可将此文件运行为进程;
	
		目录:
			r:可使用ls命令获取其下的所有文件列表;
			w: 可修改此目录下的文件列表;即创建或删除文件;
			x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
	
		mode:rwxrwxrwx
		ownership:user, group
		
权限管理命令:
	chmod命令:
       chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...
       chmod [OPTION]... --reference=RFILE FILE...

       三类用户:
       		u:属主
       		g:属组
       		o:其它
       		a: 所有

       (1) chmod [OPTION]... MODE[,MODE]... FILE...

       		MODE表示法:
       			赋权表示法:直接操作一类用户的所有权限位rwx;
       				u=
       				g=
       				o=
       				a=

       			授权表示法:直接操作一类用户的一个权限位r,w,x;
       				u+, u-
       				g+, g-
       				o+, o-
       				a+, a-

       	(2) chmod [OPTION]... OCTAL-MODE FILE...   
       			eg:chmod 777 FILE

       	(3) chmod [OPTION]... --reference=RFILE FILE...

       	选项:
       		-R, --recursive:递归修改

       	注意:用户仅能修改属主为自己的那些文件的权限;
		       	
从属关系管理命令:chown, chgrp
	chown命令:
		chown [OPTION]... [OWNER][:[GROUP]] FILE...
      	chown [OPTION]... --reference=RFILE FILE...

      		选项:
      			-R:递归修改

	chgrp命令:
		chgrp [OPTION]... GROUP FILE...
		chgrp [OPTION]... --reference=RFILE FILE...

     		注意:仅管理员可修改文件的属主和属组;
     		
umask:文件的权限反向掩码,遮罩码;
   		文件:
   			666-umask
   		目录:
   			777-umask

   		注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;
   			umask: 023
   				666-023=643 + 1 = 644
   				777-023=754

   		umask命令:
   			umask:查看当前umask
   			umask MASK: 设置umask

   		注意:此类设定仅对当前shell进程有效;
       		
install命令:
    	install - copy files and set attributes

    	单源复制:
       		install [OPTION]... [-T] SOURCE DEST
       	多源复制:
       		install [OPTION]... SOURCE... DIRECTORY
       		install [OPTION]... -t DIRECTORY SOURCE...
       	创建目录:
       		install [OPTION]... -d DIRECTORY...

       	常用选项:
       		-m, --mode=MODE:设定目标文件权限,默认为755;
       		-o, --owner=OWNER:设定目标文件属主;
       		-g, --group=GROUP:设定目标文件属组;

mktemp命令:
    	mktemp - create a temporary file or directory
    	mktemp [OPTION]... [TEMPLATE]

    		常用选项:
    			-d:创建临时目录

    	注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;

Shylin

你可能感兴趣的:(大数据,Linux)