图片 1

Unix/Linux的权限管理还是比较复杂的,别人说看高级环境编程得看2,3遍。我想这应该是在Linux有了一定基础上。我看的过程中觉得需要反复推敲,有些地方得翻来覆去看上5,6遍甚至更多,下面是自己的一些对Unix权限的理解,尽量翻译成了大白话。如果有不对的地方,欢迎讨论。

MySQL-
Win32现在已经证明了自己很稳定。这个版本得MySQL有与对应的Unix版本同样的特征,除了下面:
Win95和线程 Win95
为每个线程的创建损失大约200个字节的内存。因此,如果你进行许多连接,你不应该在Win95运行mysqld很长时间,因为MySQL的每个连接都创建一个新线程!WinNT和Win98不能容忍这个bug。阻塞式读blocking
read)
MySQL为每个连接使用一个阻塞式读取,这意味着:一个连接将不在8个小时后自动被断开,就像MySQL的Unix版本所发生的。如果一个连接“挂起”,不杀死MySQL就不可能打破它。
mysqladmin kill在一个睡眠的连接上将不工作。只要有睡眠的连接,mysqladmin
shutdown不能中途中断。我们计划在不久的将来修正它。
UDF函数 暂时MySQL-Win32不支持用户可定义函数。 DROP DATABASE
你不能抛弃一个正在被某些线程使用的数据库。从任务管理器杀死MySQL
在Windows95上,你不能从任务管理器或用shutdown实用程序杀死MySQL。你必须用mysqladmin
shutdown关闭它。大小写区分的名字文件名在Win32上是忽略大小写的,因此Win32上的MySQL数据库和表的名字也是忽略大小写的。唯一的限制是数据库和表的名字必须在整个一个给定的语句中大小写是一样的,因为它用my_table和MY_TABLE都指向同一个表子,下列查询将不工作:
SELECT * FROM my_table WHERE MY_TABLE.col=1;
“ \ ”目录字符
在Win95上的路径名组成由“\”字符分隔,它在MySQL中也是转义字符。如果你正在使用LOAD
DATA INFILE或SELECT … INTO
OUTFILE,你必须用两个“\”字符或使用Unix风格的文件名“/”字符: LOAD DATA
INFILE “C:\\tmp\\skr.txt” INTO TABLE skr; SELECT * FROM skr INTO
OUTFILE ‘C:/tmp/skr.txt’;
Can’t open named pipe错误 如果你使用NT上的MySQL-Win32共享软件版本,用最新的mysql客户,你将得到下列错误:
error 2017: can’t open named pipe to host: . pipe…
这是因为NT上MySQL正式版本缺省地使用命名管道。你能通过为新MySQL客户使用–host=localhost选项或创建一个包含下列信息的文件“C:\my.cnf”来避免这个错误:
[client] host = localhost
Access denied for user错误
在访问在同一机器上的一个MySQL服务器时,如果你得到Access denied for user:
‘[email protected]’
to database
‘mysql’的错误,这意味着MySQL不能正确解释你的主机名。为了修正它,你应该创建一个文件“\windows\hosts”,有下列信息:
127.0.0.1 localhost
对于可能想要帮助我们做好Win32版本的任何人,这里有的一些开放的问题:制作一个单用户MYSQL.DLL服务器。这应该包括一个标准MySQL服务器的一切,除了线程创建外。这将使MySQL在不需要一个真正的客户机/服务器和不需要从其他主机存取服务器的应用程序时更容易使用。为MySQL安装增加一些漂亮的“start”和“shutdown”图标。为MySQL启动选项创建造一个工具管理注册表条目。注册表条目的度缺已经被编码进mysqld.cc,但是它应该重新编码而更加面向“参数”,该工具应该也能更新“
\my.cnf”文件,如果用户比较喜欢使用它而不是注册表。当用–install登记mysqld作为一种服务在
NT 上
)时,如果你也可以在命令行上增加缺省选项,它将更好,目前解决办法是更新“C:\my.cnf”文件。当你挂起一个运行Win95的膝上计算机时,当膝上计算机被恢复时,mysqld守护程序不接受新连接。我们不知道这是否
Win95、TCP/IP或MySQL的问题。能从任务管理器杀死mysqld将绝对是好事,目前,你必须使用mysqladmin
shutdown。移植用在
mysql命令行工具的readline到Win32。标准的GUI版本MySQL客户(mysql、mysqlshow、mysqladmin和mysqldump)
将更好。如果在“net.c”中的套接字“读”和“写”函数是可中断的,那将更好。这将有可能在Win32上用mysqladmin
kill杀死打开的线程。制作有关哪些Windows程序能工作在MySQL-Win32/MyODBC和必须做什么在能让他们工作的文档。
mysqld总是在“C”处启动而不在缺省地点,我们想让mysqld使用当前地点用于排序顺序。移植sqlclient到Win32(几乎完成)并加入更多的特征!把更多的选项加到Mysql
Manager。在服务器和客户之间改变通讯协议,使用Windows内部通讯而不是套接字和TCP/IP。用.DLL实现UDF函数。增加宏以使用由Win32提供的更快的对线程安全的增加/减少方法。其他Win32特定问题在MySQL-Win32分发的“README”文件中描述。

