guidlinux
Ⅰ 一般面试linux都问什么问题
平时用的不多的或者确实本身就有点模糊的,非常感谢面试官的解释,这里记录下:
文件权限 4755的涵义 = 文件权限中s/S的意义?
chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。
一般是三个数字:
第一个数字表示文件所有者的权限
第二个数字表示与文件所有者同属一个用户组的其他用户的权限
第三个数字表示其它用户组的权限
权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。
所以,chmod 755 设置用户的权限为:
1.文件所有者可读可写可执行
2.与文件所有者同属一个用户组的其他用户可读可执行
3.其它用户组可读可执行
chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。
文章Linux中的文件特殊权限中通过实例很好地解释了这里的4的含义:
先看个实例,查看你的/usr/bin/passwd 与/etc/passwd文件的权限
[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd
-rw-r--r--1 root root 154908-1913:54/etc/passwd
-rwsr-xr-x 1 root root 229842007-01-07/usr/bin/passwd
众所周知,/etc/passwd文件存放的各个用户的账号与密码信息,/usr/bin/passwd是执行修改和查看此文件的程序,但从权限上看,/etc/passwd仅有root权限的写(w)权,可是为什么每个用户都可以直接调用/usr/bin/passwd来写/etc/passwd从而达到修改自己的密码呢?注意这里的s代替了x( -rwsr-xr-x 1 root root 229842007-01-07/usr/bin/passwd) , 这里的s使得其他的用户执行/usr/bin/passwd时具有与owner root相当的权限。
这里的4或s是特殊的文件权限,其实s可以用在user或group,还有另一种特殊权限t:
再看个实例,查看你的/tmp目录的权限
[root@MyLinux ~]# ls -dl /tmpdrwxrwxrwt 6 root root 4096 08-22 11:37 /tmp tmp目录是所有用户共有的临时文件夹,所有用户都拥有读写权限,这就必然出现一个问题,A用户在/tmp里创建了文件a.file,此时B用户看了不爽,在/tmp里把它给删了(因为拥有读写权限),那肯定是不行的。
有t特权的目录下的文件或目录只有owner和root才可以删除和修改,其他的人即使有写权限也不能删除。
如何设置以上特殊权限:
setuid:chmod u+s xxx
setgid: chmod g+s xxx
stick bit : chmod o+t xxx
或者使用八进制方式,在原先的数字前加一个数字,三个权限所代表的进制数与一般权限的方式类似,如下:
suid guid stick bit
1 1 1
所以:
suid的二进制串为:100,换算十进制为:4
guid的二进制串为:010,换算十进制:2
stick bit 二进制串:001,换算十进制:1
于是也可以这样设:
setuid:chmod 4755 xxx
setgid:chmod 2755 xxx
stick bit:chmod 1755 xxx
最后,在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那代表此文件的特殊权限没有生效,是因为你尚未给它对应用户的x权限.
硬链接和软连接的大小?
通过下面的测试,硬链接与源文件是相同的inode节点,指向相同的文件,肯定是相同的大小;软连接可以理解为文件内容中存储了源文件的地址或路径,所以有自己的大小。
[aaa@myvm ~]$ mkdir mytest
[aaa@myvm ~]$ cd mytest
[aaa@myvm mytest]$ echo "AAAAAAAAAAAAAAAAA" >hello
[aaa@myvm mytest]$ ln hello hello2
[aaa@myvm mytest]$ ln -s hello hello3
[aaa@myvm mytest]$ ls -lia
总计 16
5764989 drwxrwxr-x 2 aaa aaa 4096 11-25 16:03 .
5566272 drwx------ 23 aaa aaa 4096 11-25 16:02 ..
5765068 -rw-rw-r-- 2 aaa aaa 18 11-25 16:03 hello
5765068 -rw-rw-r-- 2 aaa aaa 18 11-25 16:03 hello2
5765116 lrwxrwxrwx 1 aaa aaa 5 11-25 16:03 hello3 -> hello
[aaa@myvm mytest]$ echo "BBBBBBBBBBB" >>hello
[aaa@myvm mytest]$ ls -lia
总计 16
5764989 drwxrwxr-x 2 aaa aaa 4096 11-25 16:03 .
5566272 drwx------ 23 aaa aaa 4096 11-25 16:02 ..
5765068 -rw-rw-r-- 2 aaa aaa 30 11-25 16:04 hello
5765068 -rw-rw-r-- 2 aaa aaa 30 11-25 16:04 hello2
5765116 lrwxrwxrwx 1 aaa aaa 5 11-25 16:03 hello3 -> hello
如何设置当前用户新建文件或目录的默认权限?
umask用来定义新建文件或目录的默认权限,新的目录的权限为777-umask设置的值,新建文件的权限为666-umask设置的值。若要长期修改umask的值,可以把它写进/etc/profile或~/.profile或~/.bash_profile中。
[aaa@myvm mytest]$ umask
0002
[aaa@myvm mytest]$ umask -S
u=rwx,g=rwx,o=rx
[aaa@myvm mytest]$ mkdir aa
[aaa@myvm mytest]$ touch bb
[aaa@myvm mytest]$ ls -la
总计 12
drwxrwxr-x 3 aaa aaa 4096 11-25 16:20 .
drwx------ 23 aaa aaa 4096 11-25 16:20 ..
drwxrwxr-x 2 aaa aaa 4096 11-25 16:20 aa
-rw-rw-r-- 1 aaa aaa 0 11-25 16:20 bb
[aaa@myvm mytest]$ umask 022
[aaa@myvm mytest]$ mkdir aa2
[aaa@myvm mytest]$ touch bb2
[aaa@myvm mytest]$ ls -la
总计 16
drwxrwxr-x 4 aaa aaa 4096 11-25 16:29 .
drwx------ 23 aaa aaa 4096 11-25 16:20 ..
drwxrwxr-x 2 aaa aaa 4096 11-25 16:20 aa
drwxr-xr-x 2 aaa aaa 4096 11-25 16:29 aa2
-rw-rw-r-- 1 aaa aaa 0 11-25 16:20 bb
-rw-r--r-- 1 aaa aaa 0 11-25 16:29 bb2
find . -name "filename" 中的filename为啥必须加引号?但是ls中不需要?
find [-H] [-L] [-P] [path...] [expression]
ls [OPTION]... [FILE]...
因为这里的"filename"其实是表达式中的一个pattern,所以必须要加“”来组织shell的解析。 例如find . -name "aa*" -exec rm {}。
如何快速地将远程机器上的共享目录下的所有文件拷贝到本地供只读使用?
如果不拷贝,简单地mount到本地目录。但是这里是要求拷贝到本地,所以这里可以使用softlink来将对文件的拷贝时间变为固定值。具体可以使用cp的-s参数。
Linux中文件路劲可以用空格吗?
windows中用双引号就可以了,linux中用\加空格来表示。
mkdir my\ \ folder (中间有2个空格)
cd my\ \ folder/
Ⅱ linux下的UUID是个什么东西
UUID
简介
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。
2作用
UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
3组成
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。
4应用
使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。
通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符(GUID),这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。
Ⅲ win7和Linux双硬盘双系统如何安装
Win7下安装ubuntu (双硬盘用户加强版)起源还是学习上要用到linux操作系统,所以才在自己电脑上安装linux操作系统。先开始是在虚拟机上用的,但用过一两星期就感觉还是不适合,用虚拟机感觉只要ctrl+Alt就能退出来,给自己留了太多的退路,又回到了windows环境。所以个人很支持在硬盘上安装双系统,在操作系统的选择上,我是支持ubuntu的,因为她拥有一个坚固的后盾,那就是http://forum.ubuntu.org.cn/,记住这个网址,有什么问题都可以找她。
好了废话也不多说了,就我自己的安装经历给大家讲一讲在win7操作系统下安装Ubuntu过程中会遇到的各种问题(本人是两块硬盘,所以情况更复杂,但也更有参考价值!)。
STEP1:下载ubuntu
目前截止到2010/10/23最新的版本是10.10
http://www.verycd.com/topics/2857712/ 这是电驴上的资源,可以去下,600多M不是很大,下载完当然刻盘后就叫ubuntu 10.10 LiveCD。
STEP2:空出你的硬盘空间
安装ubuntu所需要的空间不大,10G足以(太够了,考虑到以后还要装其他一些东西,留大一点吧)。
STEP3:情况调查
QA:你机箱中安装了几块硬盘?
A1、一块 (太简单了,网上很多教程都适合你)
A2、两块 (情况复杂,引导需要小心)
QB:你愿意将liveCD刻录下来吗?(这会省去你许多麻烦,也可以收藏以备崩溃后重新安装。但没有刻录机和空白光盘的用户也不要着急,还是有办法的)
B1、愿意
B2、不愿意
一、A1B1用户
太简单了,将你的liveCD塞入光驱,从主板设置由CDROM启动系统也就是我下面要说的二、A1B2用户 的第6、7两步,呵呵,这时大多数人发现在开机的GNU GRUB中没有win7系统的选项只能进入ubuntu,请往下翻页至——从ubuntu中修复win7开机引导 就教你解决这个问题
二、A1B2用户
这就是网上说的很多的“win7下如何使用GRUB4DOS来引导硬盘安装LINUX系统”,好这里提到了一个新的名词“GRUB4DOS” 这是ubuntu社区上一篇帖子http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=150541,可以去膜拜一下,当然如果想省一点时间,我就简单地说——这是一款在win7下能在启动主板后引导进入光盘或操作系统的软件(虽然很不全面,但在本教程中就起到这点作用了),这是她的下载地址,去下一个最新版的(就是最新发布的,这个不会不懂吧)吧http://download.gna.org/grub4dos ,这是很多小软件的集成打包,我们只会用到其中的几个,这个待会再说。
1、将下载的grub4dos解压,复制其中的menu.lst、grldr和grldr.mbr三个文件到C盘根目录(就是C:\),如果想GRUB支持中文,那就把china文件夹中的grldr放在C盘根目录下。
2、将下载的ISO文件ubuntu-9.04-desktop- i386.iso放在分区根目录下,并将用winrar或者虚拟光驱打开LINUX的ISO文件,这里以ubuntu-10.10-dvd-i386.iso为例,该文件内casper文件夹里的initrd和vmlinuz这两个文件复制到C:盘根目录,(其实不一定放在C盘根目录,任何一个分区都可以,只要你的menu.lst文件参数配置正确就可以了,例如只有一块硬盘,放在C盘就是(hd0,0),D盘就是(hd0,1)依次类推),menu.lst中指定initrd.lz和vmlinuz两个文件的路径是正确的就可以了,并不一定要把initrd.lz和vmlinuz两个文件放到根目录的。
3、这里将会出现一个分歧,网上有些教程会使用boot.ini方法,有的会使用BCDedit方法。这里我推荐使用BCDedit方法,原因有一下两点: 1)、boot.ini方法对win7使用软改激活的用户会导致启动不能(虽然我也不确定软改的具体定义是什么,但君子不立危墙之下,不要没事找事了,当然纯学习时间的例外) 2)、 BCD(Boot Configuration Date)即系统引导配置数据,这是从Windows Vista开始才引入的。我们知道,在Windows Vista/Server 2008中BootManager组件负责系统的初始化和引导工作,而与之相匹配系统的引导数据就存储在BCD中。这才是win7引导的核心,已经不再用boot.ini引导了,当然win7还是承认boot.ini文件的这也是为什么boot.ini方法能起作用的原因。初步了解BCD,这也将是本次安装的额外收获。 PS:强烈推荐阅读ubuntu社区smallapple 所整理的grub2基础教程,http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387这是帖子的地址,这个pdf教程有21页,我是打印下来放入文件夹好好阅读收藏的。事实上,教程非常详细,对ubuntu的引导问题基本都提到了,膜拜!如果说BCD是win7引导的核心,那么grub就是ubuntu的BCD了,现在自ubuntu9.10升级后就默认使用grub2了,一定要了解一下。
4、我们使用BCD方法:
1)、在WIN7里以管理员的身份运行cmd,打开命令提示符
2)、输入 bcdedit /export "D:\BCD Backup"
#将系统存储的内容导出到文件。此文件可以在以后用于还原系统存储的状态。此命令仅对系统存储有效。注意:一定要备份,一方面以还原防止操作错误,另一方面,后面再说(顺带一提:bcdedit /import "D:\BCD Backup"就是与之相对的还原操作)
3)、输入bcdedit /create /d “GRUB4DOS” /application bootsector
#这个命令会产生一个guid打印在cmd窗口中,通俗讲就是在启动队列中占一个位置。注意:guid类似于{******xx-***x-***x-***x-************}格式,具体数字根据硬盘或分区参数会有相应变化。例如我的就是{dadaa27d-c9f1-11df-a802-ce8c84d8192b},我们把它复制下来,我们下面有用(有同学提到:怎么复制呀?这里提一种方法 在cmd窗口右键→标记→选中要复制的东西再点鼠标右键,此时选中的文本会变成未选中的状态,不过没关系,按下Ctrl+C,information就到你的剪贴板里了~到目的地去Ctrl+V吧~!)
4)、bcdedit /set {dadaa27d-c9f1-11df-a802-ce8c84d8192b} device partition=C:
#设定操作系统{dadaa27d-c9f1-11df-a802-ce8c84d8192b}引导分区“C”,设置刚刚添加启动项的启动分区,这里设的是C盘,因为我们的文件都在C盘。
5)、bcdedit /set {dadaa27d-c9f1-11df-a802-ce8c84d8192b} path \grldr.mbr
#设置启动时运行的文件。
6)、bcdedit /displayorder {dadaa27d-c9f1-11df-a802-ce8c84d8192b} /addlast
#这个只是为了将增加的启动项放到其他启动项的后面。注意:也可以用/bootsequence 选项,具体可以去网络再了解一下,我就不具体列举了。
7)、最后可以用 bcdedit /enum 查看一下,会看到执行上述命令后产生的启动项配置。
实模式启动扇区
———————
标识符 {dadaa27d-c9f1-11df-a802-ce8c84d8192b}
device partition=C:
path \grldr.mbr
description GRUB4DOS
这样就完成了在WIN7启动菜单添加GRUB的选择项了,只要你在C盘根目录下写一个正确的menu.lst文件就可以引导硬盘安装LINUX啦。
5、书写正确的menu.lst文件
回到我们的C根目录下从GRUB4DOS中拷贝出来的menu.lst文件,里面有一些书写说明,不过是英文的,我略微说一下我们要用到的内容。首先将里面的说明都删掉,写下内容如下:
default 0
timeout 0
title ubuntu 10.10 install
rootnoverify (hd0,0)
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.gz
title Windows 7
rootnoverify (hd0,1)
chainloader +1
不懂?没事也不需要太了解,具体的menu.lst写法可以参考网上的教程,我记得比如:http://www.360doc.com/content/09/0817/19/74585_4997923.shtml 很不错的简单介绍。
6、接下来,就是重启,安装ubuntu了,很简单也许在分区那边会遇到一些问题。我的建议是用手动指定分区然后把你在STEP2中空出的盘选择ext4,挂载在 / 上(注意剩下2G空间),剩下的2G可以用作swap分区,关于分区方面的知识建议阅读《鸟哥的私房菜》,现在已经是第三版了,强烈推荐通读此书,写的很好,很基本。
7、安装完成后她会要求你重启,这时大多数人发现在开机的GNU GRUB中没有win7系统的选项只能进入ubuntu,请往下翻页至——从ubuntu中修复win7开机引导 就教你解决这个问题
三、A2B1用户
拥有两块硬盘,那么注定你在安装上没有什么问题,但是在系统引导上肯定会出现问题。我的建议是,一定要搞清楚你的硬盘状况,比如每一个分区是什么 ?你的win7Loader在哪里?……
1、不要被吓唬住了!先通过LiveCD安装ubuntu吧,不管怎样都是要装的。
在引导程序的安装位置上,我建议就装在/目录所在的分区,这样重启后你会进入win7就像我当初一下,直接进入win7,就像没装过ubuntu一样。别急,用LiveCD引导进入ubuntu。
2、这时 就是通过脚本script,完整了解你的系统情况的时候了,感谢ubuntu社区的onshoestring 他向我提供了这个脚本,http://sourceforge.net/projects/bootinfoscript/
把文件先复制到桌面,在终端运行:sudo bash ~/桌面/boot_info_script055.sh
生成的RESULTS.txt文件中有详细的信息
3、你这时了解你的硬盘了吗?呵呵,下面可以通过
——从ubuntu中修复win7开机引导(利用Ubuntu-GRUB2来引导)
——从win7中修复ubuntu开机引导(利用BCDedit来引导)
来自由选择你的引导程序是通过Ubuntu-grub2 进入win7还是通过win7-BCD来调用Grub2以进入ubuntu
四、A2B2用户
你选择了一条最艰巨的路,先把A1B2的执行一遍以安装ubuntu ,再选择
——从ubuntu中修复win7开机引导(利用Ubuntu-GRUB2来引导)
——从win7中修复ubuntu开机引导(利用BCDedit来引导)
来自由选择你的引导程序是通过Ubuntu-grub2 进入win7还是通过win7-BCD来调用Grub2以进入ubuntu,呵呵。
——从ubuntu中修复win7开机引导(利用Ubuntu-GRUB2来引导)
既然是从ubuntu修复win7的启动项,那就必须进入ubuntu,对于那些只能进入win7却无法进入ubuntu的用户,可以用LiveCD引导进入(就是最开始选择试用Ubuntu,LiveCD的作用终于体现出来了)。当然对于B2而且无法进入ubuntu的情况,我们还有下面的教程——从win7中修复ubuntu开机引导。好,废话不多说,进入正题。
进入ubuntu后,请打开终端输入:
1、sudo fdisk -l
(注意是小写的L,不是数字的1,此步用于确定电脑中安装 Ubuntu10.10 的所在分区的位置,输入以后会输出类似如下信息,找到system为Linux的那行,记住/dev/sdaX的情况,比如本人的电脑是/dev /sda7,以下就以此为例,你自己的请加以更改)
2、 sudo -i (此步用于得到root权限,无需输入密码,方便以下操作)
3、 mount /dev/sda7 /mnt (注意,sdaX是第一步查到的/目录所安装的盘)
4、 mount /dev/sda7 /mnt/boot (如果boot是单独分区装的话才需要这一步,……总之把其他单独分区安装的目录都挂上去,例如/home 、/var等)
5、 mount --bind /dev /mnt/dev (重要,一定要挂)
6、 mount --bind /proc /mnt/proc (重要,一定要挂)
7、 chroot /mnt (chroot挂好的ubuntu)
8、 grub-install /dev/sda (双硬盘的用户注意,此处的sda是由win7loader所在位置所决定的,就是说,如果你的win7和ubuntu假如都安装在sdb,但win7loader却在sda的话,也只能写sda,具体怎样查看win7loader在哪里,我在A2B1中有所讲解)
Ps:这一步执行后会有几行代码出现,总体来说就是成功的,用liveCD引导进入的用户可能会遇到 cannot find ***prition 等字样,无视他,没关系的,重启后你就会发现终于可以进入ubuntu了,然后再按照这个步骤执行一遍。 关于这个问题的记载我在一个英文的叫做:小石头工作室的网页上找到的……很遗憾,网址没记录下来,遗失了,还是感谢他们!
9、update-grub (重装grub2)
感谢ubuntu社区的foxman997在他的帖子中我才正确
知道为什么吗?好好阅读ubuntu社区smallapple 所整理的grub2基础教程,http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387这是帖子的地址,下载他整理的pdf文档。
——从win7中修复ubuntu开机引导(利用BCDedit来引导)
前4步的流程和 二、A1B2用户 中的win7下如何使用GRUB4DOS来引导硬盘安装LINUX系统步骤一样,区别就在第5步,书写正确的menu.lst文件
文件如下:
Timeout 0
Default 0
Title grub2
Find --set-root /boot/grub/core.img
Kernel /boot/grub/core.img
Boot
(当然,若果/boot单独分区的话,改为
Find --set-root /grub/core.img
Kernel /grub/core.img)
Ⅳ linux下查看分区是不是gpt
df可以看看每个分区挂载到哪个目录了,以及分区大小等等信息(df -h可以看得清楚点)
然后fdisk一下你想看的那个分区,可以看到详细信息。
Ⅳ 如何查看linux用户主目录下的文件
在没有图形界面的Linux中需要查看一个文件的内容,这里分享下查找方法。
1、首先在电脑中打开Putty软件,连接上Linux,如下图所示。