Hallo Wikiteam,
ich würde Baustelle/Verlassen/sed überarbeiten. Bitte in die Baustelle verschieben.
Gruß, barcc
Anmeldungsdatum: Beiträge: 696 |
Hallo Wikiteam, ich würde Baustelle/Verlassen/sed überarbeiten. Bitte in die Baustelle verschieben. Gruß, barcc |
||||
![]() Anmeldungsdatum: Beiträge: 4763 |
👍 Viel Spaß dabei.
done Gruß, cornix |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 696 |
Gibt es so etwas wie ein "geschütztes Leerzeichen", so dass in der Tabelle innerhalb von Ich habe den Artikel möglichst knapp gehalten und stattdessen ein paar Links angegeben. Hoffentlich trifft der Satz aus dem ursprünglichen Artikel
nicht auf meine Version zu. Ansonsten halte ich den Artikel für fertig. Gruß, barcc |
||||
Ehemaliger
![]() Anmeldungsdatum: Beiträge: 28316 |
Hallo, habe ein paar Korrekturen / Ergänzungen gemacht. Gruß, noisefloor |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 696 |
Den Satz verstehe ich nicht. |
||||
![]() Anmeldungsdatum: Beiträge: 4763 |
barcc schrieb:
quasi verstehe ich aber, was gemeint ist 😀 sed findet man als Urgestein unter den Kommandozeilen-Werkzeugen auf (fast?) allen Unix-artigen Betriebssystemen, in der Regel sogar vorinstalliert. Als Standard-Werkzeug der Spezifikation der Linux Standard Base 🇬🇧 steht es in jeder Ubuntu-Variante zur Verfügung. Die "Kette der Abhängigkeiten" sieht dabei wie folgt aus:
Gruß, cornix |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 696 |
Ok, mit den zwei zusätzlichen Buchstaben von loh.tar versteh ichs auch ☺ . Von mir aus kann man den Artikel verschieben. Gruß, barcc |
||||
Ehemaliger
![]() Anmeldungsdatum: Beiträge: 28316 |
|||||
![]() Anmeldungsdatum: Beiträge: 1004 |
Die Option
nicht wie erwartet, die Datei
werden schreibgeschützte Dateien ausgespart. |
||||
Supporter, Wikiteam
![]() Anmeldungsdatum: Beiträge: 7816 |
Ich wollte es nicht glauben und habe es deshalb nachgestellt. Leider stimmt es und es stimmt sogar, wenn man alle Schreibrechte mit chmod a-w y.dat entfernt. In schockierender Weise erfolgt nicht einmal eine Sicherheitsabfrage. Der Warnhinweis ist also gerechtfertigt und sollte m.M. sogar als Warnbox formatiert werden. |
||||
Supporter, Wikiteam
![]() Anmeldungsdatum: Beiträge: 7816 |
Es ist sogar noch schlimmer! Es funktioniert sogar, wenn einem die schreibgeschützte Datei nicht einmal gehört! Und nach der Änderung gehört einem die vorher fremde Datei. Das ist jetzt aber kein exotisches Feature mehr, sondern doch wohl ein Bug oder ein Sicherheitsproblem? |
||||
Ehemaliger
![]() Anmeldungsdatum: Beiträge: 28316 |
Hallo,
Kann ich bestätigen. Es funktioniert allerdings _nicht_, wenn man a) nicht der Eigentümer der Datei ist unb b) man keine Leserechte hat (also z.B. wenn die Datei die Berechtigung Scheinbar "reicht" es Gruß, noisefloor |
||||
Anmeldungsdatum: Beiträge: 10978 |
Wenn ich das aus dem strace richtig herauslese, spielen die Dateirechte keine Rolle, weil die alte Datei mit einer neu angelegten temporären Datei per rename überschrieben wird - dafür zählen nur die Verzeichnisrechte, nicht die Dateirechte. $ echo "foo bar" | sudo tee test.txt $ echo "spam" > .tmpfile foo bar $ ls -la insgesamt 8 drwxr-xr-x 2 demo demo 80 17. Jun 14:52 . drwxrwxrwt 12 root root 240 17. Jun 14:45 .. -rw-r--r-- 1 root root 8 17. Jun 14:52 test.txt -rw-r--r-- 1 alexander alexander 5 17. Jun 14:52 .tmpfile $ strace sed -i 's/foo/spam/' test.txt execve("/usr/bin/sed", ["sed", "-i", "s/foo/spam/", "test.txt"], 0xbe930c0c /* 22 vars */) = 0 brk(NULL) = 0xce8000 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f60000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=87031, ...}) = 0 mmap2(NULL, 87031, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6f12000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/libacl.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\230\23\0\0004\0\0\0"..., 512) = 512 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=26008, ...}) = 0 mmap2(NULL, 155672, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6eeb000 mmap2(0xb6ef0000, 90136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6ef0000 munmap(0xb6eeb000, 20480) = 0 munmap(0xb6f07000, 40984) = 0 mprotect(0xb6ef6000, 61440, PROT_NONE) = 0 mmap2(0xb6f05000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0xb6f05000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0,\334\1\0004\0\0\0"..., 512) = 512 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=1566196, ...}) = 0 mmap2(NULL, 1724520, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d4a000 mmap2(0xb6d50000, 1658984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6d50000 munmap(0xb6d4a000, 24576) = 0 munmap(0xb6ee6000, 36968) = 0 mprotect(0xb6ec9000, 65536, PROT_NONE) = 0 mmap2(0xb6ed9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x179000) = 0xb6ed9000 mmap2(0xb6edc000, 36968, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6edc000 close(3) = 0 set_tls(0xb6f61520) = 0 set_tid_address(0xb6f61008) = 1346 set_robust_list(0xb6f61010, 12) = 0 rseq(0xb6f61500, 0x20, 0, 0xe7f5def3) = 0 mprotect(0xb6ed9000, 8192, PROT_READ) = 0 mprotect(0xb6f05000, 4096, PROT_READ) = 0 mprotect(0x505000, 4096, PROT_READ) = 0 mprotect(0xb6f62000, 8192, PROT_READ) = 0 ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 munmap(0xb6f12000, 87031) = 0 getrandom("\x4c\x78\x15\x2f", 4, GRND_NONBLOCK) = 4 brk(NULL) = 0xce8000 brk(0xd09000) = 0xd09000 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=3735920, ...}) = 0 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6b50000 mmap2(NULL, 2596864, PROT_READ, MAP_PRIVATE, 3, 0x6f000) = 0xb68d6000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=3808, ...}) = 0 read(3, "# GNU libc iconv configuration.\n"..., 4096) = 3808 read(3, "", 4096) = 0 close(3) = 0 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0 getdents64(3, 0xceac98 /* 3 entries */, 32768) = 96 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.d/gconv-modules-extra.conf", O_RDONLY|O_CLOEXEC) = 4 statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=53974, ...}) = 0 read(4, "# GNU libc iconv configuration.\n"..., 4096) = 4096 read(4, "B1002//\tJUS_I.B1.002//\nmodule\tJU"..., 4096) = 4096 read(4, "59-5//\nalias\tISO_8859-5//\t\tISO-8"..., 4096) = 4096 read(4, "59-16//\t\tINTERNAL\t\tISO8859-16\t1\n"..., 4096) = 4096 read(4, "-SE-A\t1\nmodule\tINTERNAL\t\tEBCDIC-"..., 4096) = 4096 read(4, "97\t\t1\n\n#\tfrom\t\t\tto\t\t\tmodule\t\tcos"..., 4096) = 4096 read(4, "1\n\n#\tfrom\t\t\tto\t\t\tmodule\t\tcost\nal"..., 4096) = 4096 read(4, "6//\t\tIBM1046//\nalias\tCP1046//\t\tI"..., 4096) = 4096 read(4, "\tto\t\t\tmodule\t\tcost\nalias\tRUSCII/"..., 4096) = 4096 read(4, "03//\nmodule\tCSN_369103//\t\tINTERN"..., 4096) = 4096 read(4, "\tmodule\t\tcost\nalias\tISO-IR-8-1//"..., 4096) = 4096 read(4, "IBM1156\t\t1\n\n#\tfrom\t\t\tto\t\t\tmodule"..., 4096) = 4096 read(4, "\t\tIBM1166//\nalias\tCP1166//\t\tIBM1"..., 4096) = 4096 read(4, "alias\tROMAN9//\t\tHP-ROMAN9//\nalia"..., 4096) = 726 read(4, "", 4096) = 0 close(4) = 0 getdents64(3, 0xceac98 /* 0 entries */, 32768) = 0 close(3) = 0 futex(0xb6edbd18, FUTEX_WAKE_PRIVATE, 2147483647) = 0 openat(AT_FDCWD, "test.txt", O_RDONLY|O_LARGEFILE) = 3 ioctl(3, TCGETS, 0xbe94d8c8) = -1 ENOTTY (Unpassender IOCTL (I/O-Control) für das Gerät) fstat64(3, {st_mode=S_IFREG|0644, st_size=8, ...}) = 0 umask(077) = 022 getrandom("\x29\xdf\xa8\x7f\x10\xd2\x42\xcc", 8, GRND_NONBLOCK) = 8 openat(AT_FDCWD, "./sedjig5mR", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 4 umask(022) = 077 fcntl64(4, F_GETFL) = 0x20002 (flags O_RDWR|O_LARGEFILE) statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=8, ...}) = 0 read(3, "foo bar\n", 4096) = 8 statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0600, stx_size=0, ...}) = 0 read(3, "", 4096) = 0 fchown32(4, 0, 0) = -1 EPERM (Die Operation ist nicht erlaubt) fchown32(4, -1, 0) = -1 EPERM (Die Operation ist nicht erlaubt) fgetxattr(3, "system.posix_acl_access", 0xbe94d7d0, 132) = -1 ENODATA (Keine Daten verfügbar) fstat64(3, {st_mode=S_IFREG|0644, st_size=8, ...}) = 0 fsetxattr(4, "system.posix_acl_access", "\2\0\0\0\1\0\6\0\377\377\377\377\4\0\4\0\377\377\377\377 \0\4\0\377\377\377\377", 28, 0) = 0 close(3) = 0 write(4, "spam bar\n", 9) = 9 close(4) = 0 rename("./sedjig5mR", "test.txt") = 0 close(1) = 0 exit_group(0) = ? +++ exited with 0 +++ Wenn die Datei für den Nutzer nicht lesbar ist, schlägt das Lesen der Datei fehl und damit kommt sed erst gar nicht soweit, dass es eine Temporäre Datei anlegt, die später umbenannt werden kann: $ rm test.txt $ echo "foo bar" > test.txt $ sudo chown root:root test.txt $ sudo chmod 0600 test.txt $ strace sed -i 's/foo/spam/' test.txt execve("/usr/bin/sed", ["sed", "-i", "s/foo/spam/", "test.txt"], 0xbefc5c0c /* 22 vars */) = 0 brk(NULL) = 0x2406000 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fd9000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=87031, ...}) = 0 mmap2(NULL, 87031, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6f8b000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/libacl.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\230\23\0\0004\0\0\0"..., 512) = 512 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=26008, ...}) = 0 mmap2(NULL, 155672, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f64000 mmap2(0xb6f70000, 90136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6f70000 munmap(0xb6f64000, 49152) = 0 munmap(0xb6f87000, 12312) = 0 mprotect(0xb6f76000, 61440, PROT_NONE) = 0 mmap2(0xb6f85000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0xb6f85000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0,\334\1\0004\0\0\0"..., 512) = 512 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=1566196, ...}) = 0 mmap2(NULL, 1724520, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6dca000 mmap2(0xb6dd0000, 1658984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6dd0000 munmap(0xb6dca000, 24576) = 0 munmap(0xb6f66000, 36968) = 0 mprotect(0xb6f49000, 65536, PROT_NONE) = 0 mmap2(0xb6f59000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x179000) = 0xb6f59000 mmap2(0xb6f5c000, 36968, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f5c000 close(3) = 0 set_tls(0xb6fda520) = 0 set_tid_address(0xb6fda008) = 1390 set_robust_list(0xb6fda010, 12) = 0 rseq(0xb6fda500, 0x20, 0, 0xe7f5def3) = 0 mprotect(0xb6f59000, 8192, PROT_READ) = 0 mprotect(0xb6f85000, 4096, PROT_READ) = 0 mprotect(0x4d5000, 4096, PROT_READ) = 0 mprotect(0xb6fdb000, 8192, PROT_READ) = 0 ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 munmap(0xb6f8b000, 87031) = 0 getrandom("\x93\xaa\x07\x46", 4, GRND_NONBLOCK) = 4 brk(NULL) = 0x2406000 brk(0x2427000) = 0x2427000 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=3735920, ...}) = 0 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6bd0000 mmap2(NULL, 2596864, PROT_READ, MAP_PRIVATE, 3, 0x6f000) = 0xb6956000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=3808, ...}) = 0 read(3, "# GNU libc iconv configuration.\n"..., 4096) = 3808 read(3, "", 4096) = 0 close(3) = 0 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0 getdents64(3, 0x2408c98 /* 3 entries */, 32768) = 96 openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.d/gconv-modules-extra.conf", O_RDONLY|O_CLOEXEC) = 4 statx(4, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=53974, ...}) = 0 read(4, "# GNU libc iconv configuration.\n"..., 4096) = 4096 read(4, "B1002//\tJUS_I.B1.002//\nmodule\tJU"..., 4096) = 4096 read(4, "59-5//\nalias\tISO_8859-5//\t\tISO-8"..., 4096) = 4096 read(4, "59-16//\t\tINTERNAL\t\tISO8859-16\t1\n"..., 4096) = 4096 read(4, "-SE-A\t1\nmodule\tINTERNAL\t\tEBCDIC-"..., 4096) = 4096 read(4, "97\t\t1\n\n#\tfrom\t\t\tto\t\t\tmodule\t\tcos"..., 4096) = 4096 read(4, "1\n\n#\tfrom\t\t\tto\t\t\tmodule\t\tcost\nal"..., 4096) = 4096 read(4, "6//\t\tIBM1046//\nalias\tCP1046//\t\tI"..., 4096) = 4096 read(4, "\tto\t\t\tmodule\t\tcost\nalias\tRUSCII/"..., 4096) = 4096 read(4, "03//\nmodule\tCSN_369103//\t\tINTERN"..., 4096) = 4096 read(4, "\tmodule\t\tcost\nalias\tISO-IR-8-1//"..., 4096) = 4096 read(4, "IBM1156\t\t1\n\n#\tfrom\t\t\tto\t\t\tmodule"..., 4096) = 4096 read(4, "\t\tIBM1166//\nalias\tCP1166//\t\tIBM1"..., 4096) = 4096 read(4, "alias\tROMAN9//\t\tHP-ROMAN9//\nalia"..., 4096) = 726 read(4, "", 4096) = 0 close(4) = 0 getdents64(3, 0x2408c98 /* 0 entries */, 32768) = 0 close(3) = 0 futex(0xb6f5bd18, FUTEX_WAKE_PRIVATE, 2147483647) = 0 openat(AT_FDCWD, "test.txt", O_RDONLY|O_LARGEFILE) = -1 EACCES (Keine Berechtigung) openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=2998, ...}) = 0 read(3, "# Locale name alias data base.\n#"..., 4096) = 2998 read(3, "", 4096) = 0 close(3) = 0 openat(AT_FDCWD, "/usr/share/locale/de_DE.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de_DE/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de/LC_MESSAGES/libc.mo", O_RDONLY) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=150826, ...}) = 0 mmap2(NULL, 150826, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6931000 close(3) = 0 openat(AT_FDCWD, "/usr/share/locale/de_DE.utf8/LC_MESSAGES/sed.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de_DE/LC_MESSAGES/sed.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de.utf8/LC_MESSAGES/sed.mo", O_RDONLY) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) openat(AT_FDCWD, "/usr/share/locale/de/LC_MESSAGES/sed.mo", O_RDONLY) = 3 statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=16373, ...}) = 0 mmap2(NULL, 16373, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6fd5000 close(3) = 0 write(2, "sed: test.txt kann nicht gelesen"..., 60sed: test.txt kann nicht gelesen werden: Keine Berechtigung ) = 60 close(1) = 0 exit_group(2) = ? +++ exited with 2 +++ Aus dem selben Grund kann man Dateien, für die man keine Rechte hat auch mit mv oder rm (die warnen lediglich, wenn man nicht den Schalter $ rm test.txt $ echo "foo bar" | sudo tee test.txt $ echo "spam" > .tmpfile foo bar $ ls -la insgesamt 8 drwxr-xr-x 2 demo demo 80 17. Jun 14:52 . drwxrwxrwt 12 root root 240 17. Jun 14:45 .. -rw-r--r-- 1 root root 8 17. Jun 14:52 test.txt -rw-r--r-- 1 demo demo 5 17. Jun 14:52 .tmpfile $ mv .tmpfile test.txt mv: Überschreiben von 'test.txt', über Modus 0644 (rw-r--r--) hinwegsetzen? y $ ls -la insgesamt 4 drwxr-xr-x 2 demo demo 60 17. Jun 14:52 . drwxrwxrwt 12 root root 240 17. Jun 14:45 .. -rw-r--r-- 1 demo demo 5 17. Jun 14:52 test.txt |
||||
Supporter, Wikiteam
![]() Anmeldungsdatum: Beiträge: 7816 |
Das erklärt wenigstens, wieso es so funktioniert. Und nebenbei auch, dass die Option |
||||
![]() Anmeldungsdatum: Beiträge: 1004 |