图片 2Unix大神们的桌面长啥样
by Pexels

摘自Easy的《程序员跳槽全攻略》

macOS延续自BSD Unix,
Linux则是从内核开始重新编写但延续Unix使用方式的Unix。所以mac还有linux程序员,一般都算是*nix程序员,尽管其中还有不少的区别。
Windows从版本10开始做出的最大改变,可能就是内置的linux子系统,原本的安装方式很简单,网上很多介绍,一般就是三步:1.设置中打开开发人员模式;2.windows组件中安装linux子系统;3.在DOS窗口中执行bash,随后经历一场漫长而令人期待的安装。
后来这个办法不灵了,因为虽然win10几乎马不停蹄的更新了不少版本,其中的linux仍然保持着beta状态,下载的源网站也在国外,而因为我们都知道的原因,这个网站在国内访问越来越困难。
有聪明人想了办法,比如首先从第三方下载tar安装包,利用fiddle之类的软件截获win10安装linux子系统时候的下载路径,随后替换为本地的tar文件,虽然麻烦点,但还是能很快的完成安装。后来,又是后来,这个办法也失效了,win10的内置下载路径已经不能再被修改替换。
这时候说“上帝关上一扇门,总是又为你打开一扇窗”是不是有点矫情?

用户和组

Win32现在已经证明了自己很稳定。这个版本得MySQL有与对应的Unix版本同样的特征,除了下面:
Win95和线程 Win95 为每个线程的创建损失大…

本文由EarlGrey@编程派编译自unix.se。文章的作者是程序员,还当过记者,2002年时要到了很多知名程序员的电脑桌面截图,让我们看到了13年前的电脑桌面长啥样。不知道有没有勾起资深程序员们的回忆?当时,你们的电脑桌面又是怎么样的呢?

提升架构能力

但事实就是如此,Win10
RS3之后的Linux子系统,终于转正成正式版了,从而登上了Win10的应用程序商店,并且还有了Ubuntu/Suse
Linux等多个版本供选择,据说还会有更多正在赶来的途中,嗯,这扇窗开的不算小吧?
无论你的Win10使用了什么版本,打开应用商店,都已经能搜索到这些Linux应用,但是,似乎只有RS3之后的版本才可以下载,其它版本的win10只能看看介绍,然后就只好洗洗睡了。
事实上,正确的打开方式是这样:

现实生活中的例子

关于用户和组,对比现实生活中的例子。Linux系统好比一个大型的图书馆,里面存放着各种书籍,文件和一些演示设备(像天体运行动态演示设备等等),还有电脑,普通人想进入图书馆进行学习必须注册(useradd)为为会员(User),成为会员后图书馆管理员(root)会给会员发送门禁卡(password),会员进入图书馆刷门禁卡即可。会员在图书馆内可以阅读书籍(read),也可以触发演示设备,操作电脑(run)来进行学习。这些书籍,文件和设备的拥有者(owner)都是管理员,会员的权限由管理员指定。另外,会员是可以在书籍中记(write)笔记的,但要获得管理员的许可。

2002年,我向一批程序员和Unix大神要了他们电脑桌面的截图。下面是我收到的回复。

