一般面试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文件的权限
# 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目录的权限
# 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节点,指向相同的文件,肯定是相同的大小;软连接可以理解为文件内容中存储了源文件的地址或路径,所以有自己的大小。
$ mkdir mytest
$ cd mytest
$ echo “AAAAAAAAAAAAAAAAA” >hello
$ ln hello hello2
$ ln -s hello hello3
$ 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
$ echo “BBBBBBBBBBB” >>hello
$ 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中。
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
$ mkdir aa
$ touch bb
$ 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
$ umask 022
$ mkdir aa2
$ touch bb2
$ 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
ls … …
因为这里的”filename”其实是表达式中的一个pattern,所以必须要加“”来组织shell的解析。 例如find . -name “aa*” -exec rm {}。
如何快速地将远程机器上的共享目录下的所有文件拷贝到本地供只读使用?
如果不拷贝,简单地mount到本地目录。但是这里是要求拷贝到本地,所以这里可以使用softlink来将对文件的拷贝时间变为固定值。具体可以使用cp的-s参数。
Linux中文件路劲可以用空格吗?
windows中用双引号就可以了,linux中用加空格来表示。
mkdir my folder (中间有2个空格)
cd my folder/
如何在Deepin Linux上安装USB无线网卡?
目前已有的办法大都是借用Windows下的驱动变相转为Linux驱动,这种方式虽然可行,但不够稳定,这里我介绍一种开源解决方案,madwifi(http://madwifi。org/),它完美支持多种厂家的无线网卡,不过芯片组要是Atheros生产的才行。
Atheros是台湾一家公司,它是目前世界上使用最多的无线芯片组,另外可能就要数intel的芯片组了,不过intel提供了官方的Linux驱动,我这里全部都是使用的TP-LINK的650G无线PCI网卡,很遗憾的是目前该项目还不能支持USB接口的无线网卡,目前它支持PCI,miniPCI和PCMCIA接口Atheros芯片组的无线网卡,这已经包含市面上大多数无线网卡了,可在http://madwifi。
org/wiki/Compatibility寻找你的网卡是否能够兼容。
首先下载对应你Linux发行版的软件包,下载地址http://madwifi。org/wiki/UserDocs/GettingMadwifi,我这里是OEL Linux 5(Oracle Enterprise Linux 5),它是基于Red Hat Enterprise Linux 5进行二次包装的产品,所以我选择下载Red Hat rpm格式的软件包,进入下载页面后会有很多文件链接,这时需要弄清楚自己内核的版本号,使用命令uname -r获得内核版本号,我这里是2。
6。18-53。el5,所以我下载了下面三个软件:
madwifi-0。9。5-42_r3771。el5。i386。rpm
madwifi-hal-kmdl-2。6。18-53。el5-0。9。5-42_r3771。el5。i686。rpm
madwifi-kmdl-2。
6。18-53。el5-0。9。5-42_r3771。el5。i686。rpm
然后安装
#rpm -Uvh madwifi-*。rpm
注意这里一定要将这三个rpm一起安装,否则会出现循环依赖,安装失败。如果你是其他发行版请下载对应的软件包,并进行安装。
安装后会有多个命令可用,这里只需要其中3个:wlanconfig,iwconfig,iwlist。
同时安装后会自动产生一个wifi0的网卡,会在/etc/sysconfig/hwconf文件中添加对应的驱动信息,会在/etc/sysconfig/network-scripts/目录下产生一个ifcfg-ath0文件,现在需要设置ip地址,子网掩码,SSID,网络连接KEY,网络认证方式,访问点。
首先启用ath0
#ifconfig ath0 up
扫描可用的无线网络
#iwlist ath0 scan
扫描结果如下图所示,显示找到两个可用的无线网络:TP-LINK-TH和linksys。我们要使用的是TP-LINK-TH这个网络,需要记下几个要用到的信息:
Address: 00:19:E0:D8:B7:5E 【这个地址是无线AP的,也就是后面我们要指定的访问点】
ESSID:”TP-LINK-TH” 【这个是无线AP的网络名】
Encryption key:on 【这个值为on表示需要KEY也就是要输入密码才能访问,如果为OFF表示任何人都可以连接,无需输入密码】
从扫描结果看速度最大可达54M/s,虽然AP最大连接速度可达108M/s,但这已经够用了。
注意:如果你在实践中发现扫描失败,就先执行modprobe wlan_scan_sta命令先插入扫描模块。