Linux(二)操作系统 -- softwbc 发布于:2018年11月26日 浏览量:1630  |

系统版本:CentOS 6.10

一、用户和权限

Linux是一个多用户、多任务的操作系统,可以允许多个用户同时登陆到系统上,并响应每一个用户的请求。

用户名是身份的唯一标志,通过口令来验证这一标志。

二、常用操作

1、修改文件所属用户chown

chown -R root /dataA  #修改/dataA目录以及下面的所有文件的所属用户为root   其中-R为递归参数

2、修改文件所属组chgrp

chgrp -R root /dataA #修改/dataA目录以及下面的所有文件的属于root组 其中R是递归

3、修改文件权限chmod

数字方式:r: 4(读权限)     w: 2(写权限)     x: 1(执行权限)

chmod 777 file

字符串方式:所有者u(user),所属组g(group),其他用户o(others)分别代表三组,a(all)代表所有用户

chmod a+x, file #所有添加执行权限 多个用逗号隔开
chmod u-x file  # 用户删除执行权限

4、用户和权限

查看用户ID组信息

id xxxuser # 查看用户
useradd xxx #添加用户
passwd xxx #为xxx用户设置密码
userdel -r xxx #删除xxx用户同时删除组

用户组

gpasswd -a xxx root # 把xxx用户加入root组 不加-a参数将会清除原来所属组!
gpasswd -d xxx root # 把xxx移除root组


文件的基本权限UGO(User,Group,Other)

ACL(Access Control List,访问控制列表)

一个针对文件/目录的访问控制列表。它在RWX-UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。