DRY

  1. 首先登陆微软官网,使用自己的微软账号登陆进去,把自己的账号转换成开发者账号,如果找不到登陆链接,可以直接从下面第2步链接账号的地方进去。
  2. 菜单路径是:开始菜单->齿轮图标进入设置->更新和安全->Windows预览体验计划,先选择链接Microsoft账户,使用你的微软账号捆绑到Win10系统,然后在上面的获取Insider
    Preview中,打开开发者预览功能。
  3. 同一个设置界面中,选择最上面的Windows更新,这时候你会找到很多预览版的升级,踏踏实实升级到这个最新的预览版。你问是否稳定?你个*nix码农,关心Win10稳定不稳定干啥?

用户

这个图书馆比较特殊,会员可以把属于你自己的书籍,甚至电脑放(create)到图书馆中,会员自己的书籍可以自己决定是否有读(read)和写(write)的权限,可以决定自己的电脑自己是否是可执行(run)的。既然会员把图书和设备放到了图书馆中,管理员有权对这些书籍和设备进行读写和执行。

好了,总结一下,现在图书馆中的各种书籍和设备的拥有者分成两类,一类是管理员,一类是会员。会员是管理员发放了门禁卡之后才能进入。到这里你发现没发现一个问题,一个会员的书籍只能够给两个人看,一个人是他自己,另一个是管理员。这样的话就浪费了图书馆的资源,如今都讲究共享,共享单车,共享充电宝,共享经济(这个概念已经很老旧了,Linux/Unix中已经使用了这个概念)。。

图片 3Dennis
Ritchie的电脑桌面,截图于2002年7月

DRY是Don’t Repeat Yourself的缩写,翻译过来就是「不做重复事」。

升级会耗费比较长的时间,一旦升级完成,打开应用商店,选一个你喜欢的linux版本,下载就好了。

如何才能解决资源共享的问题呢?共享也不是随意共享的,有些会员的资源可能只愿意给自己认识的人看,有的愿意认识的人在自己的书籍中记笔记;有的人愿意自己的资源只给对其感兴趣的人读和写;而有的愿意给所有人读和写。为了达到这种精确控制。管理员创建了一个规则:设定组(group)。管理员可以创建(groupadd)一个组,普通会员在获得管理员许可后(sudo)也能创建组。

例如:会员A,B,C,D达成共识,咱们创建一个组吧,以后四个人的资源就可以自由共享了,于是他们向管理员申请创建组adGroup,管理员亲自创建(groupadd)或者授权给(sudo
groupadd)其中某一个人创建。创建完成之后把四个人加入(usermod)这个组即可。以后其他人可以申请加入这个组。一个人可以同时加入多个组。这里会有个问题,既然一个人可以属于多个组,那么一个用户往图书管理放一本书,为这本书设置组权限的时候,设置的权限是哪个组的呢,好吧,我们首先设置一个默认组,会员进入图书馆的时候,拿进去的书籍开始都是属于默认组(有效组)的,其余的组叫做附属组,可以把附属组修改为当前有效组(newgrp)。书籍放到图书馆之后,所属组就会记录下来,这个组可以由书籍所有者修改(chgrp),修改之后,这本书的组权限就变成新组的权限了。

接着上面说,四个会员可以分别指定属于自己资源的组权限,会员A的书籍bookA属于组adGroup,他可以指定属于这个组的用户可以读写。会员B有洁癖,他的书籍bookB属于组adGroup,他只给组权限设为只读。会员C突然发现自己的书籍中藏有宝藏密码,立即关闭了组读写权限,和管理员一起研究宝藏密码去了。。。

附件是我收到你的邮件后,对电脑桌面的截图。我使用的电脑系统是WNT
4,这点你可能已经从左侧的桌面猜到了。桌面上大部分空间,被正在运行drawterm程序的超大窗口占据了。这个程序类似X服务器,后者与一台Plan
9
CPU服务器相连(服务器连接是通过ISDN,即综合业务数字网,实现的。服务器架设在贝尔实验室,而我则是在家里)。最大的窗口是一个Plan
9程序,名字叫acme,其中包含了一个展示收件信息的邮件工具。drawterm显示界面中更小的那些子窗口,则是邮件通知程序,以及一个壳程序窗口,窗口中最近的输出来自我们的字典工具。

这正是一个逼近软件本质的原则,它指导我们把经常使用的功能抽象成库,把重复出现的代码重构为可重用的框架模块。如果你用DRY来要求自己,很快你就会发现自己抽象和架构能力的飙升。

————————————————————————————————————————————————

其它

我们看一下接下来的场景,会员E自己出了一本书,为了宣传自己的新作,他想尽可能快的让尽可能多的人看到这本书,并且得到反馈,他把这本书放到了图书管,他加入了所有组,把这本书的所属组设置为人数最多的一个组,并把组权限设置为读写。看到没有,尽管他加入了所有组,他的一本书籍只能为一个组设定组权限。他有两个选择:

  • 让其它所有人加入最大的组,但是现在作者知名度不高,是你在做宣传,谁会鸟你啊。
  • 统计一下组的数量N,拿N本书到图书馆,每本书指定一个组,开放所有组的读写权限。但是有个问题,以后有新创建的组改怎么办?

会员E的这种情况,我们给出一个解决方案,再加入一种特殊的组,况且这么叫吧,就是其它(others),它能够设定不在资源所属组内会员的权限。也就是其他人的权限。上面的问题迎刃而解,E不用再加入每个组了,也不用特定把书所属到人数最多的组,只需要把组权限和其他权限设为读写即可。

图片 4Brian
Kernighan的电脑桌面,截图于2002年7月

半自动化

很多unix程序员的工作方式都是ssh登陆,然后vi修改程序,接着make编译。
到了win10你会发现,同样的ssh不管用了……
实际的情况是这样,win10默认的ssh留给了自己的CMD应用,也就是Windows命令行,你只能使用Win10的管理员登陆,比如一般默认的Administrator,也就是说,你应当用类似:

文件的权限

继续图书馆的例子,书籍是一个文件,我们已经知道的有关这个文件的权限的属性包括:

  • 文件所属者(Owner)
  • 文件所属组(Group)
  • 文件所有者的权限(u rwx)
  • 文件所属组的权限(g rwx)
  • 其它人的权限(o rwx)

还有其它的会在这一节里面详细说。看官们继续吧。。

我们知道,书籍是放在书架上的,书架是放在某个具体的屋子内的,屋子是坐落在图书馆内的。会员找到一本书,先得进入图书馆(login),然后进入某个屋子(cd),找到某本书籍所在的书架(继续cd),最后看到书籍,然后打开进行读和写。

为了方便管理,除了书籍和设备本身的读写和执行权限之外,图书馆可能会指定一下规章制度:

  • 这个图书馆历史比较悠久,有很多珍贵的资料单独存放在一个屋子内,管理者只想让少数的人进入屋子内浏览资料,其它人不用说看这些书了,屋子都不会让你进去。但是有可能会让你知道屋子里面有什么。
  • 为了保证图书馆内图书的分类正确,管理员不可能随随便便就让一个人把书籍放到一个书架上。当然也不会让一个人随随便便就把书拿出图书馆。

为了达到这种效果,聪明的规则制定者想出了一个办法,给屋子和书架也分配上面的5种权限。我们暂且把屋子和书架称作容器(folder)。

我们把会员和管理员可以执行的操作分成一下几种:

  • 向某个屋子新加一个书架(mkdir)(加屋子不太可能。。),挪走一个书架(rm)。
  • 拿一本书进来(touch cp ….),拿一本书出去(rm..)。
  • 浏览(ls)屋子内(书架上)的书籍名称。
  • 读写(vim cat..)一本书籍,操作一个设备。

我们看一下上面的四种操作需要什么权限。

  • 首先看一下普世法则,任何需要走到容器里面才能进行的操作,对整条路径上的容器都需要执行权限(只有一个例外);改变容器格局的操作都需要写权限。
  • 加减书架需要先走进图书馆(根),再走到屋子里面才能进行,因此对图书馆和屋子都需要执行权限。加书架屋子内东西多了,减书架屋子内东西少了,格局变了,因此都需要写权限。
  • 拿书到书架上也一样,手到了书架里才能操作,因此对书架的整条路径需要执行权限。当然也需要写权限。需要注意的是拿走一本书籍对书籍本书不需要读或者写的权限。
  • 浏览容器内的书籍和设备名字,这是第一条提到的例外,因为只是匆匆一撇,因此只需要路径各个容器的读权限就可以了。这里看到的只有书籍名字,其他信息一律获取不到。
  • 读书籍除了对书籍本身要有读权限,对书籍所在路径的所有容器都要有执行权限;写书籍出了对书籍本身要有写权限,对书籍所在路径的所有容器都要有执行权限;运行设备除了对设备本身要有执行权限,对设备所在路径的所有容器都要有执行权限。

