linux文件操作学习2

来源:互联网 发布:耳机一定要煲机吗 知乎 编辑:程序博客网 时间:2024/04/29 17:53

前言:

前面学习了linux文件操作的基础,主要是整体的认识了linux操作系统的目录结构和功能以及创建、查看、复制、剪切、目录或文件,接下来将更深入的学习文件的操作主要包括用户的管理,文件的查找。

文件的权限修改

[root@xianzan dir]# ls[root@xianzan dir]# touch test.txt[root@xianzan dir]# ll test.txt-rw-r--r--. 1 root root 0 1月  13 10:19 test.txt
预备知识:

-rw-r--r--:

(-)为文件的属性:

d:表示目录;

-:表示文件;

b:块设备表示为装置文件中可供存储的接口设备;

c:字符设备,表示为装置文件中的串行设备,如键盘,鼠标;

s:表示该文件存放socket信息的,一般给process之前用来进行network socket存取通信使用的档案;

p:表示数据输送问价(FIFO,pipe),它的主要目的是为了解决多个程序同时存取一个文件时造成的错误。

后面9位(bit):

为文件的属性,每三位分为一组,分别为用户所有者、用户组、其他用户组的权限,其中他们权限的顺序都为:rwx,r(4)可读,w(2)可写,x(1)可执行。文件的最高权限为7(r+w+x),其他权限:6(r+w)、5(r+x)、3(w+x)。

补充:

Linux中I/O设备分为两类:字符设备块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。
(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
(2) 块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。

总结一下,这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取

1.chmod命令:

改变文件的权限

[root@xianzan dir]# chmod a+x test.txt[root@xianzan dir]# ll test.txt -rwxr-xr-x. 1 root root 0 1月  13 10:19 test.txt
a+x表示所有的用户都加可执行的权限

[root@xianzan dir]# chmod u-x test.txt [root@xianzan dir]# ll test.txt -rw-r-xr-x. 1 root root 0 1月  13 10:19 test.txt
u-x表示文件的所有者去掉可执行的权限

[root@xianzan dir]# chmod g-r test.txt [root@xianzan dir]# ll test.txt -rw---xr-x. 1 root root 0 1月  13 10:19 test.txt
g-r表示文件的用户组去掉可读权限
[root@xianzan dir]# chmod o-r test.txt [root@xianzan dir]# ll test.txt -rw---x--x. 1 root root 0 1月  13 10:19 test.txt
o-r表示文件的其他用户组去掉刻度的权限
[root@xianzan dir]# chmod 777 test.txt [root@xianzan dir]# ll test.txt -rwxrwxrwx. 1 root root 0 1月  13 10:19 test.txt
777表示所用户、用户组,其他用户组的文件权限都为可读、可写、可执行。
其他权限:6(r+w)、5(r+x)、3(w+x)
如果想把文件夹下的所有的文件都改为相同的文件属性,包含文件夹在+R:

[root@xianzan ~]# chmod -R 666 dir[root@xianzan ~]# ll dir总用量 0-rw-rw-rw-. 1 root root 0 1月  13 10:19 test.txt[root@xianzan ~]# cd dir[root@xianzan dir]# ll test.txt -rw-rw-rw-. 1 root root 0 1月  13 10:19 test.txt

2.添加用户和用户组:

预备知识:

在linux中,添加用户和用户组时,必须具备或获取root的权限。 此外 用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在/etc/shadow的配置文件中(主要的文件位置一定要记住,要记住,要记住)。

添加用户组:

[root@xianzan dir]# groupadd train[root@xianzan dir]# tail /etc/group      //查看用用户组的信息slocate:x:21:xianzan:x:500:train:x:501:

root@xianzan dir]# useradd user1[root@xianzan dir]# tail -2 /etc/group   //tail -2 查看到时1 2行train:x:501:user1:x:502:[root@xianzan dir]# tail -1 /etc/passwd   user1:x:501:502::/home/user1:/bin/bash

创建用户的同时添加到用户组:

[root@xianzan dir]# useradd -g train user2[root@xianzan dir]# tail -1 /etc/passwduser2:x:502:501::/home/user2:/bin/bash
此外用户组的密码存放在/etc/gshadow

设置用户的密码:

[root@xianzan dir]# passwd user1
[root@xianzan dir]# tail -2 /etc/shadowuser1:$6$2OZXWG7J$6yJcmY79LMSMwpxtULxej9wGZUjPSTsuS/sMpQvmf0lCDzVGv7vGbhuYttUq0hATsS36i4IEqmFdYdLQveGMH.:16813:0:99999:7:::user2:!!:16813:0:99999:7:::
密码是通过算法加密过
[root@xianzan dir]# passwd       //更改当前用户的密码


删除用户:

[root@xianzan dir]# userdel -r user2    //-r 删除用户登入目录以及目录中所有文件 若无-r 仅删除账号,不删除文件

删除组:

[root@xianzan dir]# groupdel train

3.sudo命令:

对于系统的管理我们必须使用超级用户root,如添加用户,修改网络,修改系统配
置等;而如果我们使用root帐号做事又很危险,如不小心输入下面命令:

[root@xianzan dir]# rm -rf /usr

当我们使用普通帐号登录时,只是偶尔有个别命令需要用root权限来执行,这时我们可以在该命令的前面加上sudo即可。当然,这需要使用root用户来配置/etc/sudoers文件,添

加该用户的支持

[user1@xianzan dir]$ sudo vim /etc/sudoers




4.chown命令:

用来修改文件的所有者和所属组,如果需要把文件夹下的所有文件都修改则加上-R参数

[user1@xianzan ~]$ touch txt[user1@xianzan ~]$ ll txt-rw-rw-r--. 1 user1 user1 0 1月  13 16:59 txt[user1@xianzan ~]$ sudo groupadd group1             //创建用户组[user1@xianzan ~]$ sudo useradd -g group1 user2     //创建用户并且添加用户组[user1@xianzan ~]$ sudo chown user2 txt             //修改文件的所有者[user1@xianzan ~]$ ll txt-rw-rw-r--. 1 user2 user1 0 1月  13 16:59 txt[user1@xianzan ~]$ sudo chown user2.group1 txt      //修改文件的用户组[user1@xianzan ~]$ ll txt-rw-rw-r--. 1 user2 group1 0 1月  13 16:59 txt

命令的查找:

[user1@xianzan ~]$ whereis vimvim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz[user1@xianzan ~]$ which vim/usr/bin/vim

文件的查找:

locate命令从系统的数据库的目录中查找文件,而sudo updatedb建立整个系统目录文件的数据库与locate命令配合

[user1@xianzan ~]$ sudo updatedb[user1@xianzan ~]$ locate ifconfig/sbin/ifconfig/usr/sbin/pifconfig/usr/share/man/de/man8/ifconfig.8.gz/usr/share/man/fr/man8/ifconfig.8.gz/usr/share/man/man8/ifconfig.8.gz/usr/share/man/man8/pifconfig.8.gz/usr/share/man/pt/man8/ifconfig.8.gz

find命令:

可以方便查找,可以加路径查找

命令的格式:find [路径] [选项] [动作]
find /home/user1/ -iname "*.c" -exec rm -rf {} \;

[user1@xianzan ~]$ find -name hello.c./hello.c[user1@xianzan ~]$ touch hello.o goodbye.o[user1@xianzan ~]$ find /home/user1/ -iname "*.c"/home/user1/hello.c/home/user1/good.c
[user1@xianzan ~]$ find -iname "*.o" -exec rm -rf {} \;[user1@xianzan ~]$ lsdir  good.c  hello.c  txt
文件内容查找:

grep命令:

grep的格式:grep [选项][文件名]

[user1@xianzan ~]$ grep user1 /etc/passwduser1:x:501:502::/home/user1:/bin/bash[user1@xianzan ~]$ grep -n user1 /etc/passwd39:user1:x:501:502::/home/user1:/bin/bash[user1@xianzan ~]$ sudo grep -v "#" /etc/inittab   //系统开机的级别id:5:initdefault:





1 0