它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。(Linux的ACL权限实现原理及实现详解

基于普通文件或目录设置ACL其实就是针对指定的(之前都是一类)用户或用户组设置文件或目录的操作权限。对目录设置ACL其内部文件会继承ACL

1、查看是否设置了ACL权限

 其中“+”号代表被设置了acl,getfacl查看

2、确认文件系统是否支持ACL(ext3,ext4)


3、查看文件系统挂载时是否使用了ACL选项  tune2fs -l /dev/sda1 | grep acl

如果没有,可以通过重新挂载然后指定-o rw,acl

4、给用户赋予指定目录的读写权限

查看data目录ACL信息:

getfacl /dataA

5、给xxx赋予dataA的读写权限

setfacl -m user:xxx:rw /dataA


==================================================================

普通用户获取root权限的三种方式

方法一:给用户添加sudo权限。(进入root用户)修改/etc/sudoers文件

chmod u+w /etc/sudoers  #为此文件添加写权限

编辑sudoers文件找到如下位置,在下面添加"xxx ALL=(ALL)ALL"

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
xxx      ALL=(ALL)     ALL

撤销此文件到写权限

chmod u-w /etc/sudoers

也可以直接编辑这个只读文件,使用wq!强制保存

方法二:将用户加入root组。

首先修改/etc/sudoers文件,找到如下##处,打开注释;

## Allows people in group wheel to run all commands

%wheel    ALL=(ALL)    ALL

然后,将用户加入root组

usermod -g root xxx

方法三:修改/etc/passwd文件,找到xxx用户行,修改其ID为0(此时其实用户就是root了,此文件详细见后)

详解/etc/passwd 文件(保存了用户基本信息,每行一个用户)

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash

每行7个字段,其含义如下:

用户名:

口令(passwd):口令字段中只存放一个特殊的字符,例如“x”或者“*”,真正的加密后的用户口令字存放到/etc/shadow文件中

用户标识号(UID):

是一个整数,系统内部用它来标识用户。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。

组标识号(GID):

字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

注释性描述(users): (finger命令的输出)

主目录(home_directory):也就是用户的起始工作目录

登录Shell(Shell):

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh()CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

用户的登录Shell可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

----------------

三、磁盘管理

设备:

Linux系统中一切都是文件,硬件设备也是。SCSI/SATA/U盘 文件名 /dev/sd[a-p];打印机 /dev/lp[0-15];光驱/dev/cdrom等等

分区:

硬盘分区分为主分区(Primary partion)和扩展分区(Extension partion)两种。主分区编号1-4,扩展分区并不是一个实际分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。逻辑分区从5开始

swap 交换分区,这是一块特殊的硬盘空间,当实际内存不够时,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。

文件系统:

是一种对物理空间的组织方式,通常在格式化时创建。Windows中常见的NTFS和FAT文件系统;Linux中常用的ext3、ext4文件系统。ext3是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失。ext4是ext3的改进版本,

lost+found

lost+found 是一个特殊目录,用途是用来存放文件系统错误导致文件丢失后找回数据的。这个目录在分区的根目录上,而不是整个系统的。像ext2/3/4这种文件系统有这个目录,但是有些文件系统没有这个目录,比如 reiserfs,tmpfs也没有。

fdisk 是一款强大的磁盘操作工具,来自util-linux软件包,通过-l 参数,能获得机器中所有的硬盘的分区情况

Windows\ 反斜线;Linux/ 正斜线;识别目录层

Linux主要目录及其内容:

四、常用操作

1、查看分区

df -T   #只可以查看已经挂载的分区和文件系统类型

2、lsblk 检查哪块磁盘为未加载和分区

3.1、挂载文件系统

mkdir /data #新建一个目录
mount /dev/sda3 /data #将分区挂载到这个目录

-t 可选参数 可以指定使用的文件系统类型,默认自动检测设备上的文件系统

                                                                                      常用文件系统


-o options 主要用来描述设备或档案的挂接方式。常用的参数有: 

  loop:用来把一个文件当成硬盘分区挂接上系统 

  ro:采用只读方式挂接设备 

  rw:采用读写方式挂接设备 

  iocharset:指定访问文件系统所用字符集 

-r 参数 只读 

-w 可读可写模式(默认)

挂载使用U盘

root用户加载usb模块:modprob usb-storage

fdisk -l 查看设备
mount -t vfat /dev/sdb /mnt/usb
umount /mnt/usb

3.2 设置系统启动后自动挂载文件系统 /etc/fstab

UUID 指代设备名(/dev/sdb1)

挂载点(/data)

文件系统(ext4)

挂载参数(defaults)

备份频度(0)

重启过程中文件系统的检查顺序(0)

3.3 测试

mount -a 如果没有任何输出说明修改正确

3.4 卸载文件系统umount

-r 参数 无法卸载文件系统的情况下,尝试以只读的方式重新载入

3.5 遇到的问题

[root@centoshost dev]# mount -t ext4 /dev/sdb5 /data

mount: wrong fs type, bad option, bad superblock on /dev/sdb5,

       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try

       dmesg | tail  or so

原因:挂载时未格式化 ,解决如下:

sudo mkfs -t ext4 /dev/sdb

df -h #查看分区情况

==========遇到问题及解决方法===========

问题:分区格式化完成后,发现什么都没放,少了将近50G的空间

原来是 ext4 文件系统序会自动为 root 或指定的用户保留一定的磁盘空间, 默认是5%

解决:

利用 mke2fs 的 -m reserved-percentage 选项可以调整这个设置来获得更多的磁盘空间且不影响性能。不过这是在格式化时设置。而在创建了文件系统之后,还可以用 tune2fs 来修改这个设置,比如

tune2fs -m 0.25 /dev/sda4 # 将保留的空间设置为 0.25%,也就是 0.25% 的预留空间

注: mkfs.ext4 -n  /dev/xxx  加上 -n 选项后并不真正格式化,而是只输出相关信息而已。

==========

卸载挂载,删除目录无法删除问题:

=========================

问题:把普通用加入root组,同时修改sudoers 

但普通用户还是无法在/下创建目录 ::注意ACL权限

========================

问题:目录所属组改成了非root组,导致cd都进不去了

========================

关于我们 |  广告服务 |  联系我们 |  网站声明

Copyright © 2015 - 2016 DISPACE.NET |  使用帮助 |  关于我们 |  投诉建议

京ICP备13033209号-2