我的桌面挺没趣的,因为桌面上只有我现在正在使用的Unix系统的xterm界面。我的这台机器很可能运行的是某种类似x-window的服务器,虽然很多年来我只用过一台X终端。

我不知道怎么截图,因为我通常使用的是文本模式。我安装了X和GNOME,但只是偶尔用用。

但是我们活在现实世界,所以我们不可能把所有的事情都给自动化了,有人类尤其是女人参与的活动,往往会毫无规律可循。

ssh Administrator@192.168.1.100

将第五条规则详细说明

第五条规则里面的对书籍本身要有读写权限,那么什么情况下才会对书籍有读写权限呢,我们详细展开说明。
继续图书馆中的例子,我们注册成为图书馆的会员时,管理员是会给我们分配一个ID号的,这个ID号用来标识我们的身份。每次进入图书馆进行图书的读(read)和写(write),以及操作(run)设备,检查权限的时候是通过这个ID号来检查的:会员A进入图书馆,会员A的ID——r_id_a(real
id)就会被记录下来,会员A打开书籍bookA进行读或者写的时候,会使用id_a来进行检查:

  • 如果id_a=0,代表是管理员。管理员就是上帝,可以为所欲为。读写都可。
  • 如果打开书籍的owner_id=id_a,说明这本书的拥有者就是会员A,接下来就看会员A给自己的这本书设置了什么权限,如果设置了自己可以读或者写,那就可以读或者写。反之,如果你认为这本书籍有害,设成了禁止自己读和写,你就不能读写。
  • 如果id_a和bookA的owner_id在同一个组中,那么,就要看这本书的owner如何设置组权限了,如果设置的组内成员可以读写,则可以读写。否则,不能读写。
  • 如果id_a既不等于owner_id,也不和owner_id在同一个组中,就需要看其它(others)设置的权限了,如果设置成可以读写,则可以读写。否则,不能读写。

上面的四个步骤,如果走到其中一个步骤的判断是允许或者拒绝,就不会再继续往下判断了。例如,如果bookA的owner_id=id_a,并且你设置的权限是禁止自己读写。即使你所在的组设置的权限为允许读写,结果也会是拒绝。

需要指出的是,上面的五条规则都是错误的,错误的地方在id_a上,我只是为了方便说明,实际上一个会员在图书馆里身份是可以通过某种方式进行变化的,也就是说会员在读写时,用来判断权限的id有可能不是id_a。接下来说明。

(译者注:据度娘,Richard
Stallman是自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free
Software Foundation)的创立者、著名黑客。)

但我们不能放弃,不要二元思维,除了手动和自动,我们还可以半自动化——让机器做完所有繁杂的常规操作,人类来处理需要智慧的那一点点工作就好,这也能极大的提升工作效率。

这样来登陆到Win10,随后可以用bash启动linux。
但是如果linux已经在电脑桌面其他的CMD窗口启动了怎么办?这时候bash命令会报错,说已经有其它实例运行,怎么解决呢?可以在桌面进入linux子系统,编辑一下/etc/ssh/sshd_config文件,把其中的22号端口,修改为比如23,修改完是这样子的:

进程中的权限

进程的概念是动态的。也就是说权限这个东西是随系统运行会发生变化的。继续图书馆的例子,上一节最后我们说到了会员的身份问题。这里详细阐述一下,会员进入图书馆有一个ID(实际ID),这个ID确切标识了会员的身份,但是在会员进行活动时,操作某个设备(run)时,他这时的身份(有效ID)就有可能发生变化了。

纠正上一节中的错误:其实进行比较的不是id_a,而是身份变化后的ID——e_id_a(effective
id)。

图书馆引入了一批机器人,这些机器人可以代替人进行图书的读和写。这样会员就可以直接通过电脑操控机器人。每个会员都可以拥有一个自己的机器人。这时候就可以把机器人看成会员的替身。当机器人进行读写书籍时,机器人的身份ID初始情况下就是会员本身的ID。会员的身份是如何通过机器人发生变化的呢?

图片 5Bram
Moolenaar的电脑桌面,截图于2002年9月

正交性

Port 23

会员可以真正操控别人的替身

一个会员是可以使用别人的机器人(run一个owner不是自己的程序)的,但是在通常情况下,e_id就是r_id。用真实身份去操控别人的机器人。权限结果有上一节的条款而定。但是只可能通过组权限或者其它权限来获得访问权。因此有很大的局限性。如何把会员的身份伪装成操控机器人的owner呢?
上一节我们提到了关于文件的5个属性。这里还要说两个:

  • 设置用户ID
  • 设置组ID

这两个ID是做什么用的?如果机器人(机器人是可以运行的文件)设置了设置用户ID,别的用户在操控这个机器人时,r_id会变成机器人的ownner_id。这就可以用机器人拥有者的身份来操控机器人呢了。有人有疑问,如果有其它会员搞破坏会怎么办?其实管理权真正在owner手里,替身还是替身,并不是owner本人。替身的功能是可以限制的,owner在设置替身的功能时,如果设置了设置用户ID,可以自定义机器人可以读写哪些书籍。
设置组ID是相同的道理。

需要注意的是,如果会员结束操控别人的机器人?这时的r_id会如何变化呢?答案是会变回原来的r_id。但是原来的r_id和g_r_id保存在什么地方呢?这里有另外两个ID来临时保存这两个ID:

  • 保存的设置用户ID
  • 保存的设置组ID

呃,我的桌面挺没意思的。我通常打开4个xterms程序,以及一些Netscape窗口。桌面的状态栏会自动隐藏,所以你只能在底部看到一条细细的灰线。

正交性的意思是,功能和功能之间应该尽可能不互相干扰。只有这样,我们才能有效的控制每个部分的行为。所以功能之间的依赖尽可能少,如果有,规则一定要明确,不要试图去做一些自作聪明的事情。

如果你的win10开了防火墙,记着修改防火墙设置,允许传入的连接申请(allow
incoming traffic)到23号端口,以便允许你远程登陆。
linux子系统再次启动之后,ssh -p 23 username@192.168.1.100就可以登陆到linux之中了。
如果你根本不使用windows自己的命令行,那在win10 services中关闭SSH Server
Broker、SSH Server
Proxy两项,就可以让出来22号端口,从而不修改linux子系统的ssh端口,这样也是可以的。不过我不建议这样,比如你想远程关机,就只能在CMD中执行,Linux子系统根本没有这个权限。
这时候还存在一个问题,如果win10重新启动,而linux子系统还没有启动,ssh是无法登陆到linux的,解决这个问题,可是个麻烦事了,大概经过这些步骤:

运行过程中变换身份

上面的身份变换是机器人开始运行时就发生变化的,那么在运行过程中可以发生变化么?也是可以的。

  • 微服私访。管理员就是上帝。管理员在操控别人的机器人时,因为r_id为0,可以读写任何书籍。上帝不能太招摇,为了防止自己权限太大犯错误,上帝可以伪装自己的身份。上帝可以修改r_id,e_id和设置用户ID为任意值。
  • 卑微的平民。普通会员的r_id只能修改为r_id或者保存的设置用户ID。其它均不可。

图片 6Rasmus
Lerdorf的电脑桌面,截图于2002年9月

比如JobDeer之前的推送通知是在候选人发布时自动发的。一直用着不错,但有一天有一个候选人需要重新发布,但我们不想推送通知,这时候我们就傻眼了。这是因为发布功能和推送功能不是正交的。

  • 在linux子系统中执行:sudo dpkg-reconfigure openssh-server生成ssh服务器端证书。
  • sudo vi /etc/ssh/sshd_config,再次编辑sshd的配置文件,把UsePrivilegeSeparation yes这一行最后的yes修改成no。
  • 继续修改这个文件,把PasswordAuthentication no修改成PasswordAuthentication yes
  • 保存/etc/ssh/sshd_config退出vi。(嗯,写给小白,保存退出vi的方法是:ESC键->”:”键->x然后回车)
  • 运行sudo visudo编辑sudoers文件,增加一行:$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D,注意这里把$USER替换成你的linux子系统用户名。保存退出。如果visudo有任何报错一定仔细检查修改直到正常,否则你的linux将无法再登陆!!!
  • 在Win10一侧建立一个vbs脚本文件,比如叫autostartssh.vbs,内容为:

Linux (2.4.20-pre5), Gnome2, vim, Pine.

后来我们把发布和推送功能分开,在发布成功后,询问是否需要跳转到推送页面。这样发布人才不会影响推送;推送信息也不会依赖发布了。Keep
it simple stupid
就是这个意思。

图片 7Matthias
Ettrich的电脑桌面,截图于2002年9月

API其实也是强化正交性的利器,它通过接口规范确定了互不影响的功能,又通过接口协议隐藏了后端实现,去除了对实现技术的依赖性。SAE在这点上就受益匪浅。

set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0

目前,我运行的SuSE 8.0
系统,KDE桌面是从CVS编译的。收到你邮件的时候,我的电脑环境基本上就是一个命令终端,开启了一些虚拟终端会话(可以通过快捷键切换),还有就是打开了XEmacs(注意到了等比例字体吗,没了它们我都没法工作),其中把大部分Qt程序加载进了缓冲区。桌面的背景中,你可以看到我们的编译服务器集群监控界面,截屏的时候连接了25台机器。在其他台式机上,我还打开了几个Konqueror浏览器窗口,一个kmail邮件程序,系统托盘程序正在运行kscd播放程序,现在播放的是Christian
Zacharias演奏的莫扎特15号钢琴奏鸣曲。

  • 现在可以先测试一下,双击autostartssh.vbs文件,应当能顺利的打开linux子系统并启动ssh服务器。
  • 如果测试没有问题,在开始菜单->Windows管理程序文件夹中启动win10的“任务计划程序”,增加一个开机自动执行任务,操作是启动程序,程序内容就是刚刚编写的这个autostartssh.vbs脚本。在这里碰到一个我相信是bug,本来触发器应当设置为“电脑启动时”自动执行,但死活无效,最后设置成了”当任何用户登录时”反而没有任何人登陆就执行了,实际是开机自动执行的效果。

图片 8Warren
Toomey的电脑桌面,截图于2002年8月

不管怎么样,我们想开机自动运行Linux ssh的目的,终于达到了。

啊,我的电脑桌面没什么好看的。我使用fvwm
1.24作为窗口管理器,而且尽量在每个虚拟桌面中不打开超过2个窗口。我的操作系统式FreeBSD
4稳定版。我第一次接触Unix系统,是在我有了一台运行OSx的Pyramid
90x机器的账号之后。这台机器�提供两种环境设置:AT&T环境与BSD风格的环境,根据环境变量进行选择。起初,给我使用的是AT&T环境,但我的朋友说服了我改用BSD。此后,我就成了一名BSD铁杆粉丝。

继OSx之后,我还使用了SunOS 3.5以及后来的不同版本。直到386BSD
0.1发布之后,我开始在家里使用BSD系统。之后,当386BSD转变成FreeBSD之后,我继续使用FreeBSD。就桌面环境来说,我是个使用命令行的家伙,以后也一直会。我最喜欢的编辑器是vi,我最喜欢的shell程序是tcsh(但是确实得赞rc的优雅)。所以,我真的不需要使用像Gnome或KDE这种图形界面。:-)

————————————————————————————————————————————————

图片 9Jordan
Hubbard的电脑桌面,截图于2002年7月图片 10Jon
Hall的台式电脑桌面,截图于2002年7月图片 11Jon
Hall的笔记本电脑桌面,截图于2002年7月

Win10下面Linux子系统的日常维护跟标准的Linux系统一样,比如Ubuntu版本也是使用apt进行包管理,日常要经常进行一些apt update
/
apt upgrade这样的操作。感觉上,90%原来服务器端的开发工作,都可以在这里面完成了。有些用户喜欢GUI界面,可以尝试安装Xming之类的X11
Windows
Server,官方网址是:https://xming.en.softonic.com,不过我觉得必要不是很大,开发工具、办公工具以及其它一些常用软件,windows下已经有很多了,真的没有必要自讨无趣。

哦太好了,我一大清早刚刚登陆系统,就收到了你的邮件,所以我现在的桌面上还没啥东西。我一般会打开之前安装的股票系统,每次我都会添加exmh作为邮件管理器。我在台式机上运行的还是SuSE
v7.3,当然已经从更新服务中安装了所有的补丁。我只是还没找到时间把系统更新到V8.0。在这个系统上,我偏向于使用KDE,原因无他,只是因为我对KDE很了解。我的IBM
Thinkpad笔记本电脑商,运行的是SuSE V8.0,但我一般使用GNOME界面。

在这两个系统上,我总是会安装很多程序,直到硬盘空间不足。当然现在你看不出来,因为我没有运行它们。我还会安装Open
Office和Applixware,是为了能兼容别人发送给我的文件。但因为这个项目的公开性,我也在逐步切换到Open
Office。

我一般不用工作站听音乐,因为这会让我分心,而且会浪费CPU资源。我的工作站是一台双核CPU、主频500MHZ的系统,但我希望程序能够快速运行,不要因为解压音乐这样的事情拖慢速度。

我会发给你台式机和笔记本电脑的桌面截图,但我想你的读者会对我这平淡无奇的桌面感到失望的。

已知有几项限制,开发过程中可能会碰到:

图片 12Luke
Mewburn的电脑桌面,截图于2002年8月

  • 本质上Linux子系统还是接近虚机的运行方式,因此,比较偏向底层的网络编程,比如socks
    udp操作,测试的时候你要考虑到实际上linux是通过win10的网络系统转发的,难以描述确切的症状,总之会碰到很多无法达到预期的情况,这类程序调试,可能你还是需要一台linux或者mac真机。
  • tcpdump之类的工具,在linux子系统上是无法正常执行的,因此如果要抓包,估计你只能借助windows下的软件了,不过无论如何可能达不到tcpdump这样方便。sad…
  • 上面提到过,类似关机、重启之类这样的操作,在linux子系统中无法实现,这样的功能,还是需要真机调试。

我的笔记本电脑运行的是NetBSD
1.6_BETA3。我还没有把它升级到1.6_BETA5,尽管我其他的机器都在运行后者(因为我是即将发布的NetBSD1.6的版本工程师之一。)

(你有没有好奇今天的题头图我没有说图文无关?事实上这幅图片是Win10预置的桌面壁纸之一,不算无关吧?)

图片 13Luke
Mewburn的电脑桌面,截图于2002年7月

截图发给你了。事实上,那只是我工作界面的一个浓缩,因为我一般有4个工作界面。我最喜欢的应用包括:

截图里没有的,但是值得指出:

  • (Email Client)

当然,截图时我还在玩《重返德军总部》

图片 14John
Baldwin的电脑桌面,截图于2002年7月

我常用的台式机上现在运行的是KDE 3.0.4,操作系统是FreeBSD 5.0-CURRENT。

图片 15John
Baldwin的电脑桌面,截图于2002年7月

你可以使用这个链接中的截图,现在的设置和截图不完全一样,但是我目前的KDE主题一团糟,所以你还是用那张看着不错吧;)

他给我发了这张截图,可以在netbsd.org网站找到。

图片 16Jun-ichiro
Hagino 的电脑桌面,截图于2000年

我的桌面很没意思。我经常使用5台电脑。我非常遗憾其中4台都是Windows机器,因为我这只买的到这种。我通过这4台电脑,使用SSH连接到我的首选机器,当然也用这些机器来查看Powerpoint、Excel和Word文档。那台首选机器,则安装的是FreeBSD系统,运行原生的Xwindows。所以,那台机器看上去就是5个窗口层叠在屏幕上,只留下很小的一片空白区域。

原文作者名叫Anders
Jensen-Urstad,从事网络开发,并对数据保护有所思考。过去,他还当过系统管理员和记者。目前,他和别人一起创建了Dataskydd.net,并且负责网站的技术维护。

  • 原文链接:
  • 译文链接:

译者对早期计算机系统了解并不足,译文中如果有理解错误的地方,还请大家指正,谢